mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-22 18:25:47 +08:00
feat: refactor backend i18n (#1373)
* fix: handle the dataSourceName when DB changes * reduce duplication of code * feat: refactor translation error message * feat: use json intsead of ini file * remove useless translation * fix translate problems * remove useless addition * fix pr problems * fix pr problems * fix split problem * use gofumpt to fmt code * use crowdin to execute backend translation * fix pr problems * refactor: change translation file structure same as frontend * delete useless output * update go.mod
This commit is contained in:
parent
96566a626b
commit
1bb3d2dea9
16
.github/workflows/sync.yml
vendored
16
.github/workflows/sync.yml
vendored
@ -29,6 +29,22 @@ jobs:
|
|||||||
crowdin_branch_name: l10n_branch
|
crowdin_branch_name: l10n_branch
|
||||||
config: './web/crowdin.yml'
|
config: './web/crowdin.yml'
|
||||||
|
|
||||||
|
- name: crowdin backend action
|
||||||
|
uses: crowdin/github-action@1.4.8
|
||||||
|
with:
|
||||||
|
upload_translations: true
|
||||||
|
|
||||||
|
download_translations: true
|
||||||
|
push_translations: true
|
||||||
|
commit_message: 'refactor: New Crowdin Backend translations by Github Action'
|
||||||
|
|
||||||
|
localization_branch_name: l10n_crowdin_action
|
||||||
|
create_pull_request: true
|
||||||
|
pull_request_title: 'refactor: New Crowdin Backend translations'
|
||||||
|
|
||||||
|
crowdin_branch_name: l10n_branch
|
||||||
|
config: './crowdin.yml'
|
||||||
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
CROWDIN_PROJECT_ID: '463556'
|
CROWDIN_PROJECT_ID: '463556'
|
||||||
|
@ -102,7 +102,7 @@ type Captcha struct {
|
|||||||
// @router /signup [post]
|
// @router /signup [post]
|
||||||
func (c *ApiController) Signup() {
|
func (c *ApiController) Signup() {
|
||||||
if c.GetSessionUsername() != "" {
|
if c.GetSessionUsername() != "" {
|
||||||
c.ResponseError(c.T("SignUpErr.SignOutFirst"), c.GetSessionUsername())
|
c.ResponseError(c.T("account:Please sign out first before signing up"), c.GetSessionUsername())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ func (c *ApiController) Signup() {
|
|||||||
|
|
||||||
application := object.GetApplication(fmt.Sprintf("admin/%s", form.Application))
|
application := object.GetApplication(fmt.Sprintf("admin/%s", form.Application))
|
||||||
if !application.EnableSignUp {
|
if !application.EnableSignUp {
|
||||||
c.ResponseError(c.T("SignUpErr.DoNotAllowSignUp"))
|
c.ResponseError(c.T("account:The application does not allow to sign up new account"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ func (c *ApiController) Signup() {
|
|||||||
if application.IsSignupItemVisible("Email") && application.GetSignupItemRule("Email") != "No verification" && form.Email != "" {
|
if application.IsSignupItemVisible("Email") && application.GetSignupItemRule("Email") != "No verification" && form.Email != "" {
|
||||||
checkResult := object.CheckVerificationCode(form.Email, form.EmailCode, c.GetAcceptLanguage())
|
checkResult := object.CheckVerificationCode(form.Email, form.EmailCode, c.GetAcceptLanguage())
|
||||||
if len(checkResult) != 0 {
|
if len(checkResult) != 0 {
|
||||||
c.ResponseError(c.T("EmailErr.EmailCheckResult"), checkResult)
|
c.ResponseError(c.T("account:Email: %s"), checkResult)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -139,7 +139,7 @@ func (c *ApiController) Signup() {
|
|||||||
checkPhone = fmt.Sprintf("+%s%s", form.PhonePrefix, form.Phone)
|
checkPhone = fmt.Sprintf("+%s%s", form.PhonePrefix, form.Phone)
|
||||||
checkResult := object.CheckVerificationCode(checkPhone, form.PhoneCode, c.GetAcceptLanguage())
|
checkResult := object.CheckVerificationCode(checkPhone, form.PhoneCode, c.GetAcceptLanguage())
|
||||||
if len(checkResult) != 0 {
|
if len(checkResult) != 0 {
|
||||||
c.ResponseError(c.T("PhoneErr.PhoneCheckResult"), checkResult)
|
c.ResponseError(c.T("account:Phone: %s"), checkResult)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -163,7 +163,7 @@ func (c *ApiController) Signup() {
|
|||||||
|
|
||||||
initScore, err := getInitScore()
|
initScore, err := getInitScore()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.ResponseError(fmt.Errorf(c.T("InitErr.InitScoreFailed"), err).Error())
|
c.ResponseError(fmt.Errorf(c.T("account:Get init score failed, error: %w"), err).Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,7 +209,7 @@ func (c *ApiController) Signup() {
|
|||||||
|
|
||||||
affected := object.AddUser(user)
|
affected := object.AddUser(user)
|
||||||
if !affected {
|
if !affected {
|
||||||
c.ResponseError(c.T("UserErr.InvalidInformation"), util.StructToJson(user))
|
c.ResponseError(c.T("account:Invalid information"), util.StructToJson(user))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ func (c *ApiController) GetUserApplication() {
|
|||||||
id := c.Input().Get("id")
|
id := c.Input().Get("id")
|
||||||
user := object.GetUser(id)
|
user := object.GetUser(id)
|
||||||
if user == nil {
|
if user == nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("UserErr.DoNotExist"), id))
|
c.ResponseError(fmt.Sprintf(c.T("application:The user: %s doesn't exist"), id))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ func (c *ApiController) GetOrganizationApplications() {
|
|||||||
sortOrder := c.Input().Get("sortOrder")
|
sortOrder := c.Input().Get("sortOrder")
|
||||||
|
|
||||||
if organization == "" {
|
if organization == "" {
|
||||||
c.ResponseError(c.T("ParameterErr.OrgMissingErr"))
|
c.ResponseError(c.T("application:Parameter organization is missing"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ func (c *ApiController) HandleLoggedIn(application *object.Application, user *ob
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !allowed {
|
if !allowed {
|
||||||
c.ResponseError(c.T("AuthErr.Unauthorized"))
|
c.ResponseError(c.T("auth:Unauthorized operation"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ func (c *ApiController) HandleLoggedIn(application *object.Application, user *ob
|
|||||||
codeChallenge := c.Input().Get("code_challenge")
|
codeChallenge := c.Input().Get("code_challenge")
|
||||||
|
|
||||||
if challengeMethod != "S256" && challengeMethod != "null" && challengeMethod != "" {
|
if challengeMethod != "S256" && challengeMethod != "null" && challengeMethod != "" {
|
||||||
c.ResponseError(c.T("AuthErr.ChallengeMethodErr"))
|
c.ResponseError(c.T("auth:Challenge method should be S256"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
code := object.GetOAuthCode(userId, clientId, responseType, redirectUri, scope, state, nonce, codeChallenge, c.Ctx.Request.Host, c.GetAcceptLanguage())
|
code := object.GetOAuthCode(userId, clientId, responseType, redirectUri, scope, state, nonce, codeChallenge, c.Ctx.Request.Host, c.GetAcceptLanguage())
|
||||||
@ -205,7 +205,7 @@ func (c *ApiController) Login() {
|
|||||||
if form.Username != "" {
|
if form.Username != "" {
|
||||||
if form.Type == ResponseTypeLogin {
|
if form.Type == ResponseTypeLogin {
|
||||||
if c.GetSessionUsername() != "" {
|
if c.GetSessionUsername() != "" {
|
||||||
c.ResponseError(c.T("LoginErr.SignOutFirst"), c.GetSessionUsername())
|
c.ResponseError(c.T("auth:Please sign out first before signing in"), c.GetSessionUsername())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -231,7 +231,7 @@ func (c *ApiController) Login() {
|
|||||||
} else {
|
} else {
|
||||||
verificationCodeType = "phone"
|
verificationCodeType = "phone"
|
||||||
if len(form.PhonePrefix) == 0 {
|
if len(form.PhonePrefix) == 0 {
|
||||||
responseText := fmt.Sprintf(c.T("PhoneErr.NoPrefix"), verificationCodeType)
|
responseText := fmt.Sprintf(c.T("auth:%s No phone prefix"), verificationCodeType)
|
||||||
c.ResponseError(responseText)
|
c.ResponseError(responseText)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -256,13 +256,13 @@ func (c *ApiController) Login() {
|
|||||||
|
|
||||||
user = object.GetUserByFields(form.Organization, form.Username)
|
user = object.GetUserByFields(form.Organization, form.Username)
|
||||||
if user == nil {
|
if user == nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("LoginErr.UserDoNotExist"), form.Organization, form.Username))
|
c.ResponseError(fmt.Sprintf(c.T("auth:The user: %s/%s doesn't exist"), form.Organization, form.Username))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
application := object.GetApplication(fmt.Sprintf("admin/%s", form.Application))
|
application := object.GetApplication(fmt.Sprintf("admin/%s", form.Application))
|
||||||
if application == nil {
|
if application == nil {
|
||||||
c.ResponseError(fmt.Sprintf("The application: %s does not exist", form.Application))
|
c.ResponseError(fmt.Sprintf(c.T("auth:The application: %s does not exist"), form.Application))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,7 +274,7 @@ func (c *ApiController) Login() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !isHuman {
|
if !isHuman {
|
||||||
c.ResponseError("Turing test failed.")
|
c.ResponseError(c.T("auth:Turing test failed."))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -288,7 +288,7 @@ func (c *ApiController) Login() {
|
|||||||
} else {
|
} else {
|
||||||
application := object.GetApplication(fmt.Sprintf("admin/%s", form.Application))
|
application := object.GetApplication(fmt.Sprintf("admin/%s", form.Application))
|
||||||
if application == nil {
|
if application == nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("LoginErr.AppDoNotExist"), form.Application))
|
c.ResponseError(fmt.Sprintf(c.T("auth:The application: %s does not exist"), form.Application))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,7 +302,7 @@ func (c *ApiController) Login() {
|
|||||||
} else if form.Provider != "" {
|
} else if form.Provider != "" {
|
||||||
application := object.GetApplication(fmt.Sprintf("admin/%s", form.Application))
|
application := object.GetApplication(fmt.Sprintf("admin/%s", form.Application))
|
||||||
if application == nil {
|
if application == nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("LoginErr.AppDoNotExist"), form.Application))
|
c.ResponseError(fmt.Sprintf(c.T("auth:The application: %s does not exist"), form.Application))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -310,7 +310,7 @@ func (c *ApiController) Login() {
|
|||||||
provider := object.GetProvider(util.GetId("admin", form.Provider))
|
provider := object.GetProvider(util.GetId("admin", form.Provider))
|
||||||
providerItem := application.GetProviderItem(provider.Name)
|
providerItem := application.GetProviderItem(provider.Name)
|
||||||
if !providerItem.IsProviderVisible() {
|
if !providerItem.IsProviderVisible() {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("ProviderErr.ProviderNotEnabled"), provider.Name))
|
c.ResponseError(fmt.Sprintf(c.T("auth:The provider: %s is not enabled for the application"), provider.Name))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -334,14 +334,14 @@ func (c *ApiController) Login() {
|
|||||||
|
|
||||||
idProvider := idp.GetIdProvider(provider.Type, provider.SubType, clientId, clientSecret, provider.AppId, form.RedirectUri, provider.Domain, provider.CustomAuthUrl, provider.CustomTokenUrl, provider.CustomUserInfoUrl)
|
idProvider := idp.GetIdProvider(provider.Type, provider.SubType, clientId, clientSecret, provider.AppId, form.RedirectUri, provider.Domain, provider.CustomAuthUrl, provider.CustomTokenUrl, provider.CustomUserInfoUrl)
|
||||||
if idProvider == nil {
|
if idProvider == nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("ProviderErr.ProviderNotSupported"), provider.Type))
|
c.ResponseError(fmt.Sprintf(c.T("auth:The provider type: %s is not supported"), provider.Type))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
setHttpClient(idProvider, provider.Type)
|
setHttpClient(idProvider, provider.Type)
|
||||||
|
|
||||||
if form.State != conf.GetConfigString("authState") && form.State != application.Name {
|
if form.State != conf.GetConfigString("authState") && form.State != application.Name {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("AuthErr.AuthStateWrong"), conf.GetConfigString("authState"), form.State))
|
c.ResponseError(fmt.Sprintf(c.T("auth:State expected: %s, but got: %s"), conf.GetConfigString("authState"), form.State))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,13 +353,13 @@ func (c *ApiController) Login() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !token.Valid() {
|
if !token.Valid() {
|
||||||
c.ResponseError(c.T("TokenErr.InvalidToken"))
|
c.ResponseError(c.T("auth:Invalid token"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
userInfo, err = idProvider.GetUserInfo(token)
|
userInfo, err = idProvider.GetUserInfo(token)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("LoginErr.LoginFail"), err.Error()))
|
c.ResponseError(fmt.Sprintf(c.T("auth:Failed to login in: %s"), err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -376,7 +376,7 @@ func (c *ApiController) Login() {
|
|||||||
// Sign in via OAuth (want to sign up but already have account)
|
// Sign in via OAuth (want to sign up but already have account)
|
||||||
|
|
||||||
if user.IsForbidden {
|
if user.IsForbidden {
|
||||||
c.ResponseError(c.T("LoginErr.UserIsForbidden"))
|
c.ResponseError(c.T("auth:The user is forbidden to sign in, please contact the administrator"))
|
||||||
}
|
}
|
||||||
|
|
||||||
resp = c.HandleLoggedIn(application, user, &form)
|
resp = c.HandleLoggedIn(application, user, &form)
|
||||||
@ -388,12 +388,12 @@ func (c *ApiController) Login() {
|
|||||||
} else if provider.Category == "OAuth" {
|
} else if provider.Category == "OAuth" {
|
||||||
// Sign up via OAuth
|
// Sign up via OAuth
|
||||||
if !application.EnableSignUp {
|
if !application.EnableSignUp {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("LoginErr.AppNotEnableSignUp"), provider.Type, userInfo.Username, userInfo.DisplayName))
|
c.ResponseError(fmt.Sprintf(c.T("auth:The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support"), provider.Type, userInfo.Username, userInfo.DisplayName))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !providerItem.CanSignUp {
|
if !providerItem.CanSignUp {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("LoginErr.ProviderCanNotSignUp"), provider.Type, userInfo.Username, userInfo.DisplayName, provider.Type))
|
c.ResponseError(fmt.Sprintf(c.T("auth:The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up"), provider.Type, userInfo.Username, userInfo.DisplayName, provider.Type))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -414,7 +414,7 @@ func (c *ApiController) Login() {
|
|||||||
properties["no"] = strconv.Itoa(len(object.GetUsers(application.Organization)) + 2)
|
properties["no"] = strconv.Itoa(len(object.GetUsers(application.Organization)) + 2)
|
||||||
initScore, err := getInitScore()
|
initScore, err := getInitScore()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.ResponseError(fmt.Errorf(c.T("InitErr.InitScoreFailed"), err).Error())
|
c.ResponseError(fmt.Errorf(c.T("auth:Get init score failed, error: %w"), err).Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -441,7 +441,7 @@ func (c *ApiController) Login() {
|
|||||||
|
|
||||||
affected := object.AddUser(user)
|
affected := object.AddUser(user)
|
||||||
if !affected {
|
if !affected {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("LoginErr.InvalidUserInformation"), util.StructToJson(user)))
|
c.ResponseError(fmt.Sprintf(c.T("auth:Failed to create user, user information is invalid: %s"), util.StructToJson(user)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -466,13 +466,13 @@ func (c *ApiController) Login() {
|
|||||||
} else { // form.Method != "signup"
|
} else { // form.Method != "signup"
|
||||||
userId := c.GetSessionUsername()
|
userId := c.GetSessionUsername()
|
||||||
if userId == "" {
|
if userId == "" {
|
||||||
c.ResponseError(c.T("LoginErr.AccountDoNotExist"), userInfo)
|
c.ResponseError(c.T("auth:The account does not exist"), userInfo)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
oldUser := object.GetUserByField(application.Organization, provider.Type, userInfo.Id)
|
oldUser := object.GetUserByField(application.Organization, provider.Type, userInfo.Id)
|
||||||
if oldUser != nil {
|
if oldUser != nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("LoginErr.OldUser"), provider.Type, userInfo.Username, userInfo.DisplayName, oldUser.Name, oldUser.DisplayName))
|
c.ResponseError(fmt.Sprintf(c.T("auth:The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)"), provider.Type, userInfo.Username, userInfo.DisplayName, oldUser.Name, oldUser.DisplayName))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -493,7 +493,7 @@ func (c *ApiController) Login() {
|
|||||||
// user already signed in to Casdoor, so let the user click the avatar button to do the quick sign-in
|
// user already signed in to Casdoor, so let the user click the avatar button to do the quick sign-in
|
||||||
application := object.GetApplication(fmt.Sprintf("admin/%s", form.Application))
|
application := object.GetApplication(fmt.Sprintf("admin/%s", form.Application))
|
||||||
if application == nil {
|
if application == nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("LoginErr.AppDoNotExist"), form.Application))
|
c.ResponseError(fmt.Sprintf(c.T("auth:The application: %s does not exist"), form.Application))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -505,7 +505,7 @@ func (c *ApiController) Login() {
|
|||||||
record.User = user.Name
|
record.User = user.Name
|
||||||
util.SafeGoroutine(func() { object.AddRecord(record) })
|
util.SafeGoroutine(func() { object.AddRecord(record) })
|
||||||
} else {
|
} else {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("LoginErr.UnknownAuthentication"), util.StructToJson(form)))
|
c.ResponseError(fmt.Sprintf(c.T("auth:Unknown authentication type (not password or provider), form = %s"), util.StructToJson(form)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -210,7 +210,7 @@ func (c *RootController) SamlValidate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !strings.HasPrefix(target, service) {
|
if !strings.HasPrefix(target, service) {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("CasErr.ServiceDoNotMatch"), target, service))
|
c.ResponseError(fmt.Sprintf(c.T("cas:Service %s and %s do not match"), target, service))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ func (c *ApiController) BatchEnforce() {
|
|||||||
func (c *ApiController) GetAllObjects() {
|
func (c *ApiController) GetAllObjects() {
|
||||||
userId := c.GetSessionUsername()
|
userId := c.GetSessionUsername()
|
||||||
if userId == "" {
|
if userId == "" {
|
||||||
c.ResponseError(c.T("EnforcerErr.SignInFirst"))
|
c.ResponseError(c.T("enforcer:Please sign in first"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ func (c *ApiController) GetAllObjects() {
|
|||||||
func (c *ApiController) GetAllActions() {
|
func (c *ApiController) GetAllActions() {
|
||||||
userId := c.GetSessionUsername()
|
userId := c.GetSessionUsername()
|
||||||
if userId == "" {
|
if userId == "" {
|
||||||
c.ResponseError(c.T("EnforcerErr.SignInFirst"))
|
c.ResponseError(c.T("enforcer:Please sign in first"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ func (c *ApiController) GetAllActions() {
|
|||||||
func (c *ApiController) GetAllRoles() {
|
func (c *ApiController) GetAllRoles() {
|
||||||
userId := c.GetSessionUsername()
|
userId := c.GetSessionUsername()
|
||||||
if userId == "" {
|
if userId == "" {
|
||||||
c.ResponseError(c.T("EnforcerErr.SignInFirst"))
|
c.ResponseError(c.T("enforcer:Please sign in first"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ func (c *ApiController) GetLdapUser() {
|
|||||||
ldapServer := LdapServer{}
|
ldapServer := LdapServer{}
|
||||||
err := json.Unmarshal(c.Ctx.Input.RequestBody, &ldapServer)
|
err := json.Unmarshal(c.Ctx.Input.RequestBody, &ldapServer)
|
||||||
if err != nil || util.IsStrsEmpty(ldapServer.Host, ldapServer.Admin, ldapServer.Passwd, ldapServer.BaseDn) {
|
if err != nil || util.IsStrsEmpty(ldapServer.Host, ldapServer.Admin, ldapServer.Passwd, ldapServer.BaseDn) {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing"))
|
c.ResponseError(c.T("ldap:Missing parameter"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ func (c *ApiController) GetLdap() {
|
|||||||
id := c.Input().Get("id")
|
id := c.Input().Get("id")
|
||||||
|
|
||||||
if util.IsStrsEmpty(id) {
|
if util.IsStrsEmpty(id) {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing"))
|
c.ResponseError(c.T("ldap:Missing parameter"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,17 +136,17 @@ func (c *ApiController) AddLdap() {
|
|||||||
var ldap object.Ldap
|
var ldap object.Ldap
|
||||||
err := json.Unmarshal(c.Ctx.Input.RequestBody, &ldap)
|
err := json.Unmarshal(c.Ctx.Input.RequestBody, &ldap)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing"))
|
c.ResponseError(c.T("ldap:Missing parameter"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if util.IsStrsEmpty(ldap.Owner, ldap.ServerName, ldap.Host, ldap.Admin, ldap.Passwd, ldap.BaseDn) {
|
if util.IsStrsEmpty(ldap.Owner, ldap.ServerName, ldap.Host, ldap.Admin, ldap.Passwd, ldap.BaseDn) {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing"))
|
c.ResponseError(c.T("ldap:Missing parameter"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if object.CheckLdapExist(&ldap) {
|
if object.CheckLdapExist(&ldap) {
|
||||||
c.ResponseError(c.T("LdapErr.ServerExisted"))
|
c.ResponseError(c.T("ldap:Ldap server exist"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,7 +171,7 @@ func (c *ApiController) UpdateLdap() {
|
|||||||
var ldap object.Ldap
|
var ldap object.Ldap
|
||||||
err := json.Unmarshal(c.Ctx.Input.RequestBody, &ldap)
|
err := json.Unmarshal(c.Ctx.Input.RequestBody, &ldap)
|
||||||
if err != nil || util.IsStrsEmpty(ldap.Owner, ldap.ServerName, ldap.Host, ldap.Admin, ldap.Passwd, ldap.BaseDn) {
|
if err != nil || util.IsStrsEmpty(ldap.Owner, ldap.ServerName, ldap.Host, ldap.Admin, ldap.Passwd, ldap.BaseDn) {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing"))
|
c.ResponseError(c.T("ldap:Missing parameter"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ func (c *ApiController) Unlink() {
|
|||||||
|
|
||||||
if user.Id != unlinkedUser.Id && !user.IsGlobalAdmin {
|
if user.Id != unlinkedUser.Id && !user.IsGlobalAdmin {
|
||||||
// if the user is not the same as the one we are unlinking, we need to make sure the user is the global admin.
|
// if the user is not the same as the one we are unlinking, we need to make sure the user is the global admin.
|
||||||
c.ResponseError(c.T("AuthErr.CanNotUnlinkUsers"))
|
c.ResponseError(c.T("link:You are not the global admin, you can't unlink other users"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,23 +55,23 @@ func (c *ApiController) Unlink() {
|
|||||||
// if the user is unlinking themselves, should check the provider can be unlinked, if not, we should return an error.
|
// if the user is unlinking themselves, should check the provider can be unlinked, if not, we should return an error.
|
||||||
application := object.GetApplicationByUser(user)
|
application := object.GetApplicationByUser(user)
|
||||||
if application == nil {
|
if application == nil {
|
||||||
c.ResponseError(c.T("AuthErr.CanNotLinkMySelf"))
|
c.ResponseError(c.T("link:You can't unlink yourself, you are not a member of any application"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(application.Providers) == 0 {
|
if len(application.Providers) == 0 {
|
||||||
c.ResponseError(c.T("ApplicationErr.HasNoProviders"))
|
c.ResponseError(c.T("link:This application has no providers"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
provider := application.GetProviderItemByType(providerType)
|
provider := application.GetProviderItemByType(providerType)
|
||||||
if provider == nil {
|
if provider == nil {
|
||||||
c.ResponseError(c.T("ApplicationErr.HasNoProvidersOfType") + providerType)
|
c.ResponseError(c.T("link:This application has no providers of type") + providerType)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !provider.CanUnlink {
|
if !provider.CanUnlink {
|
||||||
c.ResponseError(c.T("ProviderErr.CanNotBeUnlinked"))
|
c.ResponseError(c.T("link:This provider can't be unlinked"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ func (c *ApiController) Unlink() {
|
|||||||
value := object.GetUserField(&unlinkedUser, providerType)
|
value := object.GetUserField(&unlinkedUser, providerType)
|
||||||
|
|
||||||
if value == "" {
|
if value == "" {
|
||||||
c.ResponseError(c.T("ProviderErr.LinkFirstErr"), value)
|
c.ResponseError(c.T("link:Please link first"), value)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,13 +141,13 @@ func (c *ApiController) BuyProduct() {
|
|||||||
|
|
||||||
userId := c.GetSessionUsername()
|
userId := c.GetSessionUsername()
|
||||||
if userId == "" {
|
if userId == "" {
|
||||||
c.ResponseError(c.T("LoginErr.LoginFirst"))
|
c.ResponseError(c.T("product:Please login first"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
user := object.GetUser(userId)
|
user := object.GetUser(userId)
|
||||||
if user == nil {
|
if user == nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("UserErr.DoNotExist"), userId))
|
c.ResponseError(fmt.Sprintf(c.T("product:The user: %s doesn't exist"), userId))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@ func (c *ApiController) UploadResource() {
|
|||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
if username == "" || fullFilePath == "" {
|
if username == "" || fullFilePath == "" {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("ResourceErr.UsernameOrFilePathEmpty"), username, fullFilePath))
|
c.ResponseError(fmt.Sprintf(c.T("resource:Username or fullFilePath is empty: username = %s, fullFilePath = %s"), username, fullFilePath))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,7 +227,7 @@ func (c *ApiController) UploadResource() {
|
|||||||
case "avatar":
|
case "avatar":
|
||||||
user := object.GetUserNoCheck(util.GetId(owner, username))
|
user := object.GetUserNoCheck(util.GetId(owner, username))
|
||||||
if user == nil {
|
if user == nil {
|
||||||
c.ResponseError(c.T("ResourceErr.UserIsNil"))
|
c.ResponseError(c.T("resource:User is nil for tag: avatar"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ func (c *ApiController) GetSamlMeta() {
|
|||||||
paramApp := c.Input().Get("application")
|
paramApp := c.Input().Get("application")
|
||||||
application := object.GetApplication(paramApp)
|
application := object.GetApplication(paramApp)
|
||||||
if application == nil {
|
if application == nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("ApplicationErr.AppNotFound"), paramApp))
|
c.ResponseError(fmt.Sprintf(c.T("saml:Application %s not found"), paramApp))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
metadata, _ := object.GetSamlMeta(application, host)
|
metadata, _ := object.GetSamlMeta(application, host)
|
||||||
|
@ -81,7 +81,7 @@ func (c *ApiController) SendEmail() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if util.IsStrsEmpty(emailForm.Title, emailForm.Content, emailForm.Sender) {
|
if util.IsStrsEmpty(emailForm.Title, emailForm.Content, emailForm.Sender) {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("EmailErr.EmptyParam"), emailForm))
|
c.ResponseError(fmt.Sprintf(c.T("service:Empty parameters for emailForm: %v"), emailForm))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ func (c *ApiController) SendEmail() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(invalidReceivers) != 0 {
|
if len(invalidReceivers) != 0 {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("EmailErr.InvalidReceivers"), invalidReceivers))
|
c.ResponseError(fmt.Sprintf(c.T("service:Invalid Email receivers: %s"), invalidReceivers))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ func (c *ApiController) SendSms() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(invalidReceivers) != 0 {
|
if len(invalidReceivers) != 0 {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("PhoneErr.InvalidReceivers"), invalidReceivers))
|
c.ResponseError(fmt.Sprintf(c.T("service:Invalid phone receivers: %s"), invalidReceivers))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ func (c *ApiController) GetSystemInfo() {
|
|||||||
|
|
||||||
user := object.GetUser(id)
|
user := object.GetUser(id)
|
||||||
if user == nil || !user.IsGlobalAdmin {
|
if user == nil || !user.IsGlobalAdmin {
|
||||||
c.ResponseError(c.T("ResourceErr.NotAuthorized"))
|
c.ResponseError(c.T("system_info:You are not authorized to access this resource"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ func (c *ApiController) GetOAuthCode() {
|
|||||||
codeChallenge := c.Input().Get("code_challenge")
|
codeChallenge := c.Input().Get("code_challenge")
|
||||||
|
|
||||||
if challengeMethod != "S256" && challengeMethod != "null" && challengeMethod != "" {
|
if challengeMethod != "S256" && challengeMethod != "null" && challengeMethod != "" {
|
||||||
c.ResponseError(c.T("AuthErr.ChallengeMethodErr"))
|
c.ResponseError(c.T("token:Challenge method should be S256"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
host := c.Ctx.Request.Host
|
host := c.Ctx.Request.Host
|
||||||
@ -290,7 +290,7 @@ func (c *ApiController) IntrospectToken() {
|
|||||||
clientId = c.Input().Get("client_id")
|
clientId = c.Input().Get("client_id")
|
||||||
clientSecret = c.Input().Get("client_secret")
|
clientSecret = c.Input().Get("client_secret")
|
||||||
if clientId == "" || clientSecret == "" {
|
if clientId == "" || clientSecret == "" {
|
||||||
c.ResponseError(c.T("TokenErr.EmptyClientID"))
|
c.ResponseError(c.T("token:Empty clientId or clientSecret"))
|
||||||
c.Data["json"] = &object.TokenError{
|
c.Data["json"] = &object.TokenError{
|
||||||
Error: object.InvalidRequest,
|
Error: object.InvalidRequest,
|
||||||
}
|
}
|
||||||
@ -301,7 +301,7 @@ func (c *ApiController) IntrospectToken() {
|
|||||||
}
|
}
|
||||||
application := object.GetApplicationByClientId(clientId)
|
application := object.GetApplicationByClientId(clientId)
|
||||||
if application == nil || application.ClientSecret != clientSecret {
|
if application == nil || application.ClientSecret != clientSecret {
|
||||||
c.ResponseError(c.T("TokenErr.InvalidAppOrWrongClientSecret"))
|
c.ResponseError(c.T("token:Invalid application or wrong clientSecret"))
|
||||||
c.Data["json"] = &object.TokenError{
|
c.Data["json"] = &object.TokenError{
|
||||||
Error: object.InvalidClient,
|
Error: object.InvalidClient,
|
||||||
}
|
}
|
||||||
|
@ -149,7 +149,7 @@ func (c *ApiController) UpdateUser() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if user.DisplayName == "" {
|
if user.DisplayName == "" {
|
||||||
c.ResponseError(c.T("UserErr.DisplayNameCanNotBeEmpty"))
|
c.ResponseError(c.T("user:Display name cannot be empty"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -236,7 +236,7 @@ func (c *ApiController) GetEmailAndPhone() {
|
|||||||
|
|
||||||
user := object.GetUserByFields(form.Organization, form.Username)
|
user := object.GetUserByFields(form.Organization, form.Username)
|
||||||
if user == nil {
|
if user == nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("UserErr.DoNotExistInOrg"), form.Organization, form.Username))
|
c.ResponseError(fmt.Sprintf(c.T("user:The user: %s/%s doesn't exist"), form.Organization, form.Username))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -294,12 +294,12 @@ func (c *ApiController) SetPassword() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if strings.Contains(newPassword, " ") {
|
if strings.Contains(newPassword, " ") {
|
||||||
c.ResponseError(c.T("SetPasswordErr.CanNotContainBlank"))
|
c.ResponseError(c.T("user:New password cannot contain blank space."))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(newPassword) <= 5 {
|
if len(newPassword) <= 5 {
|
||||||
c.ResponseError(c.T("SetPasswordErr.LessThanSixCharacters"))
|
c.ResponseError(c.T("user:New password must have at least 6 characters"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,6 +61,6 @@ func (c *ApiController) UploadUsers() {
|
|||||||
if affected {
|
if affected {
|
||||||
c.ResponseOk()
|
c.ResponseOk()
|
||||||
} else {
|
} else {
|
||||||
c.ResponseError(c.T("UserErr.FailToImportUsers"))
|
c.ResponseError(c.T("user_upload:Failed to import users"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ func (c *ApiController) SetTokenErrorHttpStatus() {
|
|||||||
func (c *ApiController) RequireSignedIn() (string, bool) {
|
func (c *ApiController) RequireSignedIn() (string, bool) {
|
||||||
userId := c.GetSessionUsername()
|
userId := c.GetSessionUsername()
|
||||||
if userId == "" {
|
if userId == "" {
|
||||||
c.ResponseError(c.T("LoginErr.LoginFirst"), "Please login first")
|
c.ResponseError(c.T("util:Please login first"), "util:Please login first")
|
||||||
return "", false
|
return "", false
|
||||||
}
|
}
|
||||||
return userId, true
|
return userId, true
|
||||||
@ -100,7 +100,7 @@ func (c *ApiController) RequireSignedInUser() (*object.User, bool) {
|
|||||||
user := object.GetUser(userId)
|
user := object.GetUser(userId)
|
||||||
if user == nil {
|
if user == nil {
|
||||||
c.ClearUserSession()
|
c.ClearUserSession()
|
||||||
c.ResponseError(fmt.Sprintf(c.T("UserErr.DoNotExist"), userId))
|
c.ResponseError(fmt.Sprintf(c.T("util:The user: %s doesn't exist"), userId))
|
||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
return user, true
|
return user, true
|
||||||
@ -128,7 +128,7 @@ func (c *ApiController) GetProviderFromContext(category string) (*object.Provide
|
|||||||
if providerName != "" {
|
if providerName != "" {
|
||||||
provider := object.GetProvider(util.GetId("admin", providerName))
|
provider := object.GetProvider(util.GetId("admin", providerName))
|
||||||
if provider == nil {
|
if provider == nil {
|
||||||
c.ResponseError(c.T("ProviderErr.ProviderNotFound"), providerName)
|
c.ResponseError(c.T("util:The provider: %s is not found"), providerName)
|
||||||
return nil, nil, false
|
return nil, nil, false
|
||||||
}
|
}
|
||||||
return provider, nil, true
|
return provider, nil, true
|
||||||
@ -141,13 +141,13 @@ func (c *ApiController) GetProviderFromContext(category string) (*object.Provide
|
|||||||
|
|
||||||
application, user := object.GetApplicationByUserId(userId)
|
application, user := object.GetApplicationByUserId(userId)
|
||||||
if application == nil {
|
if application == nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("ApplicationErr.AppNotFoundForUserID"), userId))
|
c.ResponseError(fmt.Sprintf(c.T("util:No application is found for userId: %s"), userId))
|
||||||
return nil, nil, false
|
return nil, nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
provider := application.GetProviderByCategory(category)
|
provider := application.GetProviderByCategory(category)
|
||||||
if provider == nil {
|
if provider == nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("ProviderErr.ProviderNotFoundForCategory"), category, application.Name))
|
c.ResponseError(fmt.Sprintf(c.T("util:No provider for category: %s is found for application: %s"), category, application.Name))
|
||||||
return nil, nil, false
|
return nil, nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,23 +50,23 @@ func (c *ApiController) SendVerificationCode() {
|
|||||||
remoteAddr := util.GetIPFromRequest(c.Ctx.Request)
|
remoteAddr := util.GetIPFromRequest(c.Ctx.Request)
|
||||||
|
|
||||||
if destType == "" {
|
if destType == "" {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing") + ": type.")
|
c.ResponseError(c.T("verification:Missing parameter") + ": type.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if dest == "" {
|
if dest == "" {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing") + ": dest.")
|
c.ResponseError(c.T("verification:Missing parameter") + ": dest.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if applicationId == "" {
|
if applicationId == "" {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing") + ": applicationId.")
|
c.ResponseError(c.T("verification:Missing parameter") + ": applicationId.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !strings.Contains(applicationId, "/") {
|
if !strings.Contains(applicationId, "/") {
|
||||||
c.ResponseError(c.T("ParameterErr.Wrong") + ": applicationId.")
|
c.ResponseError(c.T("verification:Wrong parameter") + ": applicationId.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if checkType == "" {
|
if checkType == "" {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing") + ": checkType.")
|
c.ResponseError(c.T("verification:Missing parameter") + ": checkType.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ func (c *ApiController) SendVerificationCode() {
|
|||||||
|
|
||||||
if captchaProvider != nil {
|
if captchaProvider != nil {
|
||||||
if checkKey == "" {
|
if checkKey == "" {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing") + ": checkKey.")
|
c.ResponseError(c.T("verification:Missing parameter") + ": checkKey.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
isHuman, err := captchaProvider.VerifyCaptcha(checkKey, checkId)
|
isHuman, err := captchaProvider.VerifyCaptcha(checkKey, checkId)
|
||||||
@ -84,7 +84,7 @@ func (c *ApiController) SendVerificationCode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !isHuman {
|
if !isHuman {
|
||||||
c.ResponseError(c.T("AuthErr.NotHuman"))
|
c.ResponseError(c.T("verification:Turing test failed."))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -93,12 +93,12 @@ func (c *ApiController) SendVerificationCode() {
|
|||||||
application := object.GetApplication(applicationId)
|
application := object.GetApplication(applicationId)
|
||||||
organization := object.GetOrganization(fmt.Sprintf("%s/%s", application.Owner, application.Organization))
|
organization := object.GetOrganization(fmt.Sprintf("%s/%s", application.Owner, application.Organization))
|
||||||
if organization == nil {
|
if organization == nil {
|
||||||
c.ResponseError(c.T("OrgErr.DoNotExist"))
|
c.ResponseError(c.T("verification:Organization does not exist"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if checkUser == "true" && user == nil && object.GetUserByFields(organization.Name, dest) == nil {
|
if checkUser == "true" && user == nil && object.GetUserByFields(organization.Name, dest) == nil {
|
||||||
c.ResponseError(c.T("LoginErr.LoginFirst"))
|
c.ResponseError(c.T("verification:Please login first"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,13 +114,13 @@ func (c *ApiController) SendVerificationCode() {
|
|||||||
dest = user.Email
|
dest = user.Email
|
||||||
}
|
}
|
||||||
if !util.IsEmailValid(dest) {
|
if !util.IsEmailValid(dest) {
|
||||||
c.ResponseError(c.T("EmailErr.EmailInvalid"))
|
c.ResponseError(c.T("verification:Email is invalid"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
userByEmail := object.GetUserByEmail(organization.Name, dest)
|
userByEmail := object.GetUserByEmail(organization.Name, dest)
|
||||||
if userByEmail == nil {
|
if userByEmail == nil {
|
||||||
c.ResponseError(c.T("UserErr.DoNotExistSignUp"))
|
c.ResponseError(c.T("verification:the user does not exist, please sign up first"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,13 +131,13 @@ func (c *ApiController) SendVerificationCode() {
|
|||||||
dest = user.Phone
|
dest = user.Phone
|
||||||
}
|
}
|
||||||
if !util.IsPhoneCnValid(dest) {
|
if !util.IsPhoneCnValid(dest) {
|
||||||
c.ResponseError(c.T("PhoneErr.NumberInvalid"))
|
c.ResponseError(c.T("verification:Phone number is invalid"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
userByPhone := object.GetUserByPhone(organization.Name, dest)
|
userByPhone := object.GetUserByPhone(organization.Name, dest)
|
||||||
if userByPhone == nil {
|
if userByPhone == nil {
|
||||||
c.ResponseError(c.T("UserErr.DoNotExistSignUp"))
|
c.ResponseError(c.T("verification:the user does not exist, please sign up first"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,7 +169,7 @@ func (c *ApiController) ResetEmailOrPhone() {
|
|||||||
dest := c.Ctx.Request.Form.Get("dest")
|
dest := c.Ctx.Request.Form.Get("dest")
|
||||||
code := c.Ctx.Request.Form.Get("code")
|
code := c.Ctx.Request.Form.Get("code")
|
||||||
if len(dest) == 0 || len(code) == 0 || len(destType) == 0 {
|
if len(dest) == 0 || len(code) == 0 || len(destType) == 0 {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing"))
|
c.ResponseError(c.T("verification:Missing parameter"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,7 +178,7 @@ func (c *ApiController) ResetEmailOrPhone() {
|
|||||||
if destType == "phone" {
|
if destType == "phone" {
|
||||||
phoneItem := object.GetAccountItemByName("Phone", org)
|
phoneItem := object.GetAccountItemByName("Phone", org)
|
||||||
if phoneItem == nil {
|
if phoneItem == nil {
|
||||||
c.ResponseError(c.T("PhoneErr.UnableGetModifyRule"))
|
c.ResponseError(c.T("verification:Unable to get the phone modify rule."))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -195,7 +195,7 @@ func (c *ApiController) ResetEmailOrPhone() {
|
|||||||
} else if destType == "email" {
|
} else if destType == "email" {
|
||||||
emailItem := object.GetAccountItemByName("Email", org)
|
emailItem := object.GetAccountItemByName("Email", org)
|
||||||
if emailItem == nil {
|
if emailItem == nil {
|
||||||
c.ResponseError(c.T("EmailErr.UnableGetModifyRule"))
|
c.ResponseError(c.T("verification:Unable to get the email modify rule."))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,7 +217,7 @@ func (c *ApiController) ResetEmailOrPhone() {
|
|||||||
user.Phone = dest
|
user.Phone = dest
|
||||||
object.SetUserField(user, "phone", user.Phone)
|
object.SetUserField(user, "phone", user.Phone)
|
||||||
default:
|
default:
|
||||||
c.ResponseError(c.T("ParameterErr.UnknownType"))
|
c.ResponseError(c.T("verification:Unknown type"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -236,17 +236,17 @@ func (c *ApiController) VerifyCaptcha() {
|
|||||||
captchaToken := c.Ctx.Request.Form.Get("captchaToken")
|
captchaToken := c.Ctx.Request.Form.Get("captchaToken")
|
||||||
clientSecret := c.Ctx.Request.Form.Get("clientSecret")
|
clientSecret := c.Ctx.Request.Form.Get("clientSecret")
|
||||||
if captchaToken == "" {
|
if captchaToken == "" {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing") + ": captchaToken.")
|
c.ResponseError(c.T("verification:Missing parameter") + ": captchaToken.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if clientSecret == "" {
|
if clientSecret == "" {
|
||||||
c.ResponseError(c.T("ParameterErr.Missing") + ": clientSecret.")
|
c.ResponseError(c.T("verification:Missing parameter") + ": clientSecret.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
provider := captcha.GetCaptchaProvider(captchaType)
|
provider := captcha.GetCaptchaProvider(captchaType)
|
||||||
if provider == nil {
|
if provider == nil {
|
||||||
c.ResponseError(c.T("ProviderErr.InvalidProvider"))
|
c.ResponseError(c.T("verification:Invalid captcha provider."))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ func (c *ApiController) WebAuthnSignupBegin() {
|
|||||||
webauthnObj := object.GetWebAuthnObject(c.Ctx.Request.Host)
|
webauthnObj := object.GetWebAuthnObject(c.Ctx.Request.Host)
|
||||||
user := c.getCurrentUser()
|
user := c.getCurrentUser()
|
||||||
if user == nil {
|
if user == nil {
|
||||||
c.ResponseError(c.T("LoginErr.LoginFirst"))
|
c.ResponseError(c.T("webauthn:Please login first"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,13 +66,13 @@ func (c *ApiController) WebAuthnSignupFinish() {
|
|||||||
webauthnObj := object.GetWebAuthnObject(c.Ctx.Request.Host)
|
webauthnObj := object.GetWebAuthnObject(c.Ctx.Request.Host)
|
||||||
user := c.getCurrentUser()
|
user := c.getCurrentUser()
|
||||||
if user == nil {
|
if user == nil {
|
||||||
c.ResponseError(c.T("LoginErr.LoginFirst"))
|
c.ResponseError(c.T("webauthn:Please login first"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
sessionObj := c.GetSession("registration")
|
sessionObj := c.GetSession("registration")
|
||||||
sessionData, ok := sessionObj.(webauthn.SessionData)
|
sessionData, ok := sessionObj.(webauthn.SessionData)
|
||||||
if !ok {
|
if !ok {
|
||||||
c.ResponseError(c.T("AuthErr.CallWebAuthnSigninBegin"))
|
c.ResponseError(c.T("webauthn:Please call WebAuthnSigninBegin first"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.Ctx.Request.Body = io.NopCloser(bytes.NewBuffer(c.Ctx.Input.RequestBody))
|
c.Ctx.Request.Body = io.NopCloser(bytes.NewBuffer(c.Ctx.Input.RequestBody))
|
||||||
@ -101,11 +101,11 @@ func (c *ApiController) WebAuthnSigninBegin() {
|
|||||||
userName := c.Input().Get("name")
|
userName := c.Input().Get("name")
|
||||||
user := object.GetUserByFields(userOwner, userName)
|
user := object.GetUserByFields(userOwner, userName)
|
||||||
if user == nil {
|
if user == nil {
|
||||||
c.ResponseError(fmt.Sprintf(c.T("UserErr.DoNotExistInOrg"), userOwner, userName))
|
c.ResponseError(fmt.Sprintf(c.T("webauthn:The user: %s/%s doesn't exist"), userOwner, userName))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if len(user.WebauthnCredentials) == 0 {
|
if len(user.WebauthnCredentials) == 0 {
|
||||||
c.ResponseError(c.T("UserErr.NoWebAuthnCredential"))
|
c.ResponseError(c.T("webauthn:Found no credentials for this user"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,7 +132,7 @@ func (c *ApiController) WebAuthnSigninFinish() {
|
|||||||
sessionObj := c.GetSession("authentication")
|
sessionObj := c.GetSession("authentication")
|
||||||
sessionData, ok := sessionObj.(webauthn.SessionData)
|
sessionData, ok := sessionObj.(webauthn.SessionData)
|
||||||
if !ok {
|
if !ok {
|
||||||
c.ResponseError(c.T("AuthErr.CallWebAuthnSigninBegin"))
|
c.ResponseError(c.T("webauthn:Please call WebAuthnSigninBegin first"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.Ctx.Request.Body = io.NopCloser(bytes.NewBuffer(c.Ctx.Input.RequestBody))
|
c.Ctx.Request.Body = io.NopCloser(bytes.NewBuffer(c.Ctx.Input.RequestBody))
|
||||||
|
10
crowdin.yml
Normal file
10
crowdin.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
project_id: '491513'
|
||||||
|
api_token_env: 'CROWDIN_PERSONAL_TOKEN'
|
||||||
|
preserve_hierarchy: true
|
||||||
|
files: [
|
||||||
|
# JSON translation files
|
||||||
|
{
|
||||||
|
source: '/i18n/locales/en/data.json',
|
||||||
|
translation: '/i18n/locales/%two_letters_code%/data.json',
|
||||||
|
},
|
||||||
|
]
|
4
go.mod
4
go.mod
@ -4,7 +4,6 @@ go 1.16
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/RobotsAndPencils/go-saml v0.0.0-20170520135329-fb13cb52a46b
|
github.com/RobotsAndPencils/go-saml v0.0.0-20170520135329-fb13cb52a46b
|
||||||
github.com/Unknwon/goconfig v1.0.0
|
|
||||||
github.com/alexedwards/argon2id v0.0.0-20211130144151-3585854a6387
|
github.com/alexedwards/argon2id v0.0.0-20211130144151-3585854a6387
|
||||||
github.com/aws/aws-sdk-go v1.44.4
|
github.com/aws/aws-sdk-go v1.44.4
|
||||||
github.com/beego/beego v1.12.11
|
github.com/beego/beego v1.12.11
|
||||||
@ -38,7 +37,6 @@ require (
|
|||||||
github.com/satori/go.uuid v1.2.0
|
github.com/satori/go.uuid v1.2.0
|
||||||
github.com/shirou/gopsutil v3.21.11+incompatible
|
github.com/shirou/gopsutil v3.21.11+incompatible
|
||||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
|
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
|
||||||
github.com/smartystreets/goconvey v1.6.4 // indirect
|
|
||||||
github.com/stretchr/testify v1.8.0
|
github.com/stretchr/testify v1.8.0
|
||||||
github.com/tealeg/xlsx v1.0.5
|
github.com/tealeg/xlsx v1.0.5
|
||||||
github.com/thanhpk/randstr v1.0.4
|
github.com/thanhpk/randstr v1.0.4
|
||||||
@ -50,7 +48,7 @@ require (
|
|||||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
|
||||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
|
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
|
||||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect
|
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect
|
||||||
gopkg.in/ini.v1 v1.67.0
|
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||||
gopkg.in/square/go-jose.v2 v2.6.0
|
gopkg.in/square/go-jose.v2 v2.6.0
|
||||||
gopkg.in/yaml.v2 v2.3.0 // indirect
|
gopkg.in/yaml.v2 v2.3.0 // indirect
|
||||||
xorm.io/builder v0.3.12 // indirect
|
xorm.io/builder v0.3.12 // indirect
|
||||||
|
7
go.sum
7
go.sum
@ -61,8 +61,6 @@ github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go
|
|||||||
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
||||||
github.com/RobotsAndPencils/go-saml v0.0.0-20170520135329-fb13cb52a46b h1:EgJ6N2S0h1WfFIjU5/VVHWbMSVYXAluop97Qxpr/lfQ=
|
github.com/RobotsAndPencils/go-saml v0.0.0-20170520135329-fb13cb52a46b h1:EgJ6N2S0h1WfFIjU5/VVHWbMSVYXAluop97Qxpr/lfQ=
|
||||||
github.com/RobotsAndPencils/go-saml v0.0.0-20170520135329-fb13cb52a46b/go.mod h1:3SAoF0F5EbcOuBD5WT9nYkbIJieBS84cUQXADbXeBsU=
|
github.com/RobotsAndPencils/go-saml v0.0.0-20170520135329-fb13cb52a46b/go.mod h1:3SAoF0F5EbcOuBD5WT9nYkbIJieBS84cUQXADbXeBsU=
|
||||||
github.com/Unknwon/goconfig v1.0.0 h1:9IAu/BYbSLQi8puFjUQApZTxIHqSwrj5d8vpP8vTq4A=
|
|
||||||
github.com/Unknwon/goconfig v1.0.0/go.mod h1:wngxua9XCNjvHjDiTiV26DaKDT+0c63QR6H5hjVUUxw=
|
|
||||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||||
@ -252,7 +250,6 @@ github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs=
|
|||||||
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||||
github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8=
|
github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8=
|
||||||
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
|
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
|
||||||
@ -286,7 +283,6 @@ github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr
|
|||||||
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||||
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
|
|
||||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||||
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
||||||
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA=
|
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA=
|
||||||
@ -412,11 +408,8 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx
|
|||||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0=
|
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0=
|
||||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M=
|
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M=
|
||||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
|
|
||||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||||
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
|
|
||||||
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
|
||||||
github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE=
|
github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
@ -15,13 +15,11 @@
|
|||||||
package i18n
|
package i18n
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/Unknwon/goconfig"
|
|
||||||
"github.com/casdoor/casdoor/util"
|
"github.com/casdoor/casdoor/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -43,7 +41,7 @@ func GetAllI18nStrings(fileContent string, path string) []string {
|
|||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
for _, match := range matches {
|
for _, match := range matches {
|
||||||
match := strings.Split(match[1], ",")
|
match := strings.SplitN(match[1], ",", 2)
|
||||||
res = append(res, match[1][2:])
|
res = append(res, match[1][2:])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -84,39 +82,34 @@ func getAllGoFilePaths() []string {
|
|||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
func getErrName(paths []string) map[string]bool {
|
func getErrName(paths []string) map[string]string {
|
||||||
ErrName := make(map[string]bool)
|
ErrName := make(map[string]string)
|
||||||
for i := 0; i < len(paths); i++ {
|
for i := 0; i < len(paths); i++ {
|
||||||
content := util.ReadStringFromPath(paths[i])
|
content := util.ReadStringFromPath(paths[i])
|
||||||
words := GetAllI18nStrings(content, paths[i])
|
words := GetAllI18nStrings(content, paths[i])
|
||||||
for i := 0; i < len(words); i++ {
|
for j := 0; j < len(words); j++ {
|
||||||
ErrName[words[i]] = true
|
ErrName[words[j]] = paths[i]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ErrName
|
return ErrName
|
||||||
}
|
}
|
||||||
|
|
||||||
func writeToAllLanguageFiles(errName map[string]bool) {
|
func getI18nJSONData(errName map[string]string) *I18nData {
|
||||||
languages := "en,zh,es,fr,de,ja,ko,ru"
|
data := I18nData{}
|
||||||
languageArr := strings.Split(languages, ",")
|
for k, v := range errName {
|
||||||
var c [10]*goconfig.ConfigFile
|
var index int
|
||||||
for i := 0; i < len(languageArr); i++ {
|
if strings.Contains(v, "/") {
|
||||||
var err error
|
index = strings.LastIndex(v, "/")
|
||||||
c[i], err = goconfig.LoadConfigFile("../i18n/languages/" + "locale_" + languageArr[i] + ".ini")
|
} else {
|
||||||
if err != nil {
|
index = strings.LastIndex(v, "\\")
|
||||||
log.Println(err.Error())
|
|
||||||
}
|
}
|
||||||
for j := range errName {
|
namespace := v[index+1 : len(v)-3]
|
||||||
parts := strings.Split(j, ".")
|
key := k[len(namespace)+1:]
|
||||||
_, err := c[i].GetValue(parts[0], parts[1])
|
// fmt.Printf("k=%s,v=%s,namespace=%s,key=%s\n", k, v, namespace, key)
|
||||||
if err != nil {
|
if _, ok := data[namespace]; !ok {
|
||||||
c[i].SetValue(parts[0], parts[1], parts[1])
|
data[namespace] = map[string]string{}
|
||||||
}
|
|
||||||
}
|
|
||||||
c[i].SetPrettyFormat(true)
|
|
||||||
err = goconfig.SaveConfigFile(c[i], "../i18n/languages/"+"locale_"+languageArr[i]+".ini")
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
}
|
}
|
||||||
|
data[namespace][key] = key
|
||||||
}
|
}
|
||||||
|
return &data
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,17 @@ func TestGenerateI18nStringsForBackend(t *testing.T) {
|
|||||||
|
|
||||||
errName := getErrName(paths)
|
errName := getErrName(paths)
|
||||||
|
|
||||||
writeToAllLanguageFiles(errName)
|
dataEn := getI18nJSONData(errName)
|
||||||
|
|
||||||
|
writeI18nFile("backend_en", dataEn)
|
||||||
|
|
||||||
|
applyToOtherLanguage(dataEn, "backend_de")
|
||||||
|
applyToOtherLanguage(dataEn, "backend_es")
|
||||||
|
applyToOtherLanguage(dataEn, "backend_fr")
|
||||||
|
applyToOtherLanguage(dataEn, "backend_ja")
|
||||||
|
applyToOtherLanguage(dataEn, "backend_ko")
|
||||||
|
applyToOtherLanguage(dataEn, "backend_ru")
|
||||||
|
applyToOtherLanguage(dataEn, "backend_zh")
|
||||||
|
|
||||||
fmt.Println("Total Err Words:", len(errName))
|
fmt.Println("Total Err Words:", len(errName))
|
||||||
|
|
||||||
|
@ -1,138 +0,0 @@
|
|||||||
[ApplicationErr]
|
|
||||||
AppNotFound = Application %s not found
|
|
||||||
AppNotFoundForUserID = No application is found for userId: %s
|
|
||||||
GrantTypeNotSupport = Grant_type: %s is not supported in this application
|
|
||||||
HasNoProviders = This application has no providers
|
|
||||||
HasNoProvidersOfType = This application has no providers of type
|
|
||||||
InvalidID = Invalid application id
|
|
||||||
|
|
||||||
[AuthErr]
|
|
||||||
AuthStateWrong = State expected: %s, but got: %s
|
|
||||||
ChallengeMethodErr = Challenge method should be S256
|
|
||||||
CanNotUnlinkUsers = You are not the global admin, you can't unlink other users
|
|
||||||
CanNotLinkMySelf = You can't unlink yourself, you are not a member of any application
|
|
||||||
CallWebAuthnSigninBegin = Please call WebAuthnSigninBegin first
|
|
||||||
NotHuman = Turing test failed.
|
|
||||||
Unauthorized = Unauthorized operation
|
|
||||||
WrongPasswordManyTimes = WrongPasswordManyTimes
|
|
||||||
|
|
||||||
[CasErr]
|
|
||||||
ServiceDoNotMatch = Service %s and %s do not match
|
|
||||||
|
|
||||||
[EmailErr]
|
|
||||||
ExistedErr = Email already exists
|
|
||||||
EmptyErr = Email cannot be empty
|
|
||||||
EmailInvalid = Email is invalid
|
|
||||||
EmailCheckResult = Email: %s
|
|
||||||
EmptyParam = Empty parameters for emailForm: %v
|
|
||||||
InvalidReceivers = Invalid Email receivers: %s
|
|
||||||
UnableGetModifyRule = Unable to get the email modify rule.
|
|
||||||
|
|
||||||
[EnforcerErr]
|
|
||||||
SignInFirst = Please sign in first
|
|
||||||
|
|
||||||
[InitErr]
|
|
||||||
InitScoreFailed = Get init score failed, error: %%w
|
|
||||||
|
|
||||||
[LdapErr]
|
|
||||||
MultipleAccounts = Multiple accounts with same uid, please check your ldap server
|
|
||||||
PasswordWrong = Ldap user name or password incorrect
|
|
||||||
ServerExisted = Ldap server exist
|
|
||||||
|
|
||||||
[LoginErr]
|
|
||||||
AppDoNotExist = The application: %s does not exist
|
|
||||||
AppNotEnableSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support
|
|
||||||
AccountDoNotExist = The account does not exist
|
|
||||||
InvalidUserInformation = Failed to create user, user information is invalid: %s
|
|
||||||
LoginFirst = Please login first
|
|
||||||
LoginFail = Failed to login in: %s
|
|
||||||
NoPermission = You don't have the permission to do this
|
|
||||||
OldUser = The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)
|
|
||||||
ProviderCanNotSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up
|
|
||||||
SessionOutdated = Session outdated, please login again
|
|
||||||
SignOutFirst = Please sign out first before signing in
|
|
||||||
UserDoNotExist = The user: %s/%s doesn't exist
|
|
||||||
UserIsForbidden = The user is forbidden to sign in, please contact the administrator
|
|
||||||
UnknownAuthentication = Unknown authentication type (not password or provider), form = %s
|
|
||||||
UnsupportedPasswordType = unsupported password type: %s
|
|
||||||
|
|
||||||
[OrgErr]
|
|
||||||
DoNotExist = Organization does not exist
|
|
||||||
Immutable = The %s is immutable.
|
|
||||||
OnlyAdmin = Only admin can modify the %s.
|
|
||||||
UnknownModifyRule = Unknown modify rule %s.
|
|
||||||
|
|
||||||
[ParameterErr]
|
|
||||||
OrgMissingErr = Parameter organization is missing
|
|
||||||
Missing = Missing parameter
|
|
||||||
UnknownType = Unknown type
|
|
||||||
Wrong = Wrong parameter
|
|
||||||
|
|
||||||
[PhoneErr]
|
|
||||||
CodeNotSent = Code has not been sent yet!
|
|
||||||
CodeTimeOut = You should verify your code in %d min!
|
|
||||||
ExistedErr = Phone already exists
|
|
||||||
EmptyErr = Phone cannot be empty
|
|
||||||
InvalidReceivers = Invalid phone receivers: %s
|
|
||||||
NumberInvalid = Phone number is invalid
|
|
||||||
NoPrefix = %s No phone prefix
|
|
||||||
PhoneCheckResult = Phone: %s
|
|
||||||
UnableGetModifyRule = Unable to get the phone modify rule.
|
|
||||||
|
|
||||||
[ProviderErr]
|
|
||||||
CanNotBeUnlinked = This provider can't be unlinked
|
|
||||||
CategoryNotSAML = provider %s's category is not SAML
|
|
||||||
DoNotExist = the provider: %s does not exist
|
|
||||||
InvalidProvider = Invalid captcha provider.
|
|
||||||
LinkFirstErr = Please link first
|
|
||||||
ProviderNotEnabled = The provider: %s is not enabled for the application
|
|
||||||
ProviderNotSupported = The provider type: %s is not supported
|
|
||||||
ProviderNotFound = The provider: %s is not found
|
|
||||||
ProviderNotFoundForCategory = No provider for category: %s is found for application: %s
|
|
||||||
|
|
||||||
[ResourceErr]
|
|
||||||
NotAuthorized = You are not authorized to access this resource
|
|
||||||
UserIsNil = User is nil for tag: /"avatar/"
|
|
||||||
UsernameOrFilePathEmpty = Username or fullFilePath is empty: username = %s, fullFilePath = %s
|
|
||||||
|
|
||||||
[SetPasswordErr]
|
|
||||||
CanNotContainBlank = New password cannot contain blank space.
|
|
||||||
LessThanSixCharacters = New password must have at least 6 characters
|
|
||||||
|
|
||||||
[SignUpErr]
|
|
||||||
DoNotAllowSignUp = The application does not allow to sign up new account
|
|
||||||
SignOutFirst = Please sign out first before signing up
|
|
||||||
|
|
||||||
[StorageErr]
|
|
||||||
ObjectKeyNotAllowed = The objectKey: %s is not allowed
|
|
||||||
|
|
||||||
[TokenErr]
|
|
||||||
EmptyClientID = Empty clientId or clientSecret
|
|
||||||
InvalidToken = Invalid token
|
|
||||||
InvalidAppOrWrongClientSecret = Invalid application or wrong clientSecret
|
|
||||||
InvalidClientId = Invalid client_id
|
|
||||||
RedirectURIDoNotExist = Redirect URI: %s doesn't exist in the allowed Redirect URI list
|
|
||||||
|
|
||||||
[UserErr]
|
|
||||||
AffiliationBlankErr = Affiliation cannot be blank
|
|
||||||
DisplayNameBlankErr = DisplayName cannot be blank
|
|
||||||
DisplayNameInvalid = DisplayName is not valid real name
|
|
||||||
DisplayNameCanNotBeEmpty = Display name cannot be empty
|
|
||||||
DoNotExist = The user: %s doesn't exist
|
|
||||||
DoNotExistInOrg = The user: %s/%s doesn't exist
|
|
||||||
DoNotExistSignUp = the user does not exist, please sign up first
|
|
||||||
FirstNameBlankErr = FirstName cannot be blank
|
|
||||||
FailToImportUsers = Failed to import users
|
|
||||||
LastNameBlankErr = LastName cannot be blank
|
|
||||||
NameLessThanTwoCharacters = Username must have at least 2 characters
|
|
||||||
NameStartWithADigitErr = Username cannot start with a digit
|
|
||||||
NameIsEmailErr = Username cannot be an email address
|
|
||||||
NameCantainWhitSpaceErr = Username cannot contain white spaces
|
|
||||||
NameExistedErr = Username already exists
|
|
||||||
NameEmptyErr = Empty username.
|
|
||||||
NameTooLang = Username is too long (maximum is 39 characters).
|
|
||||||
NameFormatErr = The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.
|
|
||||||
PasswordLessThanSixCharacters = Password must have at least 6 characters
|
|
||||||
InvalidInformation = Invalid information
|
|
||||||
NoWebAuthnCredential = Found no credentials for this user
|
|
||||||
|
|
@ -1,138 +0,0 @@
|
|||||||
[ApplicationErr]
|
|
||||||
AppNotFound = Application %s not found
|
|
||||||
AppNotFoundForUserID = No application is found for userId: %s
|
|
||||||
GrantTypeNotSupport = Grant_type: %s is not supported in this application
|
|
||||||
HasNoProviders = This application has no providers
|
|
||||||
HasNoProvidersOfType = This application has no providers of type
|
|
||||||
InvalidID = Invalid application id
|
|
||||||
|
|
||||||
[AuthErr]
|
|
||||||
AuthStateWrong = State expected: %s, but got: %s
|
|
||||||
ChallengeMethodErr = Challenge method should be S256
|
|
||||||
CanNotUnlinkUsers = You are not the global admin, you can't unlink other users
|
|
||||||
CanNotLinkMySelf = You can't unlink yourself, you are not a member of any application
|
|
||||||
CallWebAuthnSigninBegin = Please call WebAuthnSigninBegin first
|
|
||||||
NotHuman = Turing test failed.
|
|
||||||
WrongPasswordManyTimes = You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again
|
|
||||||
Unauthorized = Unauthorized operation
|
|
||||||
|
|
||||||
[CasErr]
|
|
||||||
ServiceDoNotMatch = Service %s and %s do not match
|
|
||||||
|
|
||||||
[EmailErr]
|
|
||||||
ExistedErr = Email already exists
|
|
||||||
EmptyErr = Email cannot be empty
|
|
||||||
EmailInvalid = Email is invalid
|
|
||||||
EmailCheckResult = Email: %s
|
|
||||||
EmptyParam = Empty parameters for emailForm: %v
|
|
||||||
InvalidReceivers = Invalid Email receivers: %s
|
|
||||||
UnableGetModifyRule = Unable to get the email modify rule.
|
|
||||||
|
|
||||||
[EnforcerErr]
|
|
||||||
SignInFirst = Please sign in first
|
|
||||||
|
|
||||||
[InitErr]
|
|
||||||
InitScoreFailed = Get init score failed, error: %%w
|
|
||||||
|
|
||||||
[LdapErr]
|
|
||||||
MultipleAccounts = Multiple accounts with same uid, please check your ldap server
|
|
||||||
PasswordWrong = Ldap user name or password incorrect
|
|
||||||
ServerExisted = Ldap server exist
|
|
||||||
|
|
||||||
[LoginErr]
|
|
||||||
AppDoNotExist = The application: %s does not exist
|
|
||||||
AppNotEnableSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support
|
|
||||||
AccountDoNotExist = The account does not exist
|
|
||||||
InvalidUserInformation = Failed to create user, user information is invalid: %s
|
|
||||||
LoginFirst = Please login first
|
|
||||||
LoginFail = Failed to login in: %s
|
|
||||||
NoPermission = You don't have the permission to do this
|
|
||||||
OldUser = The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)
|
|
||||||
ProviderCanNotSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up
|
|
||||||
SessionOutdated = Session outdated, please login again
|
|
||||||
SignOutFirst = Please sign out first before signing in
|
|
||||||
UserDoNotExist = The user: %s/%s doesn't exist
|
|
||||||
UserIsForbidden = The user is forbidden to sign in, please contact the administrator
|
|
||||||
UnknownAuthentication = Unknown authentication type (not password or provider), form = %s
|
|
||||||
UnsupportedPasswordType = unsupported password type: %s
|
|
||||||
|
|
||||||
[OrgErr]
|
|
||||||
DoNotExist = Organization does not exist
|
|
||||||
Immutable = The %s is immutable.
|
|
||||||
OnlyAdmin = Only admin can modify the %s.
|
|
||||||
UnknownModifyRule = Unknown modify rule %s.
|
|
||||||
|
|
||||||
[ParameterErr]
|
|
||||||
OrgMissingErr = Parameter organization is missing
|
|
||||||
Missing = Missing parameter
|
|
||||||
UnknownType = Unknown type
|
|
||||||
Wrong = Wrong parameter
|
|
||||||
|
|
||||||
[PhoneErr]
|
|
||||||
CodeNotSent = Code has not been sent yet!
|
|
||||||
CodeTimeOut = You should verify your code in %d min!
|
|
||||||
ExistedErr = Phone already exists
|
|
||||||
EmptyErr = Phone cannot be empty
|
|
||||||
InvalidReceivers = Invalid phone receivers: %s
|
|
||||||
NumberInvalid = Phone number is invalid
|
|
||||||
NoPrefix = %s No phone prefix
|
|
||||||
PhoneCheckResult = Phone: %s
|
|
||||||
UnableGetModifyRule = Unable to get the phone modify rule.
|
|
||||||
|
|
||||||
[ProviderErr]
|
|
||||||
CanNotBeUnlinked = This provider can't be unlinked
|
|
||||||
CategoryNotSAML = provider %s's category is not SAML
|
|
||||||
DoNotExist = the provider: %s does not exist
|
|
||||||
InvalidProvider = Invalid captcha provider.
|
|
||||||
LinkFirstErr = Please link first
|
|
||||||
ProviderNotEnabled = The provider: %s is not enabled for the application
|
|
||||||
ProviderNotSupported = The provider type: %s is not supported
|
|
||||||
ProviderNotFound = The provider: %s is not found
|
|
||||||
ProviderNotFoundForCategory = No provider for category: %s is found for application: %s
|
|
||||||
|
|
||||||
[ResourceErr]
|
|
||||||
NotAuthorized = You are not authorized to access this resource
|
|
||||||
UserIsNil = User is nil for tag: /"avatar/"
|
|
||||||
UsernameOrFilePathEmpty = Username or fullFilePath is empty: username = %s, fullFilePath = %s
|
|
||||||
|
|
||||||
[SetPasswordErr]
|
|
||||||
CanNotContainBlank = New password cannot contain blank space.
|
|
||||||
LessThanSixCharacters = New password must have at least 6 characters
|
|
||||||
|
|
||||||
[SignUpErr]
|
|
||||||
DoNotAllowSignUp = The application does not allow to sign up new account
|
|
||||||
SignOutFirst = Please sign out first before signing up
|
|
||||||
|
|
||||||
[StorageErr]
|
|
||||||
ObjectKeyNotAllowed = The objectKey: %s is not allowed
|
|
||||||
|
|
||||||
[TokenErr]
|
|
||||||
EmptyClientID = Empty clientId or clientSecret
|
|
||||||
InvalidToken = Invalid token
|
|
||||||
InvalidAppOrWrongClientSecret = Invalid application or wrong clientSecret
|
|
||||||
InvalidClientId = Invalid client_id
|
|
||||||
RedirectURIDoNotExist = Redirect URI: %s doesn't exist in the allowed Redirect URI list
|
|
||||||
|
|
||||||
[UserErr]
|
|
||||||
AffiliationBlankErr = Affiliation cannot be blank
|
|
||||||
DisplayNameBlankErr = DisplayName cannot be blank
|
|
||||||
DisplayNameInvalid = DisplayName is not valid real name
|
|
||||||
DisplayNameCanNotBeEmpty = Display name cannot be empty
|
|
||||||
DoNotExist = The user: %s doesn't exist
|
|
||||||
DoNotExistInOrg = The user: %s/%s doesn't exist
|
|
||||||
DoNotExistSignUp = the user does not exist, please sign up first
|
|
||||||
FirstNameBlankErr = FirstName cannot be blank
|
|
||||||
FailToImportUsers = Failed to import users
|
|
||||||
LastNameBlankErr = LastName cannot be blank
|
|
||||||
NameLessThanTwoCharacters = Username must have at least 2 characters
|
|
||||||
NameStartWithADigitErr = Username cannot start with a digit
|
|
||||||
NameIsEmailErr = Username cannot be an email address
|
|
||||||
NameCantainWhitSpaceErr = Username cannot contain white spaces
|
|
||||||
NameExistedErr = Username already exists
|
|
||||||
NameEmptyErr = Empty username.
|
|
||||||
NameTooLang = Username is too long (maximum is 39 characters).
|
|
||||||
NameFormatErr = The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.
|
|
||||||
PasswordLessThanSixCharacters = Password must have at least 6 characters
|
|
||||||
InvalidInformation = Invalid information
|
|
||||||
NoWebAuthnCredential = Found no credentials for this user
|
|
||||||
|
|
@ -1,138 +0,0 @@
|
|||||||
[ApplicationErr]
|
|
||||||
AppNotFound = Application %s not found
|
|
||||||
AppNotFoundForUserID = No application is found for userId: %s
|
|
||||||
GrantTypeNotSupport = Grant_type: %s is not supported in this application
|
|
||||||
HasNoProviders = This application has no providers
|
|
||||||
HasNoProvidersOfType = This application has no providers of type
|
|
||||||
InvalidID = Invalid application id
|
|
||||||
|
|
||||||
[AuthErr]
|
|
||||||
AuthStateWrong = State expected: %s, but got: %s
|
|
||||||
ChallengeMethodErr = Challenge method should be S256
|
|
||||||
CanNotUnlinkUsers = You are not the global admin, you can't unlink other users
|
|
||||||
CanNotLinkMySelf = You can't unlink yourself, you are not a member of any application
|
|
||||||
CallWebAuthnSigninBegin = Please call WebAuthnSigninBegin first
|
|
||||||
NotHuman = Turing test failed.
|
|
||||||
Unauthorized = Unauthorized operation
|
|
||||||
WrongPasswordManyTimes = WrongPasswordManyTimes
|
|
||||||
|
|
||||||
[CasErr]
|
|
||||||
ServiceDoNotMatch = Service %s and %s do not match
|
|
||||||
|
|
||||||
[EmailErr]
|
|
||||||
ExistedErr = Email already exists
|
|
||||||
EmptyErr = Email cannot be empty
|
|
||||||
EmailInvalid = Email is invalid
|
|
||||||
EmailCheckResult = Email: %s
|
|
||||||
EmptyParam = Empty parameters for emailForm: %v
|
|
||||||
InvalidReceivers = Invalid Email receivers: %s
|
|
||||||
UnableGetModifyRule = Unable to get the email modify rule.
|
|
||||||
|
|
||||||
[EnforcerErr]
|
|
||||||
SignInFirst = Please sign in first
|
|
||||||
|
|
||||||
[InitErr]
|
|
||||||
InitScoreFailed = Get init score failed, error: %%w
|
|
||||||
|
|
||||||
[LdapErr]
|
|
||||||
MultipleAccounts = Multiple accounts with same uid, please check your ldap server
|
|
||||||
PasswordWrong = Ldap user name or password incorrect
|
|
||||||
ServerExisted = Ldap server exist
|
|
||||||
|
|
||||||
[LoginErr]
|
|
||||||
AppDoNotExist = The application: %s does not exist
|
|
||||||
AppNotEnableSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support
|
|
||||||
AccountDoNotExist = The account does not exist
|
|
||||||
InvalidUserInformation = Failed to create user, user information is invalid: %s
|
|
||||||
LoginFirst = Please login first
|
|
||||||
LoginFail = Failed to login in: %s
|
|
||||||
NoPermission = You don't have the permission to do this
|
|
||||||
OldUser = The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)
|
|
||||||
ProviderCanNotSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up
|
|
||||||
SessionOutdated = Session outdated, please login again
|
|
||||||
SignOutFirst = Please sign out first before signing in
|
|
||||||
UserDoNotExist = The user: %s/%s doesn't exist
|
|
||||||
UserIsForbidden = The user is forbidden to sign in, please contact the administrator
|
|
||||||
UnknownAuthentication = Unknown authentication type (not password or provider), form = %s
|
|
||||||
UnsupportedPasswordType = unsupported password type: %s
|
|
||||||
|
|
||||||
[OrgErr]
|
|
||||||
DoNotExist = Organization does not exist
|
|
||||||
Immutable = The %s is immutable.
|
|
||||||
OnlyAdmin = Only admin can modify the %s.
|
|
||||||
UnknownModifyRule = Unknown modify rule %s.
|
|
||||||
|
|
||||||
[ParameterErr]
|
|
||||||
OrgMissingErr = Parameter organization is missing
|
|
||||||
Missing = Missing parameter
|
|
||||||
UnknownType = Unknown type
|
|
||||||
Wrong = Wrong parameter
|
|
||||||
|
|
||||||
[PhoneErr]
|
|
||||||
CodeNotSent = Code has not been sent yet!
|
|
||||||
CodeTimeOut = You should verify your code in %d min!
|
|
||||||
ExistedErr = Phone already exists
|
|
||||||
EmptyErr = Phone cannot be empty
|
|
||||||
InvalidReceivers = Invalid phone receivers: %s
|
|
||||||
NumberInvalid = Phone number is invalid
|
|
||||||
NoPrefix = %s No phone prefix
|
|
||||||
PhoneCheckResult = Phone: %s
|
|
||||||
UnableGetModifyRule = Unable to get the phone modify rule.
|
|
||||||
|
|
||||||
[ProviderErr]
|
|
||||||
CanNotBeUnlinked = This provider can't be unlinked
|
|
||||||
CategoryNotSAML = provider %s's category is not SAML
|
|
||||||
DoNotExist = the provider: %s does not exist
|
|
||||||
InvalidProvider = Invalid captcha provider.
|
|
||||||
LinkFirstErr = Please link first
|
|
||||||
ProviderNotEnabled = The provider: %s is not enabled for the application
|
|
||||||
ProviderNotSupported = The provider type: %s is not supported
|
|
||||||
ProviderNotFound = The provider: %s is not found
|
|
||||||
ProviderNotFoundForCategory = No provider for category: %s is found for application: %s
|
|
||||||
|
|
||||||
[ResourceErr]
|
|
||||||
NotAuthorized = You are not authorized to access this resource
|
|
||||||
UserIsNil = User is nil for tag: /"avatar/"
|
|
||||||
UsernameOrFilePathEmpty = Username or fullFilePath is empty: username = %s, fullFilePath = %s
|
|
||||||
|
|
||||||
[SetPasswordErr]
|
|
||||||
CanNotContainBlank = New password cannot contain blank space.
|
|
||||||
LessThanSixCharacters = New password must have at least 6 characters
|
|
||||||
|
|
||||||
[SignUpErr]
|
|
||||||
DoNotAllowSignUp = The application does not allow to sign up new account
|
|
||||||
SignOutFirst = Please sign out first before signing up
|
|
||||||
|
|
||||||
[StorageErr]
|
|
||||||
ObjectKeyNotAllowed = The objectKey: %s is not allowed
|
|
||||||
|
|
||||||
[TokenErr]
|
|
||||||
EmptyClientID = Empty clientId or clientSecret
|
|
||||||
InvalidToken = Invalid token
|
|
||||||
InvalidAppOrWrongClientSecret = Invalid application or wrong clientSecret
|
|
||||||
InvalidClientId = Invalid client_id
|
|
||||||
RedirectURIDoNotExist = Redirect URI: %s doesn't exist in the allowed Redirect URI list
|
|
||||||
|
|
||||||
[UserErr]
|
|
||||||
AffiliationBlankErr = Affiliation cannot be blank
|
|
||||||
DisplayNameBlankErr = DisplayName cannot be blank
|
|
||||||
DisplayNameInvalid = DisplayName is not valid real name
|
|
||||||
DisplayNameCanNotBeEmpty = Display name cannot be empty
|
|
||||||
DoNotExist = The user: %s doesn't exist
|
|
||||||
DoNotExistInOrg = The user: %s/%s doesn't exist
|
|
||||||
DoNotExistSignUp = the user does not exist, please sign up first
|
|
||||||
FirstNameBlankErr = FirstName cannot be blank
|
|
||||||
FailToImportUsers = Failed to import users
|
|
||||||
LastNameBlankErr = LastName cannot be blank
|
|
||||||
NameLessThanTwoCharacters = Username must have at least 2 characters
|
|
||||||
NameStartWithADigitErr = Username cannot start with a digit
|
|
||||||
NameIsEmailErr = Username cannot be an email address
|
|
||||||
NameCantainWhitSpaceErr = Username cannot contain white spaces
|
|
||||||
NameExistedErr = Username already exists
|
|
||||||
NameEmptyErr = Empty username.
|
|
||||||
NameTooLang = Username is too long (maximum is 39 characters).
|
|
||||||
NameFormatErr = The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.
|
|
||||||
PasswordLessThanSixCharacters = Password must have at least 6 characters
|
|
||||||
InvalidInformation = Invalid information
|
|
||||||
NoWebAuthnCredential = Found no credentials for this user
|
|
||||||
|
|
@ -1,138 +0,0 @@
|
|||||||
[ApplicationErr]
|
|
||||||
AppNotFound = Application %s not found
|
|
||||||
AppNotFoundForUserID = No application is found for userId: %s
|
|
||||||
GrantTypeNotSupport = Grant_type: %s is not supported in this application
|
|
||||||
HasNoProviders = This application has no providers
|
|
||||||
HasNoProvidersOfType = This application has no providers of type
|
|
||||||
InvalidID = Invalid application id
|
|
||||||
|
|
||||||
[AuthErr]
|
|
||||||
AuthStateWrong = State expected: %s, but got: %s
|
|
||||||
ChallengeMethodErr = Challenge method should be S256
|
|
||||||
CanNotUnlinkUsers = You are not the global admin, you can't unlink other users
|
|
||||||
CanNotLinkMySelf = You can't unlink yourself, you are not a member of any application
|
|
||||||
CallWebAuthnSigninBegin = Please call WebAuthnSigninBegin first
|
|
||||||
NotHuman = Turing test failed.
|
|
||||||
Unauthorized = Unauthorized operation
|
|
||||||
WrongPasswordManyTimes = WrongPasswordManyTimes
|
|
||||||
|
|
||||||
[CasErr]
|
|
||||||
ServiceDoNotMatch = Service %s and %s do not match
|
|
||||||
|
|
||||||
[EmailErr]
|
|
||||||
ExistedErr = Email already exists
|
|
||||||
EmptyErr = Email cannot be empty
|
|
||||||
EmailInvalid = Email is invalid
|
|
||||||
EmailCheckResult = Email: %s
|
|
||||||
EmptyParam = Empty parameters for emailForm: %v
|
|
||||||
InvalidReceivers = Invalid Email receivers: %s
|
|
||||||
UnableGetModifyRule = Unable to get the email modify rule.
|
|
||||||
|
|
||||||
[EnforcerErr]
|
|
||||||
SignInFirst = Please sign in first
|
|
||||||
|
|
||||||
[InitErr]
|
|
||||||
InitScoreFailed = Get init score failed, error: %%w
|
|
||||||
|
|
||||||
[LdapErr]
|
|
||||||
MultipleAccounts = Multiple accounts with same uid, please check your ldap server
|
|
||||||
PasswordWrong = Ldap user name or password incorrect
|
|
||||||
ServerExisted = Ldap server exist
|
|
||||||
|
|
||||||
[LoginErr]
|
|
||||||
AppDoNotExist = The application: %s does not exist
|
|
||||||
AppNotEnableSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support
|
|
||||||
AccountDoNotExist = The account does not exist
|
|
||||||
InvalidUserInformation = Failed to create user, user information is invalid: %s
|
|
||||||
LoginFirst = Please login first
|
|
||||||
LoginFail = Failed to login in: %s
|
|
||||||
NoPermission = You don't have the permission to do this
|
|
||||||
OldUser = The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)
|
|
||||||
ProviderCanNotSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up
|
|
||||||
SessionOutdated = Session outdated, please login again
|
|
||||||
SignOutFirst = Please sign out first before signing in
|
|
||||||
UserDoNotExist = The user: %s/%s doesn't exist
|
|
||||||
UserIsForbidden = The user is forbidden to sign in, please contact the administrator
|
|
||||||
UnknownAuthentication = Unknown authentication type (not password or provider), form = %s
|
|
||||||
UnsupportedPasswordType = unsupported password type: %s
|
|
||||||
|
|
||||||
[OrgErr]
|
|
||||||
DoNotExist = Organization does not exist
|
|
||||||
Immutable = The %s is immutable.
|
|
||||||
OnlyAdmin = Only admin can modify the %s.
|
|
||||||
UnknownModifyRule = Unknown modify rule %s.
|
|
||||||
|
|
||||||
[ParameterErr]
|
|
||||||
OrgMissingErr = Parameter organization is missing
|
|
||||||
Missing = Missing parameter
|
|
||||||
UnknownType = Unknown type
|
|
||||||
Wrong = Wrong parameter
|
|
||||||
|
|
||||||
[PhoneErr]
|
|
||||||
CodeNotSent = Code has not been sent yet!
|
|
||||||
CodeTimeOut = You should verify your code in %d min!
|
|
||||||
ExistedErr = Phone already exists
|
|
||||||
EmptyErr = Phone cannot be empty
|
|
||||||
InvalidReceivers = Invalid phone receivers: %s
|
|
||||||
NumberInvalid = Phone number is invalid
|
|
||||||
NoPrefix = %s No phone prefix
|
|
||||||
PhoneCheckResult = Phone: %s
|
|
||||||
UnableGetModifyRule = Unable to get the phone modify rule.
|
|
||||||
|
|
||||||
[ProviderErr]
|
|
||||||
CanNotBeUnlinked = This provider can't be unlinked
|
|
||||||
CategoryNotSAML = provider %s's category is not SAML
|
|
||||||
DoNotExist = the provider: %s does not exist
|
|
||||||
InvalidProvider = Invalid captcha provider.
|
|
||||||
LinkFirstErr = Please link first
|
|
||||||
ProviderNotEnabled = The provider: %s is not enabled for the application
|
|
||||||
ProviderNotSupported = The provider type: %s is not supported
|
|
||||||
ProviderNotFound = The provider: %s is not found
|
|
||||||
ProviderNotFoundForCategory = No provider for category: %s is found for application: %s
|
|
||||||
|
|
||||||
[ResourceErr]
|
|
||||||
NotAuthorized = You are not authorized to access this resource
|
|
||||||
UserIsNil = User is nil for tag: /"avatar/"
|
|
||||||
UsernameOrFilePathEmpty = Username or fullFilePath is empty: username = %s, fullFilePath = %s
|
|
||||||
|
|
||||||
[SetPasswordErr]
|
|
||||||
CanNotContainBlank = New password cannot contain blank space.
|
|
||||||
LessThanSixCharacters = New password must have at least 6 characters
|
|
||||||
|
|
||||||
[SignUpErr]
|
|
||||||
DoNotAllowSignUp = The application does not allow to sign up new account
|
|
||||||
SignOutFirst = Please sign out first before signing up
|
|
||||||
|
|
||||||
[StorageErr]
|
|
||||||
ObjectKeyNotAllowed = The objectKey: %s is not allowed
|
|
||||||
|
|
||||||
[TokenErr]
|
|
||||||
EmptyClientID = Empty clientId or clientSecret
|
|
||||||
InvalidToken = Invalid token
|
|
||||||
InvalidAppOrWrongClientSecret = Invalid application or wrong clientSecret
|
|
||||||
InvalidClientId = Invalid client_id
|
|
||||||
RedirectURIDoNotExist = Redirect URI: %s doesn't exist in the allowed Redirect URI list
|
|
||||||
|
|
||||||
[UserErr]
|
|
||||||
AffiliationBlankErr = Affiliation cannot be blank
|
|
||||||
DisplayNameBlankErr = DisplayName cannot be blank
|
|
||||||
DisplayNameInvalid = DisplayName is not valid real name
|
|
||||||
DisplayNameCanNotBeEmpty = Display name cannot be empty
|
|
||||||
DoNotExist = The user: %s doesn't exist
|
|
||||||
DoNotExistInOrg = The user: %s/%s doesn't exist
|
|
||||||
DoNotExistSignUp = the user does not exist, please sign up first
|
|
||||||
FirstNameBlankErr = FirstName cannot be blank
|
|
||||||
FailToImportUsers = Failed to import users
|
|
||||||
LastNameBlankErr = LastName cannot be blank
|
|
||||||
NameLessThanTwoCharacters = Username must have at least 2 characters
|
|
||||||
NameStartWithADigitErr = Username cannot start with a digit
|
|
||||||
NameIsEmailErr = Username cannot be an email address
|
|
||||||
NameCantainWhitSpaceErr = Username cannot contain white spaces
|
|
||||||
NameExistedErr = Username already exists
|
|
||||||
NameEmptyErr = Empty username.
|
|
||||||
NameTooLang = Username is too long (maximum is 39 characters).
|
|
||||||
NameFormatErr = The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.
|
|
||||||
PasswordLessThanSixCharacters = Password must have at least 6 characters
|
|
||||||
InvalidInformation = Invalid information
|
|
||||||
NoWebAuthnCredential = Found no credentials for this user
|
|
||||||
|
|
@ -1,138 +0,0 @@
|
|||||||
[ApplicationErr]
|
|
||||||
AppNotFound = Application %s not found
|
|
||||||
AppNotFoundForUserID = No application is found for userId: %s
|
|
||||||
GrantTypeNotSupport = Grant_type: %s is not supported in this application
|
|
||||||
HasNoProviders = This application has no providers
|
|
||||||
HasNoProvidersOfType = This application has no providers of type
|
|
||||||
InvalidID = Invalid application id
|
|
||||||
|
|
||||||
[AuthErr]
|
|
||||||
AuthStateWrong = State expected: %s, but got: %s
|
|
||||||
ChallengeMethodErr = Challenge method should be S256
|
|
||||||
CanNotUnlinkUsers = You are not the global admin, you can't unlink other users
|
|
||||||
CanNotLinkMySelf = You can't unlink yourself, you are not a member of any application
|
|
||||||
CallWebAuthnSigninBegin = Please call WebAuthnSigninBegin first
|
|
||||||
NotHuman = Turing test failed.
|
|
||||||
Unauthorized = Unauthorized operation
|
|
||||||
WrongPasswordManyTimes = WrongPasswordManyTimes
|
|
||||||
|
|
||||||
[CasErr]
|
|
||||||
ServiceDoNotMatch = Service %s and %s do not match
|
|
||||||
|
|
||||||
[EmailErr]
|
|
||||||
ExistedErr = Email already exists
|
|
||||||
EmptyErr = Email cannot be empty
|
|
||||||
EmailInvalid = Email is invalid
|
|
||||||
EmailCheckResult = Email: %s
|
|
||||||
EmptyParam = Empty parameters for emailForm: %v
|
|
||||||
InvalidReceivers = Invalid Email receivers: %s
|
|
||||||
UnableGetModifyRule = Unable to get the email modify rule.
|
|
||||||
|
|
||||||
[EnforcerErr]
|
|
||||||
SignInFirst = Please sign in first
|
|
||||||
|
|
||||||
[InitErr]
|
|
||||||
InitScoreFailed = Get init score failed, error: %%w
|
|
||||||
|
|
||||||
[LdapErr]
|
|
||||||
MultipleAccounts = Multiple accounts with same uid, please check your ldap server
|
|
||||||
PasswordWrong = Ldap user name or password incorrect
|
|
||||||
ServerExisted = Ldap server exist
|
|
||||||
|
|
||||||
[LoginErr]
|
|
||||||
AppDoNotExist = The application: %s does not exist
|
|
||||||
AppNotEnableSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support
|
|
||||||
AccountDoNotExist = The account does not exist
|
|
||||||
InvalidUserInformation = Failed to create user, user information is invalid: %s
|
|
||||||
LoginFirst = Please login first
|
|
||||||
LoginFail = Failed to login in: %s
|
|
||||||
NoPermission = You don't have the permission to do this
|
|
||||||
OldUser = The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)
|
|
||||||
ProviderCanNotSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up
|
|
||||||
SessionOutdated = Session outdated, please login again
|
|
||||||
SignOutFirst = Please sign out first before signing in
|
|
||||||
UserDoNotExist = The user: %s/%s doesn't exist
|
|
||||||
UserIsForbidden = The user is forbidden to sign in, please contact the administrator
|
|
||||||
UnknownAuthentication = Unknown authentication type (not password or provider), form = %s
|
|
||||||
UnsupportedPasswordType = unsupported password type: %s
|
|
||||||
|
|
||||||
[OrgErr]
|
|
||||||
DoNotExist = Organization does not exist
|
|
||||||
Immutable = The %s is immutable.
|
|
||||||
OnlyAdmin = Only admin can modify the %s.
|
|
||||||
UnknownModifyRule = Unknown modify rule %s.
|
|
||||||
|
|
||||||
[ParameterErr]
|
|
||||||
OrgMissingErr = Parameter organization is missing
|
|
||||||
Missing = Missing parameter
|
|
||||||
UnknownType = Unknown type
|
|
||||||
Wrong = Wrong parameter
|
|
||||||
|
|
||||||
[PhoneErr]
|
|
||||||
CodeNotSent = Code has not been sent yet!
|
|
||||||
CodeTimeOut = You should verify your code in %d min!
|
|
||||||
ExistedErr = Phone already exists
|
|
||||||
EmptyErr = Phone cannot be empty
|
|
||||||
InvalidReceivers = Invalid phone receivers: %s
|
|
||||||
NumberInvalid = Phone number is invalid
|
|
||||||
NoPrefix = %s No phone prefix
|
|
||||||
PhoneCheckResult = Phone: %s
|
|
||||||
UnableGetModifyRule = Unable to get the phone modify rule.
|
|
||||||
|
|
||||||
[ProviderErr]
|
|
||||||
CanNotBeUnlinked = This provider can't be unlinked
|
|
||||||
CategoryNotSAML = provider %s's category is not SAML
|
|
||||||
DoNotExist = the provider: %s does not exist
|
|
||||||
InvalidProvider = Invalid captcha provider.
|
|
||||||
LinkFirstErr = Please link first
|
|
||||||
ProviderNotEnabled = The provider: %s is not enabled for the application
|
|
||||||
ProviderNotSupported = The provider type: %s is not supported
|
|
||||||
ProviderNotFound = The provider: %s is not found
|
|
||||||
ProviderNotFoundForCategory = No provider for category: %s is found for application: %s
|
|
||||||
|
|
||||||
[ResourceErr]
|
|
||||||
NotAuthorized = You are not authorized to access this resource
|
|
||||||
UserIsNil = User is nil for tag: /"avatar/"
|
|
||||||
UsernameOrFilePathEmpty = Username or fullFilePath is empty: username = %s, fullFilePath = %s
|
|
||||||
|
|
||||||
[SetPasswordErr]
|
|
||||||
CanNotContainBlank = New password cannot contain blank space.
|
|
||||||
LessThanSixCharacters = New password must have at least 6 characters
|
|
||||||
|
|
||||||
[SignUpErr]
|
|
||||||
DoNotAllowSignUp = The application does not allow to sign up new account
|
|
||||||
SignOutFirst = Please sign out first before signing up
|
|
||||||
|
|
||||||
[StorageErr]
|
|
||||||
ObjectKeyNotAllowed = The objectKey: %s is not allowed
|
|
||||||
|
|
||||||
[TokenErr]
|
|
||||||
EmptyClientID = Empty clientId or clientSecret
|
|
||||||
InvalidToken = Invalid token
|
|
||||||
InvalidAppOrWrongClientSecret = Invalid application or wrong clientSecret
|
|
||||||
InvalidClientId = Invalid client_id
|
|
||||||
RedirectURIDoNotExist = Redirect URI: %s doesn't exist in the allowed Redirect URI list
|
|
||||||
|
|
||||||
[UserErr]
|
|
||||||
AffiliationBlankErr = Affiliation cannot be blank
|
|
||||||
DisplayNameBlankErr = DisplayName cannot be blank
|
|
||||||
DisplayNameInvalid = DisplayName is not valid real name
|
|
||||||
DisplayNameCanNotBeEmpty = Display name cannot be empty
|
|
||||||
DoNotExist = The user: %s doesn't exist
|
|
||||||
DoNotExistInOrg = The user: %s/%s doesn't exist
|
|
||||||
DoNotExistSignUp = the user does not exist, please sign up first
|
|
||||||
FirstNameBlankErr = FirstName cannot be blank
|
|
||||||
FailToImportUsers = Failed to import users
|
|
||||||
LastNameBlankErr = LastName cannot be blank
|
|
||||||
NameLessThanTwoCharacters = Username must have at least 2 characters
|
|
||||||
NameStartWithADigitErr = Username cannot start with a digit
|
|
||||||
NameIsEmailErr = Username cannot be an email address
|
|
||||||
NameCantainWhitSpaceErr = Username cannot contain white spaces
|
|
||||||
NameExistedErr = Username already exists
|
|
||||||
NameEmptyErr = Empty username.
|
|
||||||
NameTooLang = Username is too long (maximum is 39 characters).
|
|
||||||
NameFormatErr = The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.
|
|
||||||
PasswordLessThanSixCharacters = Password must have at least 6 characters
|
|
||||||
InvalidInformation = Invalid information
|
|
||||||
NoWebAuthnCredential = Found no credentials for this user
|
|
||||||
|
|
@ -1,138 +0,0 @@
|
|||||||
[ApplicationErr]
|
|
||||||
AppNotFound = Application %s not found
|
|
||||||
AppNotFoundForUserID = No application is found for userId: %s
|
|
||||||
GrantTypeNotSupport = Grant_type: %s is not supported in this application
|
|
||||||
HasNoProviders = This application has no providers
|
|
||||||
HasNoProvidersOfType = This application has no providers of type
|
|
||||||
InvalidID = Invalid application id
|
|
||||||
|
|
||||||
[AuthErr]
|
|
||||||
AuthStateWrong = State expected: %s, but got: %s
|
|
||||||
ChallengeMethodErr = Challenge method should be S256
|
|
||||||
CanNotUnlinkUsers = You are not the global admin, you can't unlink other users
|
|
||||||
CanNotLinkMySelf = You can't unlink yourself, you are not a member of any application
|
|
||||||
CallWebAuthnSigninBegin = Please call WebAuthnSigninBegin first
|
|
||||||
NotHuman = Turing test failed.
|
|
||||||
Unauthorized = Unauthorized operation
|
|
||||||
WrongPasswordManyTimes = WrongPasswordManyTimes
|
|
||||||
|
|
||||||
[CasErr]
|
|
||||||
ServiceDoNotMatch = Service %s and %s do not match
|
|
||||||
|
|
||||||
[EmailErr]
|
|
||||||
ExistedErr = Email already exists
|
|
||||||
EmptyErr = Email cannot be empty
|
|
||||||
EmailInvalid = Email is invalid
|
|
||||||
EmailCheckResult = Email: %s
|
|
||||||
EmptyParam = Empty parameters for emailForm: %v
|
|
||||||
InvalidReceivers = Invalid Email receivers: %s
|
|
||||||
UnableGetModifyRule = Unable to get the email modify rule.
|
|
||||||
|
|
||||||
[EnforcerErr]
|
|
||||||
SignInFirst = Please sign in first
|
|
||||||
|
|
||||||
[InitErr]
|
|
||||||
InitScoreFailed = Get init score failed, error: %%w
|
|
||||||
|
|
||||||
[LdapErr]
|
|
||||||
MultipleAccounts = Multiple accounts with same uid, please check your ldap server
|
|
||||||
PasswordWrong = Ldap user name or password incorrect
|
|
||||||
ServerExisted = Ldap server exist
|
|
||||||
|
|
||||||
[LoginErr]
|
|
||||||
AppDoNotExist = The application: %s does not exist
|
|
||||||
AppNotEnableSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support
|
|
||||||
AccountDoNotExist = The account does not exist
|
|
||||||
InvalidUserInformation = Failed to create user, user information is invalid: %s
|
|
||||||
LoginFirst = Please login first
|
|
||||||
LoginFail = Failed to login in: %s
|
|
||||||
NoPermission = You don't have the permission to do this
|
|
||||||
OldUser = The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)
|
|
||||||
ProviderCanNotSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up
|
|
||||||
SessionOutdated = Session outdated, please login again
|
|
||||||
SignOutFirst = Please sign out first before signing in
|
|
||||||
UserDoNotExist = The user: %s/%s doesn't exist
|
|
||||||
UserIsForbidden = The user is forbidden to sign in, please contact the administrator
|
|
||||||
UnknownAuthentication = Unknown authentication type (not password or provider), form = %s
|
|
||||||
UnsupportedPasswordType = unsupported password type: %s
|
|
||||||
|
|
||||||
[OrgErr]
|
|
||||||
DoNotExist = Organization does not exist
|
|
||||||
Immutable = The %s is immutable.
|
|
||||||
OnlyAdmin = Only admin can modify the %s.
|
|
||||||
UnknownModifyRule = Unknown modify rule %s.
|
|
||||||
|
|
||||||
[ParameterErr]
|
|
||||||
OrgMissingErr = Parameter organization is missing
|
|
||||||
Missing = Missing parameter
|
|
||||||
UnknownType = Unknown type
|
|
||||||
Wrong = Wrong parameter
|
|
||||||
|
|
||||||
[PhoneErr]
|
|
||||||
CodeNotSent = Code has not been sent yet!
|
|
||||||
CodeTimeOut = You should verify your code in %d min!
|
|
||||||
ExistedErr = Phone already exists
|
|
||||||
EmptyErr = Phone cannot be empty
|
|
||||||
InvalidReceivers = Invalid phone receivers: %s
|
|
||||||
NumberInvalid = Phone number is invalid
|
|
||||||
NoPrefix = %s No phone prefix
|
|
||||||
PhoneCheckResult = Phone: %s
|
|
||||||
UnableGetModifyRule = Unable to get the phone modify rule.
|
|
||||||
|
|
||||||
[ProviderErr]
|
|
||||||
CanNotBeUnlinked = This provider can't be unlinked
|
|
||||||
CategoryNotSAML = provider %s's category is not SAML
|
|
||||||
DoNotExist = the provider: %s does not exist
|
|
||||||
InvalidProvider = Invalid captcha provider.
|
|
||||||
LinkFirstErr = Please link first
|
|
||||||
ProviderNotEnabled = The provider: %s is not enabled for the application
|
|
||||||
ProviderNotSupported = The provider type: %s is not supported
|
|
||||||
ProviderNotFound = The provider: %s is not found
|
|
||||||
ProviderNotFoundForCategory = No provider for category: %s is found for application: %s
|
|
||||||
|
|
||||||
[ResourceErr]
|
|
||||||
NotAuthorized = You are not authorized to access this resource
|
|
||||||
UserIsNil = User is nil for tag: /"avatar/"
|
|
||||||
UsernameOrFilePathEmpty = Username or fullFilePath is empty: username = %s, fullFilePath = %s
|
|
||||||
|
|
||||||
[SetPasswordErr]
|
|
||||||
CanNotContainBlank = New password cannot contain blank space.
|
|
||||||
LessThanSixCharacters = New password must have at least 6 characters
|
|
||||||
|
|
||||||
[SignUpErr]
|
|
||||||
DoNotAllowSignUp = The application does not allow to sign up new account
|
|
||||||
SignOutFirst = Please sign out first before signing up
|
|
||||||
|
|
||||||
[StorageErr]
|
|
||||||
ObjectKeyNotAllowed = The objectKey: %s is not allowed
|
|
||||||
|
|
||||||
[TokenErr]
|
|
||||||
EmptyClientID = Empty clientId or clientSecret
|
|
||||||
InvalidToken = Invalid token
|
|
||||||
InvalidAppOrWrongClientSecret = Invalid application or wrong clientSecret
|
|
||||||
InvalidClientId = Invalid client_id
|
|
||||||
RedirectURIDoNotExist = Redirect URI: %s doesn't exist in the allowed Redirect URI list
|
|
||||||
|
|
||||||
[UserErr]
|
|
||||||
AffiliationBlankErr = Affiliation cannot be blank
|
|
||||||
DisplayNameBlankErr = DisplayName cannot be blank
|
|
||||||
DisplayNameInvalid = DisplayName is not valid real name
|
|
||||||
DisplayNameCanNotBeEmpty = Display name cannot be empty
|
|
||||||
DoNotExist = The user: %s doesn't exist
|
|
||||||
DoNotExistInOrg = The user: %s/%s doesn't exist
|
|
||||||
DoNotExistSignUp = the user does not exist, please sign up first
|
|
||||||
FirstNameBlankErr = FirstName cannot be blank
|
|
||||||
FailToImportUsers = Failed to import users
|
|
||||||
LastNameBlankErr = LastName cannot be blank
|
|
||||||
NameLessThanTwoCharacters = Username must have at least 2 characters
|
|
||||||
NameStartWithADigitErr = Username cannot start with a digit
|
|
||||||
NameIsEmailErr = Username cannot be an email address
|
|
||||||
NameCantainWhitSpaceErr = Username cannot contain white spaces
|
|
||||||
NameExistedErr = Username already exists
|
|
||||||
NameEmptyErr = Empty username.
|
|
||||||
NameTooLang = Username is too long (maximum is 39 characters).
|
|
||||||
NameFormatErr = The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.
|
|
||||||
PasswordLessThanSixCharacters = Password must have at least 6 characters
|
|
||||||
InvalidInformation = Invalid information
|
|
||||||
NoWebAuthnCredential = Found no credentials for this user
|
|
||||||
|
|
@ -1,138 +0,0 @@
|
|||||||
[ApplicationErr]
|
|
||||||
AppNotFound = Application %s not found
|
|
||||||
AppNotFoundForUserID = No application is found for userId: %s
|
|
||||||
GrantTypeNotSupport = Grant_type: %s is not supported in this application
|
|
||||||
HasNoProviders = This application has no providers
|
|
||||||
HasNoProvidersOfType = This application has no providers of type
|
|
||||||
InvalidID = Invalid application id
|
|
||||||
|
|
||||||
[AuthErr]
|
|
||||||
AuthStateWrong = State expected: %s, but got: %s
|
|
||||||
ChallengeMethodErr = Challenge method should be S256
|
|
||||||
CanNotUnlinkUsers = You are not the global admin, you can't unlink other users
|
|
||||||
CanNotLinkMySelf = You can't unlink yourself, you are not a member of any application
|
|
||||||
CallWebAuthnSigninBegin = Please call WebAuthnSigninBegin first
|
|
||||||
NotHuman = Turing test failed.
|
|
||||||
Unauthorized = Unauthorized operation
|
|
||||||
WrongPasswordManyTimes = WrongPasswordManyTimes
|
|
||||||
|
|
||||||
[CasErr]
|
|
||||||
ServiceDoNotMatch = Service %s and %s do not match
|
|
||||||
|
|
||||||
[EmailErr]
|
|
||||||
ExistedErr = Email already exists
|
|
||||||
EmptyErr = Email cannot be empty
|
|
||||||
EmailInvalid = Email is invalid
|
|
||||||
EmailCheckResult = Email: %s
|
|
||||||
EmptyParam = Empty parameters for emailForm: %v
|
|
||||||
InvalidReceivers = Invalid Email receivers: %s
|
|
||||||
UnableGetModifyRule = Unable to get the email modify rule.
|
|
||||||
|
|
||||||
[EnforcerErr]
|
|
||||||
SignInFirst = Please sign in first
|
|
||||||
|
|
||||||
[InitErr]
|
|
||||||
InitScoreFailed = Get init score failed, error: %%w
|
|
||||||
|
|
||||||
[LdapErr]
|
|
||||||
MultipleAccounts = Multiple accounts with same uid, please check your ldap server
|
|
||||||
PasswordWrong = Ldap user name or password incorrect
|
|
||||||
ServerExisted = Ldap server exist
|
|
||||||
|
|
||||||
[LoginErr]
|
|
||||||
AppDoNotExist = The application: %s does not exist
|
|
||||||
AppNotEnableSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support
|
|
||||||
AccountDoNotExist = The account does not exist
|
|
||||||
InvalidUserInformation = Failed to create user, user information is invalid: %s
|
|
||||||
LoginFirst = Please login first
|
|
||||||
LoginFail = Failed to login in: %s
|
|
||||||
NoPermission = You don't have the permission to do this
|
|
||||||
OldUser = The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)
|
|
||||||
ProviderCanNotSignUp = The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up
|
|
||||||
SessionOutdated = Session outdated, please login again
|
|
||||||
SignOutFirst = Please sign out first before signing in
|
|
||||||
UserDoNotExist = The user: %s/%s doesn't exist
|
|
||||||
UserIsForbidden = The user is forbidden to sign in, please contact the administrator
|
|
||||||
UnknownAuthentication = Unknown authentication type (not password or provider), form = %s
|
|
||||||
UnsupportedPasswordType = unsupported password type: %s
|
|
||||||
|
|
||||||
[OrgErr]
|
|
||||||
DoNotExist = Organization does not exist
|
|
||||||
Immutable = The %s is immutable.
|
|
||||||
OnlyAdmin = Only admin can modify the %s.
|
|
||||||
UnknownModifyRule = Unknown modify rule %s.
|
|
||||||
|
|
||||||
[ParameterErr]
|
|
||||||
OrgMissingErr = Parameter organization is missing
|
|
||||||
Missing = Missing parameter
|
|
||||||
UnknownType = Unknown type
|
|
||||||
Wrong = Wrong parameter
|
|
||||||
|
|
||||||
[PhoneErr]
|
|
||||||
CodeNotSent = Code has not been sent yet!
|
|
||||||
CodeTimeOut = You should verify your code in %d min!
|
|
||||||
ExistedErr = Phone already exists
|
|
||||||
EmptyErr = Phone cannot be empty
|
|
||||||
InvalidReceivers = Invalid phone receivers: %s
|
|
||||||
NumberInvalid = Phone number is invalid
|
|
||||||
NoPrefix = %s No phone prefix
|
|
||||||
PhoneCheckResult = Phone: %s
|
|
||||||
UnableGetModifyRule = Unable to get the phone modify rule.
|
|
||||||
|
|
||||||
[ProviderErr]
|
|
||||||
CanNotBeUnlinked = This provider can't be unlinked
|
|
||||||
CategoryNotSAML = provider %s's category is not SAML
|
|
||||||
DoNotExist = the provider: %s does not exist
|
|
||||||
InvalidProvider = Invalid captcha provider.
|
|
||||||
LinkFirstErr = Please link first
|
|
||||||
ProviderNotEnabled = The provider: %s is not enabled for the application
|
|
||||||
ProviderNotSupported = The provider type: %s is not supported
|
|
||||||
ProviderNotFound = The provider: %s is not found
|
|
||||||
ProviderNotFoundForCategory = No provider for category: %s is found for application: %s
|
|
||||||
|
|
||||||
[ResourceErr]
|
|
||||||
NotAuthorized = You are not authorized to access this resource
|
|
||||||
UserIsNil = User is nil for tag: /"avatar/"
|
|
||||||
UsernameOrFilePathEmpty = Username or fullFilePath is empty: username = %s, fullFilePath = %s
|
|
||||||
|
|
||||||
[SetPasswordErr]
|
|
||||||
CanNotContainBlank = New password cannot contain blank space.
|
|
||||||
LessThanSixCharacters = New password must have at least 6 characters
|
|
||||||
|
|
||||||
[SignUpErr]
|
|
||||||
DoNotAllowSignUp = The application does not allow to sign up new account
|
|
||||||
SignOutFirst = Please sign out first before signing up
|
|
||||||
|
|
||||||
[StorageErr]
|
|
||||||
ObjectKeyNotAllowed = The objectKey: %s is not allowed
|
|
||||||
|
|
||||||
[TokenErr]
|
|
||||||
EmptyClientID = Empty clientId or clientSecret
|
|
||||||
InvalidToken = Invalid token
|
|
||||||
InvalidAppOrWrongClientSecret = Invalid application or wrong clientSecret
|
|
||||||
InvalidClientId = Invalid client_id
|
|
||||||
RedirectURIDoNotExist = Redirect URI: %s doesn't exist in the allowed Redirect URI list
|
|
||||||
|
|
||||||
[UserErr]
|
|
||||||
AffiliationBlankErr = Affiliation cannot be blank
|
|
||||||
DisplayNameBlankErr = DisplayName cannot be blank
|
|
||||||
DisplayNameInvalid = DisplayName is not valid real name
|
|
||||||
DisplayNameCanNotBeEmpty = Display name cannot be empty
|
|
||||||
DoNotExist = The user: %s doesn't exist
|
|
||||||
DoNotExistInOrg = The user: %s/%s doesn't exist
|
|
||||||
DoNotExistSignUp = the user does not exist, please sign up first
|
|
||||||
FirstNameBlankErr = FirstName cannot be blank
|
|
||||||
FailToImportUsers = Failed to import users
|
|
||||||
LastNameBlankErr = LastName cannot be blank
|
|
||||||
NameLessThanTwoCharacters = Username must have at least 2 characters
|
|
||||||
NameStartWithADigitErr = Username cannot start with a digit
|
|
||||||
NameIsEmailErr = Username cannot be an email address
|
|
||||||
NameCantainWhitSpaceErr = Username cannot contain white spaces
|
|
||||||
NameExistedErr = Username already exists
|
|
||||||
NameEmptyErr = Empty username.
|
|
||||||
NameTooLang = Username is too long (maximum is 39 characters).
|
|
||||||
NameFormatErr = The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.
|
|
||||||
PasswordLessThanSixCharacters = Password must have at least 6 characters
|
|
||||||
InvalidInformation = Invalid information
|
|
||||||
NoWebAuthnCredential = Found no credentials for this user
|
|
||||||
|
|
@ -1,138 +0,0 @@
|
|||||||
[ApplicationErr]
|
|
||||||
AppNotFound = 应用 %s 未找到
|
|
||||||
AppNotFoundForUserID = 找不到该用户的应用程序 %s
|
|
||||||
GrantTypeNotSupport = 此应用中不支持此授权类型
|
|
||||||
HasNoProviders = 该应用无提供商
|
|
||||||
HasNoProvidersOfType = 应用没有该类型的提供商
|
|
||||||
InvalidID = 无效的Application ID
|
|
||||||
|
|
||||||
[AuthErr]
|
|
||||||
AuthStateWrong = 期望状态位: %s, 实际状态为: %s
|
|
||||||
ChallengeMethodErr = Challenge 方法应该为 S256
|
|
||||||
CanNotUnlinkUsers = 您不是全局管理员,无法取消链接其他用户
|
|
||||||
CanNotLinkMySelf = 您无法取消链接,您不是任何应用程序的成员
|
|
||||||
CallWebAuthnSigninBegin = 请先调用WebAuthnSigninBegin
|
|
||||||
NotHuman = 真人验证失败
|
|
||||||
Unauthorized = 未授权的操作
|
|
||||||
WrongPasswordManyTimes = 输入密码错误次数已达上限,请在 %d 分 %d 秒后重试
|
|
||||||
|
|
||||||
[CasErr]
|
|
||||||
ServiceDoNotMatch = 服务 %s 与 %s 不匹配
|
|
||||||
|
|
||||||
[EmailErr]
|
|
||||||
ExistedErr = 该邮箱已存在
|
|
||||||
EmptyErr = 邮箱不可为空
|
|
||||||
EmailInvalid = 无效邮箱
|
|
||||||
EmailCheckResult = Email: %s
|
|
||||||
EmptyParam = 邮件参数为空: %v
|
|
||||||
InvalidReceivers = 无效的邮箱接收者: %s
|
|
||||||
UnableGetModifyRule = 无法得到Email修改规则
|
|
||||||
|
|
||||||
[EnforcerErr]
|
|
||||||
SignInFirst = 请先登录
|
|
||||||
|
|
||||||
[InitErr]
|
|
||||||
InitScoreFailed = 初始化分数失败: %w
|
|
||||||
|
|
||||||
[LdapErr]
|
|
||||||
MultipleAccounts = 多个帐户具有相同的uid,请检查您的 ldap 服务器
|
|
||||||
PasswordWrong = Ldap密码错误
|
|
||||||
ServerExisted = Ldap服务器已存在
|
|
||||||
|
|
||||||
[LoginErr]
|
|
||||||
AppDoNotExist = 应用不存在: %s
|
|
||||||
AppNotEnableSignUp = 提供商账户: %s 与用户名: %s (%s) 不存在且 不允许注册新账户, 请联系IT支持
|
|
||||||
AccountDoNotExist = 账户不存在
|
|
||||||
InvalidUserInformation = 创建用户失败,用户信息无效: %%s
|
|
||||||
LoginFirst = 请先登录
|
|
||||||
LoginFail = 无法登录: %s
|
|
||||||
NoPermission = 您没有权限执行此操作
|
|
||||||
OldUser = 提供商账户: %s 与用户名: %s (%s) 已经与其他账户绑定: %s (%s)
|
|
||||||
ProviderCanNotSignUp = 提供商账户: %s 与用户名: %s (%s) 不存在且 不允许通过 %s 注册新账户, 请使用其他方式注册
|
|
||||||
SignOutFirst = 请在登录前登出
|
|
||||||
SessionOutdated = Session已过期,请重新登陆
|
|
||||||
UserDoNotExist = 用户不存在: %s/%s
|
|
||||||
UserIsForbidden = 该用户被禁止登陆,请联系管理员
|
|
||||||
UnknownAuthentication = 未知的认证类型 (非密码或提供商认证), form = %s
|
|
||||||
UnsupportedPasswordType = 不支持此密码类型
|
|
||||||
|
|
||||||
[OrgErr]
|
|
||||||
DoNotExist = 组织不存在
|
|
||||||
Immutable = %s是不可变的
|
|
||||||
OnlyAdmin = 只有管理员用户有此权限
|
|
||||||
UnknownModifyRule = 未知的修改规则
|
|
||||||
|
|
||||||
[ParameterErr]
|
|
||||||
Missing = 参数丢失
|
|
||||||
OrgMissingErr = Organization参数丢失
|
|
||||||
UnknownType = 未知类型
|
|
||||||
Wrong = 参数错误
|
|
||||||
|
|
||||||
[PhoneErr]
|
|
||||||
CodeNotSent = 验证码还未发送
|
|
||||||
CodeTimeOut = 验证码过期
|
|
||||||
ExistedErr = 该电话已存在
|
|
||||||
EmptyErr = 电话不可为空
|
|
||||||
InvalidReceivers = 无效的电话接收者: %s
|
|
||||||
NumberInvalid = 无效电话
|
|
||||||
PhoneCheckResult = 电话: %s
|
|
||||||
UnableGetModifyRule = 无法得到电话修改规则
|
|
||||||
NoPrefix = %s 无此电话前缀
|
|
||||||
|
|
||||||
[ProviderErr]
|
|
||||||
CanNotBeUnlinked = 该提供商不可被链接
|
|
||||||
InvalidProvider = 无效的验证码提供商
|
|
||||||
LinkFirstErr = 请先绑定
|
|
||||||
ProviderNotEnabled = 提供商: %s 未被启用
|
|
||||||
ProviderNotSupported = 不支持该类型的提供商: %s
|
|
||||||
ProviderNotFound = 该提供商未找到: %s
|
|
||||||
ProviderNotFoundForCategory = 该类型的提供商: %s 在应用中未找到: %s
|
|
||||||
DoNotExist = 提供商: %s 不存在
|
|
||||||
CategoryNotSAML = 提供商 %s类型不是SAML
|
|
||||||
|
|
||||||
[ResourceErr]
|
|
||||||
NotAuthorized = 您无权获取此资源
|
|
||||||
UserIsNil = 用户头像标签为空
|
|
||||||
UsernameOrFilePathEmpty = username或FilePath为空: username = %s, fullFilePath = %s
|
|
||||||
|
|
||||||
[SetPasswordErr]
|
|
||||||
CanNotContainBlank = 新密码不可以包含空客
|
|
||||||
LessThanSixCharacters = 新密码至少为6位
|
|
||||||
|
|
||||||
[SignUpErr]
|
|
||||||
DoNotAllowSignUp = 该应用不允许注册新账户
|
|
||||||
SignOutFirst = 请在登陆前登出
|
|
||||||
|
|
||||||
[TokenErr]
|
|
||||||
EmptyClientID = clientId或clientSecret为空
|
|
||||||
InvalidAppOrWrongClientSecret = 无效应用或错误的clientSecret
|
|
||||||
InvalidToken = 无效token
|
|
||||||
InvalidClientId = 无效的ClientId
|
|
||||||
RedirectURIDoNotExist = 重定向 URI:%s 在可列表中未找到
|
|
||||||
|
|
||||||
[UserErr]
|
|
||||||
AffiliationBlankErr = 联系方式不可为空
|
|
||||||
DisplayNameBlankErr = 展示名称不可为空
|
|
||||||
DisplayNameInvalid = 展示名称无效
|
|
||||||
DisplayNameCanNotBeEmpty = 展示名称不可为空
|
|
||||||
DoNotExist = 用户不存在: %s
|
|
||||||
DoNotExistInOrg = 用户不存在: %s/%s
|
|
||||||
FirstNameBlankErr = 名不可以为空
|
|
||||||
FailToImportUsers = 导入用户失败
|
|
||||||
LastNameBlankErr = 姓不可以为空
|
|
||||||
NameLessThanTwoCharacters = 用户名至少要有2个字符
|
|
||||||
NameStartWithADigitErr = 用户名禁止使用数字作为第一个字符
|
|
||||||
NameIsEmailErr = 用户名不可以是邮箱地址
|
|
||||||
NameCantainWhitSpaceErr = 用户名不可以包含空格
|
|
||||||
NameExistedErr = 用户名已存在
|
|
||||||
NameEmptyErr = 用户名不可为空
|
|
||||||
NameTooLang = 用户名过长(最大长度为39个字符)
|
|
||||||
NameFormatErr = 用户名只能包含字母数字字符、下划线或连字符,不能有连续的连字符或下划线,也不能以连字符或下划线开头或结尾
|
|
||||||
PasswordLessThanSixCharacters = 密码至少为6字符
|
|
||||||
DoNotExistSignUp = 用户不存在,请先注册
|
|
||||||
InvalidInformation = 无效信息
|
|
||||||
NoWebAuthnCredential = 该用户没有WebAuthn凭据
|
|
||||||
|
|
||||||
[StorageErr]
|
|
||||||
ObjectKeyNotAllowed = object key :%s 不被允许
|
|
||||||
|
|
172
i18n/locales/de/data.json
Normal file
172
i18n/locales/de/data.json
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
{
|
||||||
|
"account": {
|
||||||
|
"Email: %s": "Email: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid information": "Invalid information",
|
||||||
|
"Phone: %s": "Phone: %s",
|
||||||
|
"Please sign out first before signing up": "Please sign out first before signing up",
|
||||||
|
"The application does not allow to sign up new account": "The application does not allow to sign up new account"
|
||||||
|
},
|
||||||
|
"application": {
|
||||||
|
"Parameter organization is missing": "Parameter organization is missing",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"%s No phone prefix": "%s No phone prefix",
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
|
||||||
|
"Failed to login in: %s": "Failed to login in: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid token": "Invalid token",
|
||||||
|
"Please sign out first before signing in": "Please sign out first before signing in",
|
||||||
|
"State expected: %s, but got: %s": "State expected: %s, but got: %s",
|
||||||
|
"The account does not exist": "The account does not exist",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support",
|
||||||
|
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)",
|
||||||
|
"The application: %s does not exist": "The application: %s does not exist",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported",
|
||||||
|
"The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unauthorized operation": "Unauthorized operation",
|
||||||
|
"Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s"
|
||||||
|
},
|
||||||
|
"cas": {
|
||||||
|
"Service %s and %s do not match": "Service %s and %s do not match"
|
||||||
|
},
|
||||||
|
"check": {
|
||||||
|
"Affiliation cannot be blank": "Affiliation cannot be blank",
|
||||||
|
"DisplayName cannot be blank": "DisplayName cannot be blank",
|
||||||
|
"DisplayName is not valid real name": "DisplayName is not valid real name",
|
||||||
|
"Email already exists": "Email already exists",
|
||||||
|
"Email cannot be empty": "Email cannot be empty",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Empty username.": "Empty username.",
|
||||||
|
"FirstName cannot be blank": "FirstName cannot be blank",
|
||||||
|
"LastName cannot be blank": "LastName cannot be blank",
|
||||||
|
"Ldap user name or password incorrect": "Ldap user name or password incorrect",
|
||||||
|
"Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Password must have at least 6 characters": "Password must have at least 6 characters",
|
||||||
|
"Phone already exists": "Phone already exists",
|
||||||
|
"Phone cannot be empty": "Phone cannot be empty",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Session outdated, please login again": "Session outdated, please login again",
|
||||||
|
"The user doesn't exist": "The user doesn't exist",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist",
|
||||||
|
"The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.": "The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.",
|
||||||
|
"Username already exists": "Username already exists",
|
||||||
|
"Username cannot be an email address": "Username cannot be an email address",
|
||||||
|
"Username cannot contain white spaces": "Username cannot contain white spaces",
|
||||||
|
"Username cannot start with a digit": "Username cannot start with a digit",
|
||||||
|
"Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
|
||||||
|
"Username must have at least 2 characters": "Username must have at least 2 characters",
|
||||||
|
"You don't have the permission to do this": "You don't have the permission to do this",
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again": "You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again",
|
||||||
|
"unsupported password type: %s": "unsupported password type: %s"
|
||||||
|
},
|
||||||
|
"check_util": {
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes and try again": "You have entered the wrong password too many times, please wait for %d minutes and try again",
|
||||||
|
"password is incorrect, you have %d remaining chances": "password is incorrect, you have %d remaining chances"
|
||||||
|
},
|
||||||
|
"enforcer": {
|
||||||
|
"Please sign in first": "Please sign in first"
|
||||||
|
},
|
||||||
|
"ldap": {
|
||||||
|
"Ldap server exist": "Ldap server exist",
|
||||||
|
"Missing parameter": "Missing parameter"
|
||||||
|
},
|
||||||
|
"link": {
|
||||||
|
"Please link first": "Please link first",
|
||||||
|
"This application has no providers": "This application has no providers",
|
||||||
|
"This application has no providers of type": "This application has no providers of type",
|
||||||
|
"This provider can't be unlinked": "This provider can't be unlinked",
|
||||||
|
"You are not the global admin, you can't unlink other users": "You are not the global admin, you can't unlink other users",
|
||||||
|
"You can't unlink yourself, you are not a member of any application": "You can't unlink yourself, you are not a member of any application"
|
||||||
|
},
|
||||||
|
"organization": {
|
||||||
|
"Only admin can modify the %s.": "Only admin can modify the %s.",
|
||||||
|
"The %s is immutable.": "The %s is immutable.",
|
||||||
|
"Unknown modify rule %s.": "Unknown modify rule %s."
|
||||||
|
},
|
||||||
|
"product": {
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"provider": {
|
||||||
|
"Invalid application id": "Invalid application id",
|
||||||
|
"the provider: %s does not exist": "the provider: %s does not exist"
|
||||||
|
},
|
||||||
|
"resource": {
|
||||||
|
"User is nil for tag: avatar": "User is nil for tag: avatar",
|
||||||
|
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
|
||||||
|
},
|
||||||
|
"saml": {
|
||||||
|
"Application %s not found": "Application %s not found"
|
||||||
|
},
|
||||||
|
"saml_sp": {
|
||||||
|
"provider %s's category is not SAML": "provider %s's category is not SAML"
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
|
||||||
|
"Invalid Email receivers: %s": "Invalid Email receivers: %s",
|
||||||
|
"Invalid phone receivers: %s": "Invalid phone receivers: %s"
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported"
|
||||||
|
},
|
||||||
|
"system_info": {
|
||||||
|
"You are not authorized to access this resource": "You are not authorized to access this resource"
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Empty clientId or clientSecret": "Empty clientId or clientSecret",
|
||||||
|
"Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
|
||||||
|
"Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
|
||||||
|
"Invalid client_id": "Invalid client_id",
|
||||||
|
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s doesn't exist in the allowed Redirect URI list"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"Display name cannot be empty": "Display name cannot be empty",
|
||||||
|
"New password cannot contain blank space.": "New password cannot contain blank space.",
|
||||||
|
"New password must have at least 6 characters": "New password must have at least 6 characters",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
},
|
||||||
|
"user_upload": {
|
||||||
|
"Failed to import users": "Failed to import users"
|
||||||
|
},
|
||||||
|
"util": {
|
||||||
|
"No application is found for userId: %s": "No application is found for userId: %s",
|
||||||
|
"No provider for category: %s is found for application: %s": "No provider for category: %s is found for application: %s",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The provider: %s is not found": "The provider: %s is not found",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"verification": {
|
||||||
|
"Code has not been sent yet!": "Code has not been sent yet!",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Invalid captcha provider.": "Invalid captcha provider.",
|
||||||
|
"Missing parameter": "Missing parameter",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unable to get the email modify rule.": "Unable to get the email modify rule.",
|
||||||
|
"Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
|
||||||
|
"Unknown type": "Unknown type",
|
||||||
|
"Wrong parameter": "Wrong parameter",
|
||||||
|
"You should verify your code in %d min!": "You should verify your code in %d min!",
|
||||||
|
"the user does not exist, please sign up first": "the user does not exist, please sign up first"
|
||||||
|
},
|
||||||
|
"webauthn": {
|
||||||
|
"Found no credentials for this user": "Found no credentials for this user",
|
||||||
|
"Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
}
|
||||||
|
}
|
172
i18n/locales/en/data.json
Normal file
172
i18n/locales/en/data.json
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
{
|
||||||
|
"account": {
|
||||||
|
"Email: %s": "Email: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid information": "Invalid information",
|
||||||
|
"Phone: %s": "Phone: %s",
|
||||||
|
"Please sign out first before signing up": "Please sign out first before signing up",
|
||||||
|
"The application does not allow to sign up new account": "The application does not allow to sign up new account"
|
||||||
|
},
|
||||||
|
"application": {
|
||||||
|
"Parameter organization is missing": "Parameter organization is missing",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"%s No phone prefix": "%s No phone prefix",
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
|
||||||
|
"Failed to login in: %s": "Failed to login in: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid token": "Invalid token",
|
||||||
|
"Please sign out first before signing in": "Please sign out first before signing in",
|
||||||
|
"State expected: %s, but got: %s": "State expected: %s, but got: %s",
|
||||||
|
"The account does not exist": "The account does not exist",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support",
|
||||||
|
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)",
|
||||||
|
"The application: %s does not exist": "The application: %s does not exist",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported",
|
||||||
|
"The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unauthorized operation": "Unauthorized operation",
|
||||||
|
"Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s"
|
||||||
|
},
|
||||||
|
"cas": {
|
||||||
|
"Service %s and %s do not match": "Service %s and %s do not match"
|
||||||
|
},
|
||||||
|
"check": {
|
||||||
|
"Affiliation cannot be blank": "Affiliation cannot be blank",
|
||||||
|
"DisplayName cannot be blank": "DisplayName cannot be blank",
|
||||||
|
"DisplayName is not valid real name": "DisplayName is not valid real name",
|
||||||
|
"Email already exists": "Email already exists",
|
||||||
|
"Email cannot be empty": "Email cannot be empty",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Empty username.": "Empty username.",
|
||||||
|
"FirstName cannot be blank": "FirstName cannot be blank",
|
||||||
|
"LastName cannot be blank": "LastName cannot be blank",
|
||||||
|
"Ldap user name or password incorrect": "Ldap user name or password incorrect",
|
||||||
|
"Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Password must have at least 6 characters": "Password must have at least 6 characters",
|
||||||
|
"Phone already exists": "Phone already exists",
|
||||||
|
"Phone cannot be empty": "Phone cannot be empty",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Session outdated, please login again": "Session outdated, please login again",
|
||||||
|
"The user doesn't exist": "The user doesn't exist",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist",
|
||||||
|
"The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.": "The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.",
|
||||||
|
"Username already exists": "Username already exists",
|
||||||
|
"Username cannot be an email address": "Username cannot be an email address",
|
||||||
|
"Username cannot contain white spaces": "Username cannot contain white spaces",
|
||||||
|
"Username cannot start with a digit": "Username cannot start with a digit",
|
||||||
|
"Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
|
||||||
|
"Username must have at least 2 characters": "Username must have at least 2 characters",
|
||||||
|
"You don't have the permission to do this": "You don't have the permission to do this",
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again": "You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again",
|
||||||
|
"unsupported password type: %s": "unsupported password type: %s"
|
||||||
|
},
|
||||||
|
"check_util": {
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes and try again": "You have entered the wrong password too many times, please wait for %d minutes and try again",
|
||||||
|
"password is incorrect, you have %d remaining chances": "password is incorrect, you have %d remaining chances"
|
||||||
|
},
|
||||||
|
"enforcer": {
|
||||||
|
"Please sign in first": "Please sign in first"
|
||||||
|
},
|
||||||
|
"ldap": {
|
||||||
|
"Ldap server exist": "Ldap server exist",
|
||||||
|
"Missing parameter": "Missing parameter"
|
||||||
|
},
|
||||||
|
"link": {
|
||||||
|
"Please link first": "Please link first",
|
||||||
|
"This application has no providers": "This application has no providers",
|
||||||
|
"This application has no providers of type": "This application has no providers of type",
|
||||||
|
"This provider can't be unlinked": "This provider can't be unlinked",
|
||||||
|
"You are not the global admin, you can't unlink other users": "You are not the global admin, you can't unlink other users",
|
||||||
|
"You can't unlink yourself, you are not a member of any application": "You can't unlink yourself, you are not a member of any application"
|
||||||
|
},
|
||||||
|
"organization": {
|
||||||
|
"Only admin can modify the %s.": "Only admin can modify the %s.",
|
||||||
|
"The %s is immutable.": "The %s is immutable.",
|
||||||
|
"Unknown modify rule %s.": "Unknown modify rule %s."
|
||||||
|
},
|
||||||
|
"product": {
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"provider": {
|
||||||
|
"Invalid application id": "Invalid application id",
|
||||||
|
"the provider: %s does not exist": "the provider: %s does not exist"
|
||||||
|
},
|
||||||
|
"resource": {
|
||||||
|
"User is nil for tag: avatar": "User is nil for tag: avatar",
|
||||||
|
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
|
||||||
|
},
|
||||||
|
"saml": {
|
||||||
|
"Application %s not found": "Application %s not found"
|
||||||
|
},
|
||||||
|
"saml_sp": {
|
||||||
|
"provider %s's category is not SAML": "provider %s's category is not SAML"
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
|
||||||
|
"Invalid Email receivers: %s": "Invalid Email receivers: %s",
|
||||||
|
"Invalid phone receivers: %s": "Invalid phone receivers: %s"
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported"
|
||||||
|
},
|
||||||
|
"system_info": {
|
||||||
|
"You are not authorized to access this resource": "You are not authorized to access this resource"
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Empty clientId or clientSecret": "Empty clientId or clientSecret",
|
||||||
|
"Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
|
||||||
|
"Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
|
||||||
|
"Invalid client_id": "Invalid client_id",
|
||||||
|
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s doesn't exist in the allowed Redirect URI list"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"Display name cannot be empty": "Display name cannot be empty",
|
||||||
|
"New password cannot contain blank space.": "New password cannot contain blank space.",
|
||||||
|
"New password must have at least 6 characters": "New password must have at least 6 characters",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
},
|
||||||
|
"user_upload": {
|
||||||
|
"Failed to import users": "Failed to import users"
|
||||||
|
},
|
||||||
|
"util": {
|
||||||
|
"No application is found for userId: %s": "No application is found for userId: %s",
|
||||||
|
"No provider for category: %s is found for application: %s": "No provider for category: %s is found for application: %s",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The provider: %s is not found": "The provider: %s is not found",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"verification": {
|
||||||
|
"Code has not been sent yet!": "Code has not been sent yet!",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Invalid captcha provider.": "Invalid captcha provider.",
|
||||||
|
"Missing parameter": "Missing parameter",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unable to get the email modify rule.": "Unable to get the email modify rule.",
|
||||||
|
"Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
|
||||||
|
"Unknown type": "Unknown type",
|
||||||
|
"Wrong parameter": "Wrong parameter",
|
||||||
|
"You should verify your code in %d min!": "You should verify your code in %d min!",
|
||||||
|
"the user does not exist, please sign up first": "the user does not exist, please sign up first"
|
||||||
|
},
|
||||||
|
"webauthn": {
|
||||||
|
"Found no credentials for this user": "Found no credentials for this user",
|
||||||
|
"Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
}
|
||||||
|
}
|
172
i18n/locales/es/data.json
Normal file
172
i18n/locales/es/data.json
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
{
|
||||||
|
"account": {
|
||||||
|
"Email: %s": "Email: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid information": "Invalid information",
|
||||||
|
"Phone: %s": "Phone: %s",
|
||||||
|
"Please sign out first before signing up": "Please sign out first before signing up",
|
||||||
|
"The application does not allow to sign up new account": "The application does not allow to sign up new account"
|
||||||
|
},
|
||||||
|
"application": {
|
||||||
|
"Parameter organization is missing": "Parameter organization is missing",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"%s No phone prefix": "%s No phone prefix",
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
|
||||||
|
"Failed to login in: %s": "Failed to login in: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid token": "Invalid token",
|
||||||
|
"Please sign out first before signing in": "Please sign out first before signing in",
|
||||||
|
"State expected: %s, but got: %s": "State expected: %s, but got: %s",
|
||||||
|
"The account does not exist": "The account does not exist",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support",
|
||||||
|
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)",
|
||||||
|
"The application: %s does not exist": "The application: %s does not exist",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported",
|
||||||
|
"The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unauthorized operation": "Unauthorized operation",
|
||||||
|
"Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s"
|
||||||
|
},
|
||||||
|
"cas": {
|
||||||
|
"Service %s and %s do not match": "Service %s and %s do not match"
|
||||||
|
},
|
||||||
|
"check": {
|
||||||
|
"Affiliation cannot be blank": "Affiliation cannot be blank",
|
||||||
|
"DisplayName cannot be blank": "DisplayName cannot be blank",
|
||||||
|
"DisplayName is not valid real name": "DisplayName is not valid real name",
|
||||||
|
"Email already exists": "Email already exists",
|
||||||
|
"Email cannot be empty": "Email cannot be empty",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Empty username.": "Empty username.",
|
||||||
|
"FirstName cannot be blank": "FirstName cannot be blank",
|
||||||
|
"LastName cannot be blank": "LastName cannot be blank",
|
||||||
|
"Ldap user name or password incorrect": "Ldap user name or password incorrect",
|
||||||
|
"Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Password must have at least 6 characters": "Password must have at least 6 characters",
|
||||||
|
"Phone already exists": "Phone already exists",
|
||||||
|
"Phone cannot be empty": "Phone cannot be empty",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Session outdated, please login again": "Session outdated, please login again",
|
||||||
|
"The user doesn't exist": "The user doesn't exist",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist",
|
||||||
|
"The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.": "The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.",
|
||||||
|
"Username already exists": "Username already exists",
|
||||||
|
"Username cannot be an email address": "Username cannot be an email address",
|
||||||
|
"Username cannot contain white spaces": "Username cannot contain white spaces",
|
||||||
|
"Username cannot start with a digit": "Username cannot start with a digit",
|
||||||
|
"Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
|
||||||
|
"Username must have at least 2 characters": "Username must have at least 2 characters",
|
||||||
|
"You don't have the permission to do this": "You don't have the permission to do this",
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again": "You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again",
|
||||||
|
"unsupported password type: %s": "unsupported password type: %s"
|
||||||
|
},
|
||||||
|
"check_util": {
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes and try again": "You have entered the wrong password too many times, please wait for %d minutes and try again",
|
||||||
|
"password is incorrect, you have %d remaining chances": "password is incorrect, you have %d remaining chances"
|
||||||
|
},
|
||||||
|
"enforcer": {
|
||||||
|
"Please sign in first": "Please sign in first"
|
||||||
|
},
|
||||||
|
"ldap": {
|
||||||
|
"Ldap server exist": "Ldap server exist",
|
||||||
|
"Missing parameter": "Missing parameter"
|
||||||
|
},
|
||||||
|
"link": {
|
||||||
|
"Please link first": "Please link first",
|
||||||
|
"This application has no providers": "This application has no providers",
|
||||||
|
"This application has no providers of type": "This application has no providers of type",
|
||||||
|
"This provider can't be unlinked": "This provider can't be unlinked",
|
||||||
|
"You are not the global admin, you can't unlink other users": "You are not the global admin, you can't unlink other users",
|
||||||
|
"You can't unlink yourself, you are not a member of any application": "You can't unlink yourself, you are not a member of any application"
|
||||||
|
},
|
||||||
|
"organization": {
|
||||||
|
"Only admin can modify the %s.": "Only admin can modify the %s.",
|
||||||
|
"The %s is immutable.": "The %s is immutable.",
|
||||||
|
"Unknown modify rule %s.": "Unknown modify rule %s."
|
||||||
|
},
|
||||||
|
"product": {
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"provider": {
|
||||||
|
"Invalid application id": "Invalid application id",
|
||||||
|
"the provider: %s does not exist": "the provider: %s does not exist"
|
||||||
|
},
|
||||||
|
"resource": {
|
||||||
|
"User is nil for tag: avatar": "User is nil for tag: avatar",
|
||||||
|
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
|
||||||
|
},
|
||||||
|
"saml": {
|
||||||
|
"Application %s not found": "Application %s not found"
|
||||||
|
},
|
||||||
|
"saml_sp": {
|
||||||
|
"provider %s's category is not SAML": "provider %s's category is not SAML"
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
|
||||||
|
"Invalid Email receivers: %s": "Invalid Email receivers: %s",
|
||||||
|
"Invalid phone receivers: %s": "Invalid phone receivers: %s"
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported"
|
||||||
|
},
|
||||||
|
"system_info": {
|
||||||
|
"You are not authorized to access this resource": "You are not authorized to access this resource"
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Empty clientId or clientSecret": "Empty clientId or clientSecret",
|
||||||
|
"Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
|
||||||
|
"Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
|
||||||
|
"Invalid client_id": "Invalid client_id",
|
||||||
|
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s doesn't exist in the allowed Redirect URI list"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"Display name cannot be empty": "Display name cannot be empty",
|
||||||
|
"New password cannot contain blank space.": "New password cannot contain blank space.",
|
||||||
|
"New password must have at least 6 characters": "New password must have at least 6 characters",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
},
|
||||||
|
"user_upload": {
|
||||||
|
"Failed to import users": "Failed to import users"
|
||||||
|
},
|
||||||
|
"util": {
|
||||||
|
"No application is found for userId: %s": "No application is found for userId: %s",
|
||||||
|
"No provider for category: %s is found for application: %s": "No provider for category: %s is found for application: %s",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The provider: %s is not found": "The provider: %s is not found",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"verification": {
|
||||||
|
"Code has not been sent yet!": "Code has not been sent yet!",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Invalid captcha provider.": "Invalid captcha provider.",
|
||||||
|
"Missing parameter": "Missing parameter",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unable to get the email modify rule.": "Unable to get the email modify rule.",
|
||||||
|
"Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
|
||||||
|
"Unknown type": "Unknown type",
|
||||||
|
"Wrong parameter": "Wrong parameter",
|
||||||
|
"You should verify your code in %d min!": "You should verify your code in %d min!",
|
||||||
|
"the user does not exist, please sign up first": "the user does not exist, please sign up first"
|
||||||
|
},
|
||||||
|
"webauthn": {
|
||||||
|
"Found no credentials for this user": "Found no credentials for this user",
|
||||||
|
"Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
}
|
||||||
|
}
|
172
i18n/locales/fr/data.json
Normal file
172
i18n/locales/fr/data.json
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
{
|
||||||
|
"account": {
|
||||||
|
"Email: %s": "Email: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid information": "Invalid information",
|
||||||
|
"Phone: %s": "Phone: %s",
|
||||||
|
"Please sign out first before signing up": "Please sign out first before signing up",
|
||||||
|
"The application does not allow to sign up new account": "The application does not allow to sign up new account"
|
||||||
|
},
|
||||||
|
"application": {
|
||||||
|
"Parameter organization is missing": "Parameter organization is missing",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"%s No phone prefix": "%s No phone prefix",
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
|
||||||
|
"Failed to login in: %s": "Failed to login in: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid token": "Invalid token",
|
||||||
|
"Please sign out first before signing in": "Please sign out first before signing in",
|
||||||
|
"State expected: %s, but got: %s": "State expected: %s, but got: %s",
|
||||||
|
"The account does not exist": "The account does not exist",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support",
|
||||||
|
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)",
|
||||||
|
"The application: %s does not exist": "The application: %s does not exist",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported",
|
||||||
|
"The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unauthorized operation": "Unauthorized operation",
|
||||||
|
"Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s"
|
||||||
|
},
|
||||||
|
"cas": {
|
||||||
|
"Service %s and %s do not match": "Service %s and %s do not match"
|
||||||
|
},
|
||||||
|
"check": {
|
||||||
|
"Affiliation cannot be blank": "Affiliation cannot be blank",
|
||||||
|
"DisplayName cannot be blank": "DisplayName cannot be blank",
|
||||||
|
"DisplayName is not valid real name": "DisplayName is not valid real name",
|
||||||
|
"Email already exists": "Email already exists",
|
||||||
|
"Email cannot be empty": "Email cannot be empty",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Empty username.": "Empty username.",
|
||||||
|
"FirstName cannot be blank": "FirstName cannot be blank",
|
||||||
|
"LastName cannot be blank": "LastName cannot be blank",
|
||||||
|
"Ldap user name or password incorrect": "Ldap user name or password incorrect",
|
||||||
|
"Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Password must have at least 6 characters": "Password must have at least 6 characters",
|
||||||
|
"Phone already exists": "Phone already exists",
|
||||||
|
"Phone cannot be empty": "Phone cannot be empty",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Session outdated, please login again": "Session outdated, please login again",
|
||||||
|
"The user doesn't exist": "The user doesn't exist",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist",
|
||||||
|
"The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.": "The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.",
|
||||||
|
"Username already exists": "Username already exists",
|
||||||
|
"Username cannot be an email address": "Username cannot be an email address",
|
||||||
|
"Username cannot contain white spaces": "Username cannot contain white spaces",
|
||||||
|
"Username cannot start with a digit": "Username cannot start with a digit",
|
||||||
|
"Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
|
||||||
|
"Username must have at least 2 characters": "Username must have at least 2 characters",
|
||||||
|
"You don't have the permission to do this": "You don't have the permission to do this",
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again": "You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again",
|
||||||
|
"unsupported password type: %s": "unsupported password type: %s"
|
||||||
|
},
|
||||||
|
"check_util": {
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes and try again": "You have entered the wrong password too many times, please wait for %d minutes and try again",
|
||||||
|
"password is incorrect, you have %d remaining chances": "password is incorrect, you have %d remaining chances"
|
||||||
|
},
|
||||||
|
"enforcer": {
|
||||||
|
"Please sign in first": "Please sign in first"
|
||||||
|
},
|
||||||
|
"ldap": {
|
||||||
|
"Ldap server exist": "Ldap server exist",
|
||||||
|
"Missing parameter": "Missing parameter"
|
||||||
|
},
|
||||||
|
"link": {
|
||||||
|
"Please link first": "Please link first",
|
||||||
|
"This application has no providers": "This application has no providers",
|
||||||
|
"This application has no providers of type": "This application has no providers of type",
|
||||||
|
"This provider can't be unlinked": "This provider can't be unlinked",
|
||||||
|
"You are not the global admin, you can't unlink other users": "You are not the global admin, you can't unlink other users",
|
||||||
|
"You can't unlink yourself, you are not a member of any application": "You can't unlink yourself, you are not a member of any application"
|
||||||
|
},
|
||||||
|
"organization": {
|
||||||
|
"Only admin can modify the %s.": "Only admin can modify the %s.",
|
||||||
|
"The %s is immutable.": "The %s is immutable.",
|
||||||
|
"Unknown modify rule %s.": "Unknown modify rule %s."
|
||||||
|
},
|
||||||
|
"product": {
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"provider": {
|
||||||
|
"Invalid application id": "Invalid application id",
|
||||||
|
"the provider: %s does not exist": "the provider: %s does not exist"
|
||||||
|
},
|
||||||
|
"resource": {
|
||||||
|
"User is nil for tag: avatar": "User is nil for tag: avatar",
|
||||||
|
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
|
||||||
|
},
|
||||||
|
"saml": {
|
||||||
|
"Application %s not found": "Application %s not found"
|
||||||
|
},
|
||||||
|
"saml_sp": {
|
||||||
|
"provider %s's category is not SAML": "provider %s's category is not SAML"
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
|
||||||
|
"Invalid Email receivers: %s": "Invalid Email receivers: %s",
|
||||||
|
"Invalid phone receivers: %s": "Invalid phone receivers: %s"
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported"
|
||||||
|
},
|
||||||
|
"system_info": {
|
||||||
|
"You are not authorized to access this resource": "You are not authorized to access this resource"
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Empty clientId or clientSecret": "Empty clientId or clientSecret",
|
||||||
|
"Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
|
||||||
|
"Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
|
||||||
|
"Invalid client_id": "Invalid client_id",
|
||||||
|
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s doesn't exist in the allowed Redirect URI list"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"Display name cannot be empty": "Display name cannot be empty",
|
||||||
|
"New password cannot contain blank space.": "New password cannot contain blank space.",
|
||||||
|
"New password must have at least 6 characters": "New password must have at least 6 characters",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
},
|
||||||
|
"user_upload": {
|
||||||
|
"Failed to import users": "Failed to import users"
|
||||||
|
},
|
||||||
|
"util": {
|
||||||
|
"No application is found for userId: %s": "No application is found for userId: %s",
|
||||||
|
"No provider for category: %s is found for application: %s": "No provider for category: %s is found for application: %s",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The provider: %s is not found": "The provider: %s is not found",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"verification": {
|
||||||
|
"Code has not been sent yet!": "Code has not been sent yet!",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Invalid captcha provider.": "Invalid captcha provider.",
|
||||||
|
"Missing parameter": "Missing parameter",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unable to get the email modify rule.": "Unable to get the email modify rule.",
|
||||||
|
"Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
|
||||||
|
"Unknown type": "Unknown type",
|
||||||
|
"Wrong parameter": "Wrong parameter",
|
||||||
|
"You should verify your code in %d min!": "You should verify your code in %d min!",
|
||||||
|
"the user does not exist, please sign up first": "the user does not exist, please sign up first"
|
||||||
|
},
|
||||||
|
"webauthn": {
|
||||||
|
"Found no credentials for this user": "Found no credentials for this user",
|
||||||
|
"Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
}
|
||||||
|
}
|
172
i18n/locales/ja/data.json
Normal file
172
i18n/locales/ja/data.json
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
{
|
||||||
|
"account": {
|
||||||
|
"Email: %s": "Email: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid information": "Invalid information",
|
||||||
|
"Phone: %s": "Phone: %s",
|
||||||
|
"Please sign out first before signing up": "Please sign out first before signing up",
|
||||||
|
"The application does not allow to sign up new account": "The application does not allow to sign up new account"
|
||||||
|
},
|
||||||
|
"application": {
|
||||||
|
"Parameter organization is missing": "Parameter organization is missing",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"%s No phone prefix": "%s No phone prefix",
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
|
||||||
|
"Failed to login in: %s": "Failed to login in: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid token": "Invalid token",
|
||||||
|
"Please sign out first before signing in": "Please sign out first before signing in",
|
||||||
|
"State expected: %s, but got: %s": "State expected: %s, but got: %s",
|
||||||
|
"The account does not exist": "The account does not exist",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support",
|
||||||
|
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)",
|
||||||
|
"The application: %s does not exist": "The application: %s does not exist",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported",
|
||||||
|
"The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unauthorized operation": "Unauthorized operation",
|
||||||
|
"Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s"
|
||||||
|
},
|
||||||
|
"cas": {
|
||||||
|
"Service %s and %s do not match": "Service %s and %s do not match"
|
||||||
|
},
|
||||||
|
"check": {
|
||||||
|
"Affiliation cannot be blank": "Affiliation cannot be blank",
|
||||||
|
"DisplayName cannot be blank": "DisplayName cannot be blank",
|
||||||
|
"DisplayName is not valid real name": "DisplayName is not valid real name",
|
||||||
|
"Email already exists": "Email already exists",
|
||||||
|
"Email cannot be empty": "Email cannot be empty",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Empty username.": "Empty username.",
|
||||||
|
"FirstName cannot be blank": "FirstName cannot be blank",
|
||||||
|
"LastName cannot be blank": "LastName cannot be blank",
|
||||||
|
"Ldap user name or password incorrect": "Ldap user name or password incorrect",
|
||||||
|
"Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Password must have at least 6 characters": "Password must have at least 6 characters",
|
||||||
|
"Phone already exists": "Phone already exists",
|
||||||
|
"Phone cannot be empty": "Phone cannot be empty",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Session outdated, please login again": "Session outdated, please login again",
|
||||||
|
"The user doesn't exist": "The user doesn't exist",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist",
|
||||||
|
"The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.": "The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.",
|
||||||
|
"Username already exists": "Username already exists",
|
||||||
|
"Username cannot be an email address": "Username cannot be an email address",
|
||||||
|
"Username cannot contain white spaces": "Username cannot contain white spaces",
|
||||||
|
"Username cannot start with a digit": "Username cannot start with a digit",
|
||||||
|
"Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
|
||||||
|
"Username must have at least 2 characters": "Username must have at least 2 characters",
|
||||||
|
"You don't have the permission to do this": "You don't have the permission to do this",
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again": "You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again",
|
||||||
|
"unsupported password type: %s": "unsupported password type: %s"
|
||||||
|
},
|
||||||
|
"check_util": {
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes and try again": "You have entered the wrong password too many times, please wait for %d minutes and try again",
|
||||||
|
"password is incorrect, you have %d remaining chances": "password is incorrect, you have %d remaining chances"
|
||||||
|
},
|
||||||
|
"enforcer": {
|
||||||
|
"Please sign in first": "Please sign in first"
|
||||||
|
},
|
||||||
|
"ldap": {
|
||||||
|
"Ldap server exist": "Ldap server exist",
|
||||||
|
"Missing parameter": "Missing parameter"
|
||||||
|
},
|
||||||
|
"link": {
|
||||||
|
"Please link first": "Please link first",
|
||||||
|
"This application has no providers": "This application has no providers",
|
||||||
|
"This application has no providers of type": "This application has no providers of type",
|
||||||
|
"This provider can't be unlinked": "This provider can't be unlinked",
|
||||||
|
"You are not the global admin, you can't unlink other users": "You are not the global admin, you can't unlink other users",
|
||||||
|
"You can't unlink yourself, you are not a member of any application": "You can't unlink yourself, you are not a member of any application"
|
||||||
|
},
|
||||||
|
"organization": {
|
||||||
|
"Only admin can modify the %s.": "Only admin can modify the %s.",
|
||||||
|
"The %s is immutable.": "The %s is immutable.",
|
||||||
|
"Unknown modify rule %s.": "Unknown modify rule %s."
|
||||||
|
},
|
||||||
|
"product": {
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"provider": {
|
||||||
|
"Invalid application id": "Invalid application id",
|
||||||
|
"the provider: %s does not exist": "the provider: %s does not exist"
|
||||||
|
},
|
||||||
|
"resource": {
|
||||||
|
"User is nil for tag: avatar": "User is nil for tag: avatar",
|
||||||
|
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
|
||||||
|
},
|
||||||
|
"saml": {
|
||||||
|
"Application %s not found": "Application %s not found"
|
||||||
|
},
|
||||||
|
"saml_sp": {
|
||||||
|
"provider %s's category is not SAML": "provider %s's category is not SAML"
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
|
||||||
|
"Invalid Email receivers: %s": "Invalid Email receivers: %s",
|
||||||
|
"Invalid phone receivers: %s": "Invalid phone receivers: %s"
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported"
|
||||||
|
},
|
||||||
|
"system_info": {
|
||||||
|
"You are not authorized to access this resource": "You are not authorized to access this resource"
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Empty clientId or clientSecret": "Empty clientId or clientSecret",
|
||||||
|
"Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
|
||||||
|
"Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
|
||||||
|
"Invalid client_id": "Invalid client_id",
|
||||||
|
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s doesn't exist in the allowed Redirect URI list"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"Display name cannot be empty": "Display name cannot be empty",
|
||||||
|
"New password cannot contain blank space.": "New password cannot contain blank space.",
|
||||||
|
"New password must have at least 6 characters": "New password must have at least 6 characters",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
},
|
||||||
|
"user_upload": {
|
||||||
|
"Failed to import users": "Failed to import users"
|
||||||
|
},
|
||||||
|
"util": {
|
||||||
|
"No application is found for userId: %s": "No application is found for userId: %s",
|
||||||
|
"No provider for category: %s is found for application: %s": "No provider for category: %s is found for application: %s",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The provider: %s is not found": "The provider: %s is not found",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"verification": {
|
||||||
|
"Code has not been sent yet!": "Code has not been sent yet!",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Invalid captcha provider.": "Invalid captcha provider.",
|
||||||
|
"Missing parameter": "Missing parameter",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unable to get the email modify rule.": "Unable to get the email modify rule.",
|
||||||
|
"Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
|
||||||
|
"Unknown type": "Unknown type",
|
||||||
|
"Wrong parameter": "Wrong parameter",
|
||||||
|
"You should verify your code in %d min!": "You should verify your code in %d min!",
|
||||||
|
"the user does not exist, please sign up first": "the user does not exist, please sign up first"
|
||||||
|
},
|
||||||
|
"webauthn": {
|
||||||
|
"Found no credentials for this user": "Found no credentials for this user",
|
||||||
|
"Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
}
|
||||||
|
}
|
172
i18n/locales/ko/data.json
Normal file
172
i18n/locales/ko/data.json
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
{
|
||||||
|
"account": {
|
||||||
|
"Email: %s": "Email: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid information": "Invalid information",
|
||||||
|
"Phone: %s": "Phone: %s",
|
||||||
|
"Please sign out first before signing up": "Please sign out first before signing up",
|
||||||
|
"The application does not allow to sign up new account": "The application does not allow to sign up new account"
|
||||||
|
},
|
||||||
|
"application": {
|
||||||
|
"Parameter organization is missing": "Parameter organization is missing",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"%s No phone prefix": "%s No phone prefix",
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
|
||||||
|
"Failed to login in: %s": "Failed to login in: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid token": "Invalid token",
|
||||||
|
"Please sign out first before signing in": "Please sign out first before signing in",
|
||||||
|
"State expected: %s, but got: %s": "State expected: %s, but got: %s",
|
||||||
|
"The account does not exist": "The account does not exist",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support",
|
||||||
|
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)",
|
||||||
|
"The application: %s does not exist": "The application: %s does not exist",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported",
|
||||||
|
"The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unauthorized operation": "Unauthorized operation",
|
||||||
|
"Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s"
|
||||||
|
},
|
||||||
|
"cas": {
|
||||||
|
"Service %s and %s do not match": "Service %s and %s do not match"
|
||||||
|
},
|
||||||
|
"check": {
|
||||||
|
"Affiliation cannot be blank": "Affiliation cannot be blank",
|
||||||
|
"DisplayName cannot be blank": "DisplayName cannot be blank",
|
||||||
|
"DisplayName is not valid real name": "DisplayName is not valid real name",
|
||||||
|
"Email already exists": "Email already exists",
|
||||||
|
"Email cannot be empty": "Email cannot be empty",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Empty username.": "Empty username.",
|
||||||
|
"FirstName cannot be blank": "FirstName cannot be blank",
|
||||||
|
"LastName cannot be blank": "LastName cannot be blank",
|
||||||
|
"Ldap user name or password incorrect": "Ldap user name or password incorrect",
|
||||||
|
"Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Password must have at least 6 characters": "Password must have at least 6 characters",
|
||||||
|
"Phone already exists": "Phone already exists",
|
||||||
|
"Phone cannot be empty": "Phone cannot be empty",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Session outdated, please login again": "Session outdated, please login again",
|
||||||
|
"The user doesn't exist": "The user doesn't exist",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist",
|
||||||
|
"The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.": "The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.",
|
||||||
|
"Username already exists": "Username already exists",
|
||||||
|
"Username cannot be an email address": "Username cannot be an email address",
|
||||||
|
"Username cannot contain white spaces": "Username cannot contain white spaces",
|
||||||
|
"Username cannot start with a digit": "Username cannot start with a digit",
|
||||||
|
"Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
|
||||||
|
"Username must have at least 2 characters": "Username must have at least 2 characters",
|
||||||
|
"You don't have the permission to do this": "You don't have the permission to do this",
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again": "You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again",
|
||||||
|
"unsupported password type: %s": "unsupported password type: %s"
|
||||||
|
},
|
||||||
|
"check_util": {
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes and try again": "You have entered the wrong password too many times, please wait for %d minutes and try again",
|
||||||
|
"password is incorrect, you have %d remaining chances": "password is incorrect, you have %d remaining chances"
|
||||||
|
},
|
||||||
|
"enforcer": {
|
||||||
|
"Please sign in first": "Please sign in first"
|
||||||
|
},
|
||||||
|
"ldap": {
|
||||||
|
"Ldap server exist": "Ldap server exist",
|
||||||
|
"Missing parameter": "Missing parameter"
|
||||||
|
},
|
||||||
|
"link": {
|
||||||
|
"Please link first": "Please link first",
|
||||||
|
"This application has no providers": "This application has no providers",
|
||||||
|
"This application has no providers of type": "This application has no providers of type",
|
||||||
|
"This provider can't be unlinked": "This provider can't be unlinked",
|
||||||
|
"You are not the global admin, you can't unlink other users": "You are not the global admin, you can't unlink other users",
|
||||||
|
"You can't unlink yourself, you are not a member of any application": "You can't unlink yourself, you are not a member of any application"
|
||||||
|
},
|
||||||
|
"organization": {
|
||||||
|
"Only admin can modify the %s.": "Only admin can modify the %s.",
|
||||||
|
"The %s is immutable.": "The %s is immutable.",
|
||||||
|
"Unknown modify rule %s.": "Unknown modify rule %s."
|
||||||
|
},
|
||||||
|
"product": {
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"provider": {
|
||||||
|
"Invalid application id": "Invalid application id",
|
||||||
|
"the provider: %s does not exist": "the provider: %s does not exist"
|
||||||
|
},
|
||||||
|
"resource": {
|
||||||
|
"User is nil for tag: avatar": "User is nil for tag: avatar",
|
||||||
|
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
|
||||||
|
},
|
||||||
|
"saml": {
|
||||||
|
"Application %s not found": "Application %s not found"
|
||||||
|
},
|
||||||
|
"saml_sp": {
|
||||||
|
"provider %s's category is not SAML": "provider %s's category is not SAML"
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
|
||||||
|
"Invalid Email receivers: %s": "Invalid Email receivers: %s",
|
||||||
|
"Invalid phone receivers: %s": "Invalid phone receivers: %s"
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported"
|
||||||
|
},
|
||||||
|
"system_info": {
|
||||||
|
"You are not authorized to access this resource": "You are not authorized to access this resource"
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Empty clientId or clientSecret": "Empty clientId or clientSecret",
|
||||||
|
"Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
|
||||||
|
"Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
|
||||||
|
"Invalid client_id": "Invalid client_id",
|
||||||
|
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s doesn't exist in the allowed Redirect URI list"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"Display name cannot be empty": "Display name cannot be empty",
|
||||||
|
"New password cannot contain blank space.": "New password cannot contain blank space.",
|
||||||
|
"New password must have at least 6 characters": "New password must have at least 6 characters",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
},
|
||||||
|
"user_upload": {
|
||||||
|
"Failed to import users": "Failed to import users"
|
||||||
|
},
|
||||||
|
"util": {
|
||||||
|
"No application is found for userId: %s": "No application is found for userId: %s",
|
||||||
|
"No provider for category: %s is found for application: %s": "No provider for category: %s is found for application: %s",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The provider: %s is not found": "The provider: %s is not found",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"verification": {
|
||||||
|
"Code has not been sent yet!": "Code has not been sent yet!",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Invalid captcha provider.": "Invalid captcha provider.",
|
||||||
|
"Missing parameter": "Missing parameter",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unable to get the email modify rule.": "Unable to get the email modify rule.",
|
||||||
|
"Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
|
||||||
|
"Unknown type": "Unknown type",
|
||||||
|
"Wrong parameter": "Wrong parameter",
|
||||||
|
"You should verify your code in %d min!": "You should verify your code in %d min!",
|
||||||
|
"the user does not exist, please sign up first": "the user does not exist, please sign up first"
|
||||||
|
},
|
||||||
|
"webauthn": {
|
||||||
|
"Found no credentials for this user": "Found no credentials for this user",
|
||||||
|
"Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
}
|
||||||
|
}
|
172
i18n/locales/ru/data.json
Normal file
172
i18n/locales/ru/data.json
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
{
|
||||||
|
"account": {
|
||||||
|
"Email: %s": "Email: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid information": "Invalid information",
|
||||||
|
"Phone: %s": "Phone: %s",
|
||||||
|
"Please sign out first before signing up": "Please sign out first before signing up",
|
||||||
|
"The application does not allow to sign up new account": "The application does not allow to sign up new account"
|
||||||
|
},
|
||||||
|
"application": {
|
||||||
|
"Parameter organization is missing": "Parameter organization is missing",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"%s No phone prefix": "%s No phone prefix",
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Failed to create user, user information is invalid: %s": "Failed to create user, user information is invalid: %s",
|
||||||
|
"Failed to login in: %s": "Failed to login in: %s",
|
||||||
|
"Get init score failed, error: %w": "Get init score failed, error: %w",
|
||||||
|
"Invalid token": "Invalid token",
|
||||||
|
"Please sign out first before signing in": "Please sign out first before signing in",
|
||||||
|
"State expected: %s, but got: %s": "State expected: %s, but got: %s",
|
||||||
|
"The account does not exist": "The account does not exist",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support": "The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support",
|
||||||
|
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)",
|
||||||
|
"The application: %s does not exist": "The application: %s does not exist",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported",
|
||||||
|
"The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unauthorized operation": "Unauthorized operation",
|
||||||
|
"Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s"
|
||||||
|
},
|
||||||
|
"cas": {
|
||||||
|
"Service %s and %s do not match": "Service %s and %s do not match"
|
||||||
|
},
|
||||||
|
"check": {
|
||||||
|
"Affiliation cannot be blank": "Affiliation cannot be blank",
|
||||||
|
"DisplayName cannot be blank": "DisplayName cannot be blank",
|
||||||
|
"DisplayName is not valid real name": "DisplayName is not valid real name",
|
||||||
|
"Email already exists": "Email already exists",
|
||||||
|
"Email cannot be empty": "Email cannot be empty",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Empty username.": "Empty username.",
|
||||||
|
"FirstName cannot be blank": "FirstName cannot be blank",
|
||||||
|
"LastName cannot be blank": "LastName cannot be blank",
|
||||||
|
"Ldap user name or password incorrect": "Ldap user name or password incorrect",
|
||||||
|
"Multiple accounts with same uid, please check your ldap server": "Multiple accounts with same uid, please check your ldap server",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Password must have at least 6 characters": "Password must have at least 6 characters",
|
||||||
|
"Phone already exists": "Phone already exists",
|
||||||
|
"Phone cannot be empty": "Phone cannot be empty",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Session outdated, please login again": "Session outdated, please login again",
|
||||||
|
"The user doesn't exist": "The user doesn't exist",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist",
|
||||||
|
"The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.": "The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.",
|
||||||
|
"Username already exists": "Username already exists",
|
||||||
|
"Username cannot be an email address": "Username cannot be an email address",
|
||||||
|
"Username cannot contain white spaces": "Username cannot contain white spaces",
|
||||||
|
"Username cannot start with a digit": "Username cannot start with a digit",
|
||||||
|
"Username is too long (maximum is 39 characters).": "Username is too long (maximum is 39 characters).",
|
||||||
|
"Username must have at least 2 characters": "Username must have at least 2 characters",
|
||||||
|
"You don't have the permission to do this": "You don't have the permission to do this",
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again": "You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again",
|
||||||
|
"unsupported password type: %s": "unsupported password type: %s"
|
||||||
|
},
|
||||||
|
"check_util": {
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes and try again": "You have entered the wrong password too many times, please wait for %d minutes and try again",
|
||||||
|
"password is incorrect, you have %d remaining chances": "password is incorrect, you have %d remaining chances"
|
||||||
|
},
|
||||||
|
"enforcer": {
|
||||||
|
"Please sign in first": "Please sign in first"
|
||||||
|
},
|
||||||
|
"ldap": {
|
||||||
|
"Ldap server exist": "Ldap server exist",
|
||||||
|
"Missing parameter": "Missing parameter"
|
||||||
|
},
|
||||||
|
"link": {
|
||||||
|
"Please link first": "Please link first",
|
||||||
|
"This application has no providers": "This application has no providers",
|
||||||
|
"This application has no providers of type": "This application has no providers of type",
|
||||||
|
"This provider can't be unlinked": "This provider can't be unlinked",
|
||||||
|
"You are not the global admin, you can't unlink other users": "You are not the global admin, you can't unlink other users",
|
||||||
|
"You can't unlink yourself, you are not a member of any application": "You can't unlink yourself, you are not a member of any application"
|
||||||
|
},
|
||||||
|
"organization": {
|
||||||
|
"Only admin can modify the %s.": "Only admin can modify the %s.",
|
||||||
|
"The %s is immutable.": "The %s is immutable.",
|
||||||
|
"Unknown modify rule %s.": "Unknown modify rule %s."
|
||||||
|
},
|
||||||
|
"product": {
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"provider": {
|
||||||
|
"Invalid application id": "Invalid application id",
|
||||||
|
"the provider: %s does not exist": "the provider: %s does not exist"
|
||||||
|
},
|
||||||
|
"resource": {
|
||||||
|
"User is nil for tag: avatar": "User is nil for tag: avatar",
|
||||||
|
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Username or fullFilePath is empty: username = %s, fullFilePath = %s"
|
||||||
|
},
|
||||||
|
"saml": {
|
||||||
|
"Application %s not found": "Application %s not found"
|
||||||
|
},
|
||||||
|
"saml_sp": {
|
||||||
|
"provider %s's category is not SAML": "provider %s's category is not SAML"
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"Empty parameters for emailForm: %v": "Empty parameters for emailForm: %v",
|
||||||
|
"Invalid Email receivers: %s": "Invalid Email receivers: %s",
|
||||||
|
"Invalid phone receivers: %s": "Invalid phone receivers: %s"
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"The objectKey: %s is not allowed": "The objectKey: %s is not allowed",
|
||||||
|
"The provider type: %s is not supported": "The provider type: %s is not supported"
|
||||||
|
},
|
||||||
|
"system_info": {
|
||||||
|
"You are not authorized to access this resource": "You are not authorized to access this resource"
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"Challenge method should be S256": "Challenge method should be S256",
|
||||||
|
"Empty clientId or clientSecret": "Empty clientId or clientSecret",
|
||||||
|
"Grant_type: %s is not supported in this application": "Grant_type: %s is not supported in this application",
|
||||||
|
"Invalid application or wrong clientSecret": "Invalid application or wrong clientSecret",
|
||||||
|
"Invalid client_id": "Invalid client_id",
|
||||||
|
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s doesn't exist in the allowed Redirect URI list"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"Display name cannot be empty": "Display name cannot be empty",
|
||||||
|
"New password cannot contain blank space.": "New password cannot contain blank space.",
|
||||||
|
"New password must have at least 6 characters": "New password must have at least 6 characters",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
},
|
||||||
|
"user_upload": {
|
||||||
|
"Failed to import users": "Failed to import users"
|
||||||
|
},
|
||||||
|
"util": {
|
||||||
|
"No application is found for userId: %s": "No application is found for userId: %s",
|
||||||
|
"No provider for category: %s is found for application: %s": "No provider for category: %s is found for application: %s",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The provider: %s is not found": "The provider: %s is not found",
|
||||||
|
"The user: %s doesn't exist": "The user: %s doesn't exist"
|
||||||
|
},
|
||||||
|
"verification": {
|
||||||
|
"Code has not been sent yet!": "Code has not been sent yet!",
|
||||||
|
"Email is invalid": "Email is invalid",
|
||||||
|
"Invalid captcha provider.": "Invalid captcha provider.",
|
||||||
|
"Missing parameter": "Missing parameter",
|
||||||
|
"Organization does not exist": "Organization does not exist",
|
||||||
|
"Phone number is invalid": "Phone number is invalid",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"Turing test failed.": "Turing test failed.",
|
||||||
|
"Unable to get the email modify rule.": "Unable to get the email modify rule.",
|
||||||
|
"Unable to get the phone modify rule.": "Unable to get the phone modify rule.",
|
||||||
|
"Unknown type": "Unknown type",
|
||||||
|
"Wrong parameter": "Wrong parameter",
|
||||||
|
"You should verify your code in %d min!": "You should verify your code in %d min!",
|
||||||
|
"the user does not exist, please sign up first": "the user does not exist, please sign up first"
|
||||||
|
},
|
||||||
|
"webauthn": {
|
||||||
|
"Found no credentials for this user": "Found no credentials for this user",
|
||||||
|
"Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first",
|
||||||
|
"Please login first": "Please login first",
|
||||||
|
"The user: %s/%s doesn't exist": "The user: %s/%s doesn't exist"
|
||||||
|
}
|
||||||
|
}
|
172
i18n/locales/zh/data.json
Normal file
172
i18n/locales/zh/data.json
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
{
|
||||||
|
"account": {
|
||||||
|
"Email: %s": "邮件: %s",
|
||||||
|
"Get init score failed, error: %w": "初始化分数失败: %w",
|
||||||
|
"Invalid information": "无效信息",
|
||||||
|
"Phone: %s": "电话: %s",
|
||||||
|
"Please sign out first before signing up": "请在登陆前登出",
|
||||||
|
"The application does not allow to sign up new account": "该应用不允许注册新账户"
|
||||||
|
},
|
||||||
|
"application": {
|
||||||
|
"Parameter organization is missing": "Organization参数丢失",
|
||||||
|
"The user: %s doesn't exist": "用户不存在: %s"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"%s No phone prefix": "%s 无此电话前缀",
|
||||||
|
"Challenge method should be S256": "Challenge 方法应该为 S256",
|
||||||
|
"Failed to create user, user information is invalid: %s": "创建用户失败,用户信息无效: %s",
|
||||||
|
"Failed to login in: %s": "无法登录: %s",
|
||||||
|
"Get init score failed, error: %w": "初始化分数失败: %w",
|
||||||
|
"Invalid token": "无效token",
|
||||||
|
"Please sign out first before signing in": "请在登陆前登出",
|
||||||
|
"State expected: %s, but got: %s": "期望状态位: %s, 实际状态为: %s",
|
||||||
|
"The account does not exist": "账户不存在",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account via %%s, please use another way to sign up": "提供商账户: %s 与用户名: %s (%s) 不存在且 不允许通过 %s 注册新账户, 请使用其他方式注册",
|
||||||
|
"The account for provider: %s and username: %s (%s) does not exist and is not allowed to sign up as new account, please contact your IT support": "提供商账户: %s 与用户名: %s (%s) 不存在且 不允许注册新账户, 请联系IT支持",
|
||||||
|
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "提供商账户: %s 与用户名: %s (%s) 已经与其他账户绑定: %s (%s)",
|
||||||
|
"The application: %s does not exist": "应用 %s 不存在",
|
||||||
|
"The provider type: %s is not supported": "不支持该类型的提供商: %s",
|
||||||
|
"The provider: %s is not enabled for the application": "提供商: %s 未被启用",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "该用户被禁止登陆,请联系管理员",
|
||||||
|
"The user: %s/%s doesn't exist": "用户不存在: %s/%s",
|
||||||
|
"Turing test failed.": "真人验证失败",
|
||||||
|
"Unauthorized operation": "未授权的操作",
|
||||||
|
"Unknown authentication type (not password or provider), form = %s": "未授权的操作"
|
||||||
|
},
|
||||||
|
"cas": {
|
||||||
|
"Service %s and %s do not match": "服务 %s 与 %s 不匹配"
|
||||||
|
},
|
||||||
|
"check": {
|
||||||
|
"Affiliation cannot be blank": "联系方式不可为空",
|
||||||
|
"DisplayName cannot be blank": "展示名称不可为空",
|
||||||
|
"DisplayName is not valid real name": "展示名称无效",
|
||||||
|
"Email already exists": "该邮箱已存在",
|
||||||
|
"Email cannot be empty": "邮箱不可为空",
|
||||||
|
"Email is invalid": "无效邮箱",
|
||||||
|
"Empty username.": "用户名不可为空",
|
||||||
|
"FirstName cannot be blank": "名不可以为空",
|
||||||
|
"LastName cannot be blank": "姓不可以为空",
|
||||||
|
"Ldap user name or password incorrect": "Ldap密码错误",
|
||||||
|
"Multiple accounts with same uid, please check your ldap server": "多个帐户具有相同的uid,请检查您的 ldap 服务器",
|
||||||
|
"Organization does not exist": "组织不存在",
|
||||||
|
"Password must have at least 6 characters": "新密码至少为6位",
|
||||||
|
"Phone already exists": "该电话已存在",
|
||||||
|
"Phone cannot be empty": "电话不可为空",
|
||||||
|
"Phone number is invalid": "无效电话",
|
||||||
|
"Please login first": "请先登录",
|
||||||
|
"Session outdated, please login again": "Session已过期,请重新登陆",
|
||||||
|
"The user doesn't exist": "用户不存在",
|
||||||
|
"The user is forbidden to sign in, please contact the administrator": "该用户被禁止登陆,请联系管理员",
|
||||||
|
"The user: %s doesn't exist": "用户不存在: %s",
|
||||||
|
"The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.": "用户名只能包含字母数字字符、下划线或连字符,不能有连续的连字符或下划线,也不能以连字符或下划线开头或结尾",
|
||||||
|
"Username already exists": "用户名已存在",
|
||||||
|
"Username cannot be an email address": "用户名不可以是邮箱地址",
|
||||||
|
"Username cannot contain white spaces": "用户名不可以包含空格",
|
||||||
|
"Username cannot start with a digit": "用户名禁止使用数字作为第一个字符",
|
||||||
|
"Username is too long (maximum is 39 characters).": "用户名过长(最大长度为39个字符)",
|
||||||
|
"Username must have at least 2 characters": "用户名至少要有2个字符",
|
||||||
|
"You don't have the permission to do this": "用户名至少要有2个字符",
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again": "输入密码错误次数已达上限,请在 %d 分 %d 秒后重试",
|
||||||
|
"unsupported password type: %s": "不支持的密码类型: %s"
|
||||||
|
},
|
||||||
|
"check_util": {
|
||||||
|
"You have entered the wrong password too many times, please wait for %d minutes and try again": "输入密码错误次数已达上限,请在 %d 分后重试",
|
||||||
|
"password is incorrect, you have %d remaining chances": "密码错误,您还有 %d 次尝试的机会"
|
||||||
|
},
|
||||||
|
"enforcer": {
|
||||||
|
"Please sign in first": "请先登录"
|
||||||
|
},
|
||||||
|
"ldap": {
|
||||||
|
"Ldap server exist": "Ldap服务器已存在",
|
||||||
|
"Missing parameter": "参数丢失"
|
||||||
|
},
|
||||||
|
"link": {
|
||||||
|
"Please link first": "请先绑定",
|
||||||
|
"This application has no providers": "该应用无提供商",
|
||||||
|
"This application has no providers of type": "应用没有该类型的提供商",
|
||||||
|
"This provider can't be unlinked": "该提供商不可被链接",
|
||||||
|
"You are not the global admin, you can't unlink other users": "您不是全局管理员,无法取消链接其他用户",
|
||||||
|
"You can't unlink yourself, you are not a member of any application": "您无法取消链接,您不是任何应用程序的成员"
|
||||||
|
},
|
||||||
|
"organization": {
|
||||||
|
"Only admin can modify the %s.": "您无法取消链接,您不是任何应用程序的成员",
|
||||||
|
"The %s is immutable.": "%s是不可变的",
|
||||||
|
"Unknown modify rule %s.": "未知的修改规则"
|
||||||
|
},
|
||||||
|
"product": {
|
||||||
|
"Please login first": "请先登录",
|
||||||
|
"The user: %s doesn't exist": "用户不存在: %s"
|
||||||
|
},
|
||||||
|
"provider": {
|
||||||
|
"Invalid application id": "无效的Application ID",
|
||||||
|
"the provider: %s does not exist": "提供商: %s 不存在"
|
||||||
|
},
|
||||||
|
"resource": {
|
||||||
|
"User is nil for tag: avatar": "用户头像标签为空",
|
||||||
|
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "username或FilePath为空: username = %s, fullFilePath = %s"
|
||||||
|
},
|
||||||
|
"saml": {
|
||||||
|
"Application %s not found": "应用 %s 未找到"
|
||||||
|
},
|
||||||
|
"saml_sp": {
|
||||||
|
"provider %s's category is not SAML": "提供商 %s类型不是SAML"
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"Empty parameters for emailForm: %v": "邮件参数为空: %v",
|
||||||
|
"Invalid Email receivers: %s": " 无效的邮箱接收者: %s",
|
||||||
|
"Invalid phone receivers: %s": "无效的电话接收者: %s"
|
||||||
|
},
|
||||||
|
"storage": {
|
||||||
|
"The objectKey: %s is not allowed": "object key :%s 不被允许",
|
||||||
|
"The provider type: %s is not supported": "提供商类型: %s 尚未支持"
|
||||||
|
},
|
||||||
|
"system_info": {
|
||||||
|
"You are not authorized to access this resource": "您无权获取此资源"
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"Challenge method should be S256": "Challenge 方法应该为 S256",
|
||||||
|
"Empty clientId or clientSecret": "clientId或clientSecret为空",
|
||||||
|
"Grant_type: %s is not supported in this application": "此应用中不支持此授权类型: %s",
|
||||||
|
"Invalid application or wrong clientSecret": "无效应用或错误的clientSecret",
|
||||||
|
"Invalid client_id": "无效的ClientId",
|
||||||
|
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "重定向 URI:%s 在可列表中未找到"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"Display name cannot be empty": "展示名称不可为空",
|
||||||
|
"New password cannot contain blank space.": "新密码不可以包含空格",
|
||||||
|
"New password must have at least 6 characters": "新密码至少需要6位字符",
|
||||||
|
"The user: %s/%s doesn't exist": "用户不存在: %s/%s"
|
||||||
|
},
|
||||||
|
"user_upload": {
|
||||||
|
"Failed to import users": "导入用户失败"
|
||||||
|
},
|
||||||
|
"util": {
|
||||||
|
"No application is found for userId: %s": "找不到该用户的应用程序 %s",
|
||||||
|
"No provider for category: %s is found for application: %s": "找不到该用户的应用程序 %s",
|
||||||
|
"Please login first": "请先登录",
|
||||||
|
"The provider: %s is not found": "该提供商未找到: %s",
|
||||||
|
"The user: %s doesn't exist": "用户不存在: %s"
|
||||||
|
},
|
||||||
|
"verification": {
|
||||||
|
"Code has not been sent yet!": "验证码还未发送",
|
||||||
|
"Email is invalid": "非法的邮箱",
|
||||||
|
"Invalid captcha provider.": "非法的验证码提供商",
|
||||||
|
"Missing parameter": "参数丢失",
|
||||||
|
"Organization does not exist": "组织不存在",
|
||||||
|
"Phone number is invalid": "非法的电话号码",
|
||||||
|
"Please login first": "请先登录",
|
||||||
|
"Turing test failed.": "验证码还未发送",
|
||||||
|
"Unable to get the email modify rule.": "无法得到邮箱修改规则",
|
||||||
|
"Unable to get the phone modify rule.": "无法得到电话修改规则",
|
||||||
|
"Unknown type": "未知类型",
|
||||||
|
"Wrong parameter": "参数错误",
|
||||||
|
"You should verify your code in %d min!": "请在 %d 分钟内输入正确验证码",
|
||||||
|
"the user does not exist, please sign up first": "用户不存在,请先注册"
|
||||||
|
},
|
||||||
|
"webauthn": {
|
||||||
|
"Found no credentials for this user": "该用户没有WebAuthn凭据",
|
||||||
|
"Please call WebAuthnSigninBegin first": "请先调用 WebAuthnSigninBegi",
|
||||||
|
"Please login first": "请先登录",
|
||||||
|
"The user: %s/%s doesn't exist": "用户: %s/%s 不存在"
|
||||||
|
}
|
||||||
|
}
|
31
i18n/util.go
31
i18n/util.go
@ -20,17 +20,22 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/casdoor/casdoor/util"
|
"github.com/casdoor/casdoor/util"
|
||||||
"gopkg.in/ini.v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed languages/*.ini
|
//go:embed locales/*/data.json
|
||||||
var f embed.FS
|
var f embed.FS
|
||||||
|
|
||||||
var langMapConfig = make(map[string]*ini.File)
|
var langMap = make(map[string]map[string]map[string]string) // for example : langMap[en][account][Invalid information] = Invalid information
|
||||||
|
|
||||||
func getI18nFilePath(language string) string {
|
func getI18nFilePath(language string) string {
|
||||||
|
if strings.Contains(language, "backend") {
|
||||||
|
// change language from 'backend_en' to 'en'
|
||||||
|
language = language[8:]
|
||||||
|
return fmt.Sprintf("../i18n/locales/%s/data.json", language)
|
||||||
|
} else {
|
||||||
return fmt.Sprintf("../web/src/locales/%s/data.json", language)
|
return fmt.Sprintf("../web/src/locales/%s/data.json", language)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func readI18nFile(language string) *I18nData {
|
func readI18nFile(language string) *I18nData {
|
||||||
s := util.ReadStringFromPath(getI18nFilePath(language))
|
s := util.ReadStringFromPath(getI18nFilePath(language))
|
||||||
@ -71,16 +76,20 @@ func applyData(data1 *I18nData, data2 *I18nData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Translate(lang string, error string) string {
|
func Translate(lang string, error string) string {
|
||||||
parts := strings.Split(error, ".")
|
parts := strings.SplitN(error, ":", 2)
|
||||||
if !strings.Contains(error, ".") || len(parts) != 2 {
|
if !strings.Contains(error, ":") || len(parts) != 2 {
|
||||||
return "Translate Error: " + error
|
return "Translate Error: " + error
|
||||||
}
|
}
|
||||||
|
if langMap[lang] != nil {
|
||||||
if langMapConfig[lang] != nil {
|
return langMap[lang][parts[0]][parts[1]]
|
||||||
return langMapConfig[lang].Section(parts[0]).Key(parts[1]).String()
|
|
||||||
} else {
|
} else {
|
||||||
file, _ := f.ReadFile("languages/locale_" + lang + ".ini")
|
file, _ := f.ReadFile("locales/" + lang + "/data.json")
|
||||||
langMapConfig[lang], _ = ini.Load(file)
|
data := I18nData{}
|
||||||
return langMapConfig[lang].Section(parts[0]).Key(parts[1]).String()
|
err := util.JsonToStruct(string(file), &data)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
langMap[lang] = data
|
||||||
|
return langMap[lang][parts[0]][parts[1]]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,21 +44,21 @@ func init() {
|
|||||||
|
|
||||||
func CheckUserSignup(application *Application, organization *Organization, username string, password string, displayName string, firstName string, lastName string, email string, phone string, affiliation string, lang string) string {
|
func CheckUserSignup(application *Application, organization *Organization, username string, password string, displayName string, firstName string, lastName string, email string, phone string, affiliation string, lang string) string {
|
||||||
if organization == nil {
|
if organization == nil {
|
||||||
return i18n.Translate(lang, "OrgErr.DoNotExist")
|
return i18n.Translate(lang, "check:Organization does not exist")
|
||||||
}
|
}
|
||||||
|
|
||||||
if application.IsSignupItemVisible("Username") {
|
if application.IsSignupItemVisible("Username") {
|
||||||
if len(username) <= 1 {
|
if len(username) <= 1 {
|
||||||
return i18n.Translate(lang, "UserErr.NameLessThanTwoCharacters")
|
return i18n.Translate(lang, "check:Username must have at least 2 characters")
|
||||||
}
|
}
|
||||||
if unicode.IsDigit(rune(username[0])) {
|
if unicode.IsDigit(rune(username[0])) {
|
||||||
return i18n.Translate(lang, "UserErr.NameStartWithADigitErr")
|
return i18n.Translate(lang, "check:Username cannot start with a digit")
|
||||||
}
|
}
|
||||||
if util.IsEmailValid(username) {
|
if util.IsEmailValid(username) {
|
||||||
return i18n.Translate(lang, "UserErr.NameIsEmailErr")
|
return i18n.Translate(lang, "check:Username cannot be an email address")
|
||||||
}
|
}
|
||||||
if reWhiteSpace.MatchString(username) {
|
if reWhiteSpace.MatchString(username) {
|
||||||
return i18n.Translate(lang, "UserErr.NameCantainWhitSpaceErr")
|
return i18n.Translate(lang, "check:Username cannot contain white spaces")
|
||||||
}
|
}
|
||||||
msg := CheckUsername(username, lang)
|
msg := CheckUsername(username, lang)
|
||||||
if msg != "" {
|
if msg != "" {
|
||||||
@ -66,65 +66,65 @@ func CheckUserSignup(application *Application, organization *Organization, usern
|
|||||||
}
|
}
|
||||||
|
|
||||||
if HasUserByField(organization.Name, "name", username) {
|
if HasUserByField(organization.Name, "name", username) {
|
||||||
return i18n.Translate(lang, "UserErr.NameExistedErr")
|
return i18n.Translate(lang, "check:Username already exists")
|
||||||
}
|
}
|
||||||
if HasUserByField(organization.Name, "email", email) {
|
if HasUserByField(organization.Name, "email", email) {
|
||||||
return i18n.Translate(lang, "EmailErr.ExistedErr")
|
return i18n.Translate(lang, "check:Email already exists")
|
||||||
}
|
}
|
||||||
if HasUserByField(organization.Name, "phone", phone) {
|
if HasUserByField(organization.Name, "phone", phone) {
|
||||||
return i18n.Translate(lang, "PhoneErr.ExistedErr")
|
return i18n.Translate(lang, "check:Phone already exists")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(password) <= 5 {
|
if len(password) <= 5 {
|
||||||
return i18n.Translate(lang, "UserErr.PasswordLessThanSixCharacters")
|
return i18n.Translate(lang, "check:Password must have at least 6 characters")
|
||||||
}
|
}
|
||||||
|
|
||||||
if application.IsSignupItemVisible("Email") {
|
if application.IsSignupItemVisible("Email") {
|
||||||
if email == "" {
|
if email == "" {
|
||||||
if application.IsSignupItemRequired("Email") {
|
if application.IsSignupItemRequired("Email") {
|
||||||
return i18n.Translate(lang, "EmailErr.EmptyErr")
|
return i18n.Translate(lang, "check:Email cannot be empty")
|
||||||
} else {
|
} else {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if HasUserByField(organization.Name, "email", email) {
|
if HasUserByField(organization.Name, "email", email) {
|
||||||
return i18n.Translate(lang, "EmailErr.ExistedErr")
|
return i18n.Translate(lang, "check:Email already exists")
|
||||||
} else if !util.IsEmailValid(email) {
|
} else if !util.IsEmailValid(email) {
|
||||||
return i18n.Translate(lang, "EmailErr.EmailInvalid")
|
return i18n.Translate(lang, "check:Email is invalid")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if application.IsSignupItemVisible("Phone") {
|
if application.IsSignupItemVisible("Phone") {
|
||||||
if phone == "" {
|
if phone == "" {
|
||||||
if application.IsSignupItemRequired("Phone") {
|
if application.IsSignupItemRequired("Phone") {
|
||||||
return i18n.Translate(lang, "PhoneErr.EmptyErr")
|
return i18n.Translate(lang, "check:Phone cannot be empty")
|
||||||
} else {
|
} else {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if HasUserByField(organization.Name, "phone", phone) {
|
if HasUserByField(organization.Name, "phone", phone) {
|
||||||
return i18n.Translate(lang, "PhoneErr.ExistedErr")
|
return i18n.Translate(lang, "check:Phone already exists")
|
||||||
} else if organization.PhonePrefix == "86" && !util.IsPhoneCnValid(phone) {
|
} else if organization.PhonePrefix == "86" && !util.IsPhoneCnValid(phone) {
|
||||||
return i18n.Translate(lang, "PhoneErr.NumberInvalid")
|
return i18n.Translate(lang, "check:Phone number is invalid")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if application.IsSignupItemVisible("Display name") {
|
if application.IsSignupItemVisible("Display name") {
|
||||||
if application.GetSignupItemRule("Display name") == "First, last" && (firstName != "" || lastName != "") {
|
if application.GetSignupItemRule("Display name") == "First, last" && (firstName != "" || lastName != "") {
|
||||||
if firstName == "" {
|
if firstName == "" {
|
||||||
return i18n.Translate(lang, "UserErr.FirstNameBlankErr")
|
return i18n.Translate(lang, "check:FirstName cannot be blank")
|
||||||
} else if lastName == "" {
|
} else if lastName == "" {
|
||||||
return i18n.Translate(lang, "UserErr.LastNameBlankErr")
|
return i18n.Translate(lang, "check:LastName cannot be blank")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if displayName == "" {
|
if displayName == "" {
|
||||||
return i18n.Translate(lang, "UserErr.DisplayNameBlankErr")
|
return i18n.Translate(lang, "check:DisplayName cannot be blank")
|
||||||
} else if application.GetSignupItemRule("Display name") == "Real name" {
|
} else if application.GetSignupItemRule("Display name") == "Real name" {
|
||||||
if !isValidRealName(displayName) {
|
if !isValidRealName(displayName) {
|
||||||
return i18n.Translate(lang, "UserErr.DisplayNameInvalid")
|
return i18n.Translate(lang, "check:DisplayName is not valid real name")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -132,7 +132,7 @@ func CheckUserSignup(application *Application, organization *Organization, usern
|
|||||||
|
|
||||||
if application.IsSignupItemVisible("Affiliation") {
|
if application.IsSignupItemVisible("Affiliation") {
|
||||||
if affiliation == "" {
|
if affiliation == "" {
|
||||||
return i18n.Translate(lang, "UserErr.AffiliationBlankErr")
|
return i18n.Translate(lang, "check:Affiliation cannot be blank")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ func checkSigninErrorTimes(user *User, lang string) string {
|
|||||||
|
|
||||||
// deny the login if the error times is greater than the limit and the last login time is less than the duration
|
// deny the login if the error times is greater than the limit and the last login time is less than the duration
|
||||||
if seconds > 0 {
|
if seconds > 0 {
|
||||||
return fmt.Sprintf(i18n.Translate(lang, "AuthErr.WrongPasswordManyTimes"), seconds/60, seconds%60)
|
return fmt.Sprintf(i18n.Translate(lang, "check:You have entered the wrong password too many times, please wait for %d minutes %d seconds and try again"), seconds/60, seconds%60)
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset the error times
|
// reset the error times
|
||||||
@ -167,7 +167,7 @@ func CheckPassword(user *User, password string, lang string) string {
|
|||||||
|
|
||||||
organization := GetOrganizationByUser(user)
|
organization := GetOrganizationByUser(user)
|
||||||
if organization == nil {
|
if organization == nil {
|
||||||
return i18n.Translate(lang, "OrgErr.DoNotExist")
|
return i18n.Translate(lang, "check:Organization does not exist")
|
||||||
}
|
}
|
||||||
|
|
||||||
credManager := cred.GetCredManager(organization.PasswordType)
|
credManager := cred.GetCredManager(organization.PasswordType)
|
||||||
@ -184,9 +184,9 @@ func CheckPassword(user *User, password string, lang string) string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
return recordSigninErrorInfo(user)
|
return recordSigninErrorInfo(user, lang)
|
||||||
} else {
|
} else {
|
||||||
return fmt.Sprintf(i18n.Translate(lang, "LoginErr.UnsupportedPasswordType"), organization.PasswordType)
|
return fmt.Sprintf(i18n.Translate(lang, "check:unsupported password type: %s"), organization.PasswordType)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,7 +210,7 @@ func checkLdapUserPassword(user *User, password string, lang string) (*User, str
|
|||||||
if len(searchResult.Entries) == 0 {
|
if len(searchResult.Entries) == 0 {
|
||||||
continue
|
continue
|
||||||
} else if len(searchResult.Entries) > 1 {
|
} else if len(searchResult.Entries) > 1 {
|
||||||
return nil, i18n.Translate(lang, "LdapErr.MultipleAccounts")
|
return nil, i18n.Translate(lang, "check:Multiple accounts with same uid, please check your ldap server")
|
||||||
}
|
}
|
||||||
|
|
||||||
dn := searchResult.Entries[0].DN
|
dn := searchResult.Entries[0].DN
|
||||||
@ -221,7 +221,7 @@ func checkLdapUserPassword(user *User, password string, lang string) (*User, str
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !ldapLoginSuccess {
|
if !ldapLoginSuccess {
|
||||||
return nil, i18n.Translate(lang, "LdapErr.PasswordWrong")
|
return nil, i18n.Translate(lang, "check:Ldap user name or password incorrect")
|
||||||
}
|
}
|
||||||
return user, ""
|
return user, ""
|
||||||
}
|
}
|
||||||
@ -229,11 +229,11 @@ func checkLdapUserPassword(user *User, password string, lang string) (*User, str
|
|||||||
func CheckUserPassword(organization string, username string, password string, lang string) (*User, string) {
|
func CheckUserPassword(organization string, username string, password string, lang string) (*User, string) {
|
||||||
user := GetUserByFields(organization, username)
|
user := GetUserByFields(organization, username)
|
||||||
if user == nil || user.IsDeleted == true {
|
if user == nil || user.IsDeleted == true {
|
||||||
return nil, i18n.Translate(lang, "UserErr.DoNotExistSignUp")
|
return nil, i18n.Translate(lang, "check:The user doesn't exist")
|
||||||
}
|
}
|
||||||
|
|
||||||
if user.IsForbidden {
|
if user.IsForbidden {
|
||||||
return nil, i18n.Translate(lang, "LoginErr.UserIsForbidden")
|
return nil, i18n.Translate(lang, "check:The user is forbidden to sign in, please contact the administrator")
|
||||||
}
|
}
|
||||||
|
|
||||||
if user.Ldap != "" {
|
if user.Ldap != "" {
|
||||||
@ -254,13 +254,13 @@ func filterField(field string) bool {
|
|||||||
|
|
||||||
func CheckUserPermission(requestUserId, userId, userOwner string, strict bool, lang string) (bool, error) {
|
func CheckUserPermission(requestUserId, userId, userOwner string, strict bool, lang string) (bool, error) {
|
||||||
if requestUserId == "" {
|
if requestUserId == "" {
|
||||||
return false, fmt.Errorf(i18n.Translate(lang, "LoginErr.LoginFirst"))
|
return false, fmt.Errorf(i18n.Translate(lang, "check:Please login first"))
|
||||||
}
|
}
|
||||||
|
|
||||||
if userId != "" {
|
if userId != "" {
|
||||||
targetUser := GetUser(userId)
|
targetUser := GetUser(userId)
|
||||||
if targetUser == nil {
|
if targetUser == nil {
|
||||||
return false, fmt.Errorf(i18n.Translate(lang, "UserErr.DoNotExist"), userId)
|
return false, fmt.Errorf(i18n.Translate(lang, "check:The user: %s doesn't exist"), userId)
|
||||||
}
|
}
|
||||||
|
|
||||||
userOwner = targetUser.Owner
|
userOwner = targetUser.Owner
|
||||||
@ -272,7 +272,7 @@ func CheckUserPermission(requestUserId, userId, userOwner string, strict bool, l
|
|||||||
} else {
|
} else {
|
||||||
requestUser := GetUser(requestUserId)
|
requestUser := GetUser(requestUserId)
|
||||||
if requestUser == nil {
|
if requestUser == nil {
|
||||||
return false, fmt.Errorf(i18n.Translate(lang, "LoginErr.SessionOutdated"))
|
return false, fmt.Errorf(i18n.Translate(lang, "check:Session outdated, please login again"))
|
||||||
}
|
}
|
||||||
if requestUser.IsGlobalAdmin {
|
if requestUser.IsGlobalAdmin {
|
||||||
hasPermission = true
|
hasPermission = true
|
||||||
@ -287,7 +287,7 @@ func CheckUserPermission(requestUserId, userId, userOwner string, strict bool, l
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return hasPermission, fmt.Errorf(i18n.Translate(lang, "LoginErr.NoPermission"))
|
return hasPermission, fmt.Errorf(i18n.Translate(lang, "check:You don't have the permission to do this"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func CheckAccessPermission(userId string, application *Application) (bool, error) {
|
func CheckAccessPermission(userId string, application *Application) (bool, error) {
|
||||||
@ -322,9 +322,9 @@ func CheckAccessPermission(userId string, application *Application) (bool, error
|
|||||||
|
|
||||||
func CheckUsername(username string, lang string) string {
|
func CheckUsername(username string, lang string) string {
|
||||||
if username == "" {
|
if username == "" {
|
||||||
return i18n.Translate(lang, "UserErr.NameEmptyErr")
|
return i18n.Translate(lang, "check:Empty username.")
|
||||||
} else if len(username) > 39 {
|
} else if len(username) > 39 {
|
||||||
return i18n.Translate(lang, "UserErr.NameTooLang")
|
return i18n.Translate(lang, "check:Username is too long (maximum is 39 characters).")
|
||||||
}
|
}
|
||||||
|
|
||||||
exclude, _ := regexp.Compile("^[\u0021-\u007E]+$")
|
exclude, _ := regexp.Compile("^[\u0021-\u007E]+$")
|
||||||
@ -335,7 +335,7 @@ func CheckUsername(username string, lang string) string {
|
|||||||
// https://stackoverflow.com/questions/58726546/github-username-convention-using-regex
|
// https://stackoverflow.com/questions/58726546/github-username-convention-using-regex
|
||||||
re, _ := regexp.Compile("^[a-zA-Z0-9]+((?:-[a-zA-Z0-9]+)|(?:_[a-zA-Z0-9]+))*$")
|
re, _ := regexp.Compile("^[a-zA-Z0-9]+((?:-[a-zA-Z0-9]+)|(?:_[a-zA-Z0-9]+))*$")
|
||||||
if !re.MatchString(username) {
|
if !re.MatchString(username) {
|
||||||
return i18n.Translate(lang, "UserErr.NameFormatErr")
|
return i18n.Translate(lang, "check:The username may only contain alphanumeric characters, underlines or hyphens, cannot have consecutive hyphens or underlines, and cannot begin or end with a hyphen or underline.")
|
||||||
}
|
}
|
||||||
|
|
||||||
return ""
|
return ""
|
||||||
|
@ -18,6 +18,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"regexp"
|
"regexp"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/casdoor/casdoor/i18n"
|
||||||
)
|
)
|
||||||
|
|
||||||
var reRealName *regexp.Regexp
|
var reRealName *regexp.Regexp
|
||||||
@ -43,7 +45,7 @@ func resetUserSigninErrorTimes(user *User) {
|
|||||||
UpdateUser(user.GetId(), user, []string{"signin_wrong_times", "last_signin_wrong_time"}, user.IsGlobalAdmin)
|
UpdateUser(user.GetId(), user, []string{"signin_wrong_times", "last_signin_wrong_time"}, user.IsGlobalAdmin)
|
||||||
}
|
}
|
||||||
|
|
||||||
func recordSigninErrorInfo(user *User) string {
|
func recordSigninErrorInfo(user *User, lang string) string {
|
||||||
// increase failed login count
|
// increase failed login count
|
||||||
user.SigninWrongTimes++
|
user.SigninWrongTimes++
|
||||||
|
|
||||||
@ -56,9 +58,9 @@ func recordSigninErrorInfo(user *User) string {
|
|||||||
UpdateUser(user.GetId(), user, []string{"signin_wrong_times", "last_signin_wrong_time"}, user.IsGlobalAdmin)
|
UpdateUser(user.GetId(), user, []string{"signin_wrong_times", "last_signin_wrong_time"}, user.IsGlobalAdmin)
|
||||||
leftChances := SigninWrongTimesLimit - user.SigninWrongTimes
|
leftChances := SigninWrongTimesLimit - user.SigninWrongTimes
|
||||||
if leftChances > 0 {
|
if leftChances > 0 {
|
||||||
return fmt.Sprintf("password is incorrect, you have %d remaining chances", leftChances)
|
return fmt.Sprintf(i18n.Translate(lang, "check_util:password is incorrect, you have %d remaining chances"), leftChances)
|
||||||
}
|
}
|
||||||
|
|
||||||
// don't show the chance error message if the user has no chance left
|
// don't show the chance error message if the user has no chance left
|
||||||
return fmt.Sprintf("You have entered the wrong password too many times, please wait for %d minutes and try again", int(LastSignWrongTimeDuration.Minutes()))
|
return fmt.Sprintf(i18n.Translate(lang, "check_util:You have entered the wrong password too many times, please wait for %d minutes and try again"), int(LastSignWrongTimeDuration.Minutes()))
|
||||||
}
|
}
|
||||||
|
@ -204,14 +204,14 @@ func CheckAccountItemModifyRule(accountItem *AccountItem, user *User, lang strin
|
|||||||
switch accountItem.ModifyRule {
|
switch accountItem.ModifyRule {
|
||||||
case "Admin":
|
case "Admin":
|
||||||
if !(user.IsAdmin || user.IsGlobalAdmin) {
|
if !(user.IsAdmin || user.IsGlobalAdmin) {
|
||||||
return false, fmt.Sprintf(i18n.Translate(lang, "OrgErr.OnlyAdmin"), accountItem.Name)
|
return false, fmt.Sprintf(i18n.Translate(lang, "organization:Only admin can modify the %s."), accountItem.Name)
|
||||||
}
|
}
|
||||||
case "Immutable":
|
case "Immutable":
|
||||||
return false, fmt.Sprintf(i18n.Translate(lang, "OrgErr.Immutable"), accountItem.Name)
|
return false, fmt.Sprintf(i18n.Translate(lang, "organization:The %s is immutable."), accountItem.Name)
|
||||||
case "Self":
|
case "Self":
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
return false, fmt.Sprintf(i18n.Translate(lang, "OrgErr.UnknownModifyRule"), accountItem.ModifyRule)
|
return false, fmt.Sprintf(i18n.Translate(lang, "organization:Unknown modify rule %s."), accountItem.ModifyRule)
|
||||||
}
|
}
|
||||||
return true, ""
|
return true, ""
|
||||||
}
|
}
|
||||||
|
@ -277,7 +277,7 @@ func GetCaptchaProviderByOwnerName(applicationId, lang string) (*Provider, error
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !existed {
|
if !existed {
|
||||||
return nil, fmt.Errorf(i18n.Translate(lang, "ProviderErr.DoNotExist"), applicationId)
|
return nil, fmt.Errorf(i18n.Translate(lang, "provider:the provider: %s does not exist"), applicationId)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &provider, nil
|
return &provider, nil
|
||||||
@ -289,7 +289,7 @@ func GetCaptchaProviderByApplication(applicationId, isCurrentProvider, lang stri
|
|||||||
}
|
}
|
||||||
application := GetApplication(applicationId)
|
application := GetApplication(applicationId)
|
||||||
if application == nil || len(application.Providers) == 0 {
|
if application == nil || len(application.Providers) == 0 {
|
||||||
return nil, fmt.Errorf(i18n.Translate(lang, "ApplicationErr.InvalidID"))
|
return nil, fmt.Errorf(i18n.Translate(lang, "provider:Invalid application id"))
|
||||||
}
|
}
|
||||||
for _, provider := range application.Providers {
|
for _, provider := range application.Providers {
|
||||||
if provider.Provider == nil {
|
if provider.Provider == nil {
|
||||||
|
@ -45,7 +45,7 @@ func ParseSamlResponse(samlResponse string, providerType string) (string, error)
|
|||||||
func GenerateSamlLoginUrl(id, relayState, lang string) (string, string, error) {
|
func GenerateSamlLoginUrl(id, relayState, lang string) (string, string, error) {
|
||||||
provider := GetProvider(id)
|
provider := GetProvider(id)
|
||||||
if provider.Category != "SAML" {
|
if provider.Category != "SAML" {
|
||||||
return "", "", fmt.Errorf(i18n.Translate(lang, "ProviderErr.CategoryNotSAML"), provider.Name)
|
return "", "", fmt.Errorf(i18n.Translate(lang, "saml_sp:provider %s's category is not SAML"), provider.Name)
|
||||||
}
|
}
|
||||||
sp, err := buildSp(provider, "")
|
sp, err := buildSp(provider, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -130,13 +130,13 @@ func UploadFileSafe(provider *Provider, fullFilePath string, fileBuffer *bytes.B
|
|||||||
func DeleteFile(provider *Provider, objectKey string, lang string) error {
|
func DeleteFile(provider *Provider, objectKey string, lang string) error {
|
||||||
// check fullFilePath is there security issue
|
// check fullFilePath is there security issue
|
||||||
if strings.Contains(objectKey, "..") {
|
if strings.Contains(objectKey, "..") {
|
||||||
return fmt.Errorf(i18n.Translate(lang, "StorageErr.ObjectKeyNotAllowed"), objectKey)
|
return fmt.Errorf(i18n.Translate(lang, "storage:The objectKey: %s is not allowed"), objectKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
endpoint := getProviderEndpoint(provider)
|
endpoint := getProviderEndpoint(provider)
|
||||||
storageProvider := storage.GetStorageProvider(provider.Type, provider.ClientId, provider.ClientSecret, provider.RegionId, provider.Bucket, endpoint)
|
storageProvider := storage.GetStorageProvider(provider.Type, provider.ClientId, provider.ClientSecret, provider.RegionId, provider.Bucket, endpoint)
|
||||||
if storageProvider == nil {
|
if storageProvider == nil {
|
||||||
return fmt.Errorf(i18n.Translate(lang, "ProviderErr.ProviderNotSupported"), provider.Type)
|
return fmt.Errorf(i18n.Translate(lang, "storage:The provider type: %s is not supported"), provider.Type)
|
||||||
}
|
}
|
||||||
|
|
||||||
if provider.Domain == "" {
|
if provider.Domain == "" {
|
||||||
|
@ -241,12 +241,12 @@ func GetTokenByTokenAndApplication(token string, application string) *Token {
|
|||||||
|
|
||||||
func CheckOAuthLogin(clientId string, responseType string, redirectUri string, scope string, state string, lang string) (string, *Application) {
|
func CheckOAuthLogin(clientId string, responseType string, redirectUri string, scope string, state string, lang string) (string, *Application) {
|
||||||
if responseType != "code" && responseType != "token" && responseType != "id_token" {
|
if responseType != "code" && responseType != "token" && responseType != "id_token" {
|
||||||
return fmt.Sprintf(i18n.Translate(lang, "ApplicationErr.GrantTypeNotSupport"), responseType), nil
|
return fmt.Sprintf(i18n.Translate(lang, "token:Grant_type: %s is not supported in this application"), responseType), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
application := GetApplicationByClientId(clientId)
|
application := GetApplicationByClientId(clientId)
|
||||||
if application == nil {
|
if application == nil {
|
||||||
return i18n.Translate(lang, "TokenErr.InvalidClientId"), nil
|
return i18n.Translate(lang, "token:Invalid client_id"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
validUri := false
|
validUri := false
|
||||||
@ -257,7 +257,7 @@ func CheckOAuthLogin(clientId string, responseType string, redirectUri string, s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !validUri {
|
if !validUri {
|
||||||
return fmt.Sprintf(i18n.Translate(lang, "TokenErr.RedirectURIDoNotExist"), redirectUri), application
|
return fmt.Sprintf(i18n.Translate(lang, "token:Redirect URI: %s doesn't exist in the allowed Redirect URI list"), redirectUri), application
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mask application for /api/get-app-login
|
// Mask application for /api/get-app-login
|
||||||
@ -269,7 +269,7 @@ func GetOAuthCode(userId string, clientId string, responseType string, redirectU
|
|||||||
user := GetUser(userId)
|
user := GetUser(userId)
|
||||||
if user == nil {
|
if user == nil {
|
||||||
return &Code{
|
return &Code{
|
||||||
Message: fmt.Sprintf("The user: %s doesn't exist", userId),
|
Message: fmt.Sprintf("token:The user: %s doesn't exist", userId),
|
||||||
Code: "",
|
Code: "",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -153,7 +153,7 @@ func CheckVerificationCode(dest, code, lang string) string {
|
|||||||
record := getVerificationRecord(dest)
|
record := getVerificationRecord(dest)
|
||||||
|
|
||||||
if record == nil {
|
if record == nil {
|
||||||
return i18n.Translate(lang, "PhoneErr.CodeNotSent")
|
return i18n.Translate(lang, "verification:Code has not been sent yet!")
|
||||||
}
|
}
|
||||||
|
|
||||||
timeout, err := conf.GetConfigInt64("verificationCodeTimeout")
|
timeout, err := conf.GetConfigInt64("verificationCodeTimeout")
|
||||||
@ -163,7 +163,7 @@ func CheckVerificationCode(dest, code, lang string) string {
|
|||||||
|
|
||||||
now := time.Now().Unix()
|
now := time.Now().Unix()
|
||||||
if now-record.Time > timeout*60 {
|
if now-record.Time > timeout*60 {
|
||||||
return fmt.Sprintf(i18n.Translate(lang, "PhoneErr.CodeTimeOut"), timeout)
|
return fmt.Sprintf(i18n.Translate(lang, "verification:You should verify your code in %d min!"), timeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
if record.Code != code {
|
if record.Code != code {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user