Compare commits

...

10 Commits

62 changed files with 2364 additions and 2255 deletions

View File

@ -42,6 +42,7 @@ type Response struct {
Name string `json:"name"`
Data interface{} `json:"data"`
Data2 interface{} `json:"data2"`
Data3 interface{} `json:"data3"`
}
type Captcha struct {

View File

@ -132,7 +132,7 @@ func (c *ApiController) HandleLoggedIn(application *object.Application, user *ob
if form.Type == ResponseTypeLogin {
c.SetSessionUsername(userId)
util.LogInfo(c.Ctx, "API: [%s] signed in", userId)
resp = &Response{Status: "ok", Msg: "", Data: userId, Data2: user.NeedUpdatePassword}
resp = &Response{Status: "ok", Msg: "", Data: userId, Data3: user.NeedUpdatePassword}
} else if form.Type == ResponseTypeCode {
clientId := c.Input().Get("clientId")
responseType := c.Input().Get("responseType")
@ -154,7 +154,7 @@ func (c *ApiController) HandleLoggedIn(application *object.Application, user *ob
}
resp = codeToResponse(code)
resp.Data2 = user.NeedUpdatePassword
resp.Data3 = user.NeedUpdatePassword
if application.EnableSigninSession || application.HasPromptPage() {
// The prompt page needs the user to be signed in
c.SetSessionUsername(userId)
@ -168,7 +168,7 @@ func (c *ApiController) HandleLoggedIn(application *object.Application, user *ob
token, _ := object.GetTokenByUser(application, user, scope, nonce, c.Ctx.Request.Host)
resp = tokenToResponse(token)
resp.Data2 = user.NeedUpdatePassword
resp.Data3 = user.NeedUpdatePassword
}
} else if form.Type == ResponseTypeDevice {
authCache, ok := object.DeviceAuthMap.LoadAndDelete(form.UserCode)
@ -195,14 +195,14 @@ func (c *ApiController) HandleLoggedIn(application *object.Application, user *ob
object.DeviceAuthMap.Store(authCacheCast.UserName, deviceAuthCacheDeviceCodeCast)
resp = &Response{Status: "ok", Msg: "", Data: userId, Data2: user.NeedUpdatePassword}
resp = &Response{Status: "ok", Msg: "", Data: userId, Data3: user.NeedUpdatePassword}
} else if form.Type == ResponseTypeSaml { // saml flow
res, redirectUrl, method, err := object.GetSamlResponse(application, user, form.SamlRequest, c.Ctx.Request.Host)
if err != nil {
c.ResponseError(err.Error(), nil)
return
}
resp = &Response{Status: "ok", Msg: "", Data: res, Data2: map[string]interface{}{"redirectUrl": redirectUrl, "method": method, "needUpdatePassword": user.NeedUpdatePassword}}
resp = &Response{Status: "ok", Msg: "", Data: res, Data2: map[string]interface{}{"redirectUrl": redirectUrl, "method": method}, Data3: user.NeedUpdatePassword}
if application.EnableSigninSession || application.HasPromptPage() {
// The prompt page needs the user to be signed in
@ -555,8 +555,11 @@ func (c *ApiController) Login() {
c.ResponseError(c.T("auth:The login method: login with LDAP is not enabled for the application"))
return
}
clientIp := util.GetClientIpFromRequest(c.Ctx.Request)
var enableCaptcha bool
if enableCaptcha, err = object.CheckToEnableCaptcha(application, authForm.Organization, authForm.Username); err != nil {
if enableCaptcha, err = object.CheckToEnableCaptcha(application, authForm.Organization, authForm.Username, clientIp); err != nil {
c.ResponseError(err.Error())
return
} else if enableCaptcha {
@ -1222,27 +1225,26 @@ func (c *ApiController) GetQRCode() {
func (c *ApiController) GetCaptchaStatus() {
organization := c.Input().Get("organization")
userId := c.Input().Get("userId")
user, err := object.GetUserByFields(organization, userId)
applicationName := c.Input().Get("application")
application, err := object.GetApplication(fmt.Sprintf("admin/%s", applicationName))
if err != nil {
c.ResponseError(err.Error())
return
}
captchaEnabled := false
if user != nil {
var failedSigninLimit int
failedSigninLimit, _, err = object.GetFailedSigninConfigByUser(user)
if err != nil {
c.ResponseError(err.Error())
return
}
if user.SigninWrongTimes >= failedSigninLimit {
captchaEnabled = true
}
if application == nil {
c.ResponseError("application not found")
return
}
clientIp := util.GetClientIpFromRequest(c.Ctx.Request)
captchaEnabled, err := object.CheckToEnableCaptcha(application, organization, userId, clientIp)
if err != nil {
c.ResponseError(err.Error())
return
}
c.ResponseOk(captchaEnabled)
return
}
// Callback

View File

@ -574,7 +574,7 @@ func (c *ApiController) SetPassword() {
targetUser.LastChangePasswordTime = util.GetCurrentTime()
if user.Ldap == "" {
_, err = object.UpdateUser(userId, targetUser, []string{"password", "need_update_password", "password_type", "last_change_password_time"}, false)
_, err = object.UpdateUser(userId, targetUser, []string{"password", "password_salt", "need_update_password", "password_type", "last_change_password_time"}, false)
} else {
if isAdmin {
err = object.ResetLdapPassword(targetUser, "", newPassword, c.GetAcceptLanguage())

View File

@ -23,7 +23,7 @@ func NewArgon2idCredManager() *Argon2idCredManager {
return cm
}
func (cm *Argon2idCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
func (cm *Argon2idCredManager) GetHashedPassword(password string, salt string) string {
hash, err := argon2id.CreateHash(password, argon2id.DefaultParams)
if err != nil {
return ""
@ -31,7 +31,7 @@ func (cm *Argon2idCredManager) GetHashedPassword(password string, userSalt strin
return hash
}
func (cm *Argon2idCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
func (cm *Argon2idCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool {
match, _ := argon2id.ComparePasswordAndHash(plainPwd, hashedPwd)
return match
}

View File

@ -9,7 +9,7 @@ func NewBcryptCredManager() *BcryptCredManager {
return cm
}
func (cm *BcryptCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
func (cm *BcryptCredManager) GetHashedPassword(password string, salt string) string {
bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if err != nil {
return ""
@ -17,7 +17,7 @@ func (cm *BcryptCredManager) GetHashedPassword(password string, userSalt string,
return string(bytes)
}
func (cm *BcryptCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
func (cm *BcryptCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool {
err := bcrypt.CompareHashAndPassword([]byte(hashedPwd), []byte(plainPwd))
return err == nil
}

View File

@ -15,8 +15,8 @@
package cred
type CredManager interface {
GetHashedPassword(password string, userSalt string, organizationSalt string) string
IsPasswordCorrect(password string, passwordHash string, userSalt string, organizationSalt string) bool
GetHashedPassword(password string, salt string) string
IsPasswordCorrect(password string, passwordHash string, salt string) bool
}
func GetCredManager(passwordType string) CredManager {

View File

@ -37,14 +37,10 @@ func NewMd5UserSaltCredManager() *Md5UserSaltCredManager {
return cm
}
func (cm *Md5UserSaltCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
res := getMd5HexDigest(password)
if userSalt != "" {
res = getMd5HexDigest(res + userSalt)
}
return res
func (cm *Md5UserSaltCredManager) GetHashedPassword(password string, salt string) string {
return getMd5HexDigest(getMd5HexDigest(password) + salt)
}
func (cm *Md5UserSaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
return hashedPwd == cm.GetHashedPassword(plainPwd, userSalt, organizationSalt)
func (cm *Md5UserSaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool {
return hashedPwd == cm.GetHashedPassword(plainPwd, salt)
}

View File

@ -28,13 +28,13 @@ func NewPbkdf2SaltCredManager() *Pbkdf2SaltCredManager {
return cm
}
func (cm *Pbkdf2SaltCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
func (cm *Pbkdf2SaltCredManager) GetHashedPassword(password string, salt string) string {
// https://www.keycloak.org/docs/latest/server_admin/index.html#password-database-compromised
decodedSalt, _ := base64.StdEncoding.DecodeString(userSalt)
decodedSalt, _ := base64.StdEncoding.DecodeString(salt)
res := pbkdf2.Key([]byte(password), decodedSalt, 27500, 64, sha256.New)
return base64.StdEncoding.EncodeToString(res)
}
func (cm *Pbkdf2SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
return hashedPwd == cm.GetHashedPassword(plainPwd, userSalt, organizationSalt)
func (cm *Pbkdf2SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool {
return hashedPwd == cm.GetHashedPassword(plainPwd, salt)
}

View File

@ -32,12 +32,8 @@ func NewPbkdf2DjangoCredManager() *Pbkdf2DjangoCredManager {
return cm
}
func (m *Pbkdf2DjangoCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
func (m *Pbkdf2DjangoCredManager) GetHashedPassword(password string, salt string) string {
iterations := 260000
salt := userSalt
if salt == "" {
salt = organizationSalt
}
saltBytes := []byte(salt)
passwordBytes := []byte(password)
@ -46,7 +42,7 @@ func (m *Pbkdf2DjangoCredManager) GetHashedPassword(password string, userSalt st
return "pbkdf2_sha256$" + strconv.Itoa(iterations) + "$" + salt + "$" + hashBase64
}
func (m *Pbkdf2DjangoCredManager) IsPasswordCorrect(password string, passwordHash string, userSalt string, organizationSalt string) bool {
func (m *Pbkdf2DjangoCredManager) IsPasswordCorrect(password string, passwordHash string, _salt string) bool {
parts := strings.Split(passwordHash, "$")
if len(parts) != 4 {
return false

View File

@ -21,10 +21,10 @@ func NewPlainCredManager() *PlainCredManager {
return cm
}
func (cm *PlainCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
func (cm *PlainCredManager) GetHashedPassword(password string, salt string) string {
return password
}
func (cm *PlainCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
func (cm *PlainCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool {
return hashedPwd == plainPwd
}

View File

@ -37,14 +37,10 @@ func NewSha256SaltCredManager() *Sha256SaltCredManager {
return cm
}
func (cm *Sha256SaltCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
res := getSha256HexDigest(password)
if organizationSalt != "" {
res = getSha256HexDigest(res + organizationSalt)
}
return res
func (cm *Sha256SaltCredManager) GetHashedPassword(password string, salt string) string {
return getSha256HexDigest(getSha256HexDigest(password) + salt)
}
func (cm *Sha256SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
return hashedPwd == cm.GetHashedPassword(plainPwd, userSalt, organizationSalt)
func (cm *Sha256SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool {
return hashedPwd == cm.GetHashedPassword(plainPwd, salt)
}

View File

@ -23,12 +23,12 @@ func TestGetSaltedPassword(t *testing.T) {
password := "123456"
salt := "123"
cm := NewSha256SaltCredManager()
fmt.Printf("%s -> %s\n", password, cm.GetHashedPassword(password, "", salt))
fmt.Printf("%s -> %s\n", password, cm.GetHashedPassword(password, salt))
}
func TestGetPassword(t *testing.T) {
password := "123456"
cm := NewSha256SaltCredManager()
// https://passwordsgenerator.net/sha256-hash-generator/
fmt.Printf("%s -> %s\n", "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92", cm.GetHashedPassword(password, "", ""))
fmt.Printf("%s -> %s\n", "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92", cm.GetHashedPassword(password, ""))
}

View File

@ -37,14 +37,10 @@ func NewSha512SaltCredManager() *Sha512SaltCredManager {
return cm
}
func (cm *Sha512SaltCredManager) GetHashedPassword(password string, userSalt string, organizationSalt string) string {
res := getSha512HexDigest(password)
if organizationSalt != "" {
res = getSha512HexDigest(res + organizationSalt)
}
return res
func (cm *Sha512SaltCredManager) GetHashedPassword(password string, salt string) string {
return getSha512HexDigest(getSha512HexDigest(password) + salt)
}
func (cm *Sha512SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, userSalt string, organizationSalt string) bool {
return hashedPwd == cm.GetHashedPassword(plainPwd, userSalt, organizationSalt)
func (cm *Sha512SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool {
return hashedPwd == cm.GetHashedPassword(plainPwd, salt)
}

View File

@ -3,7 +3,7 @@
"Failed to add user": "No se pudo agregar el usuario",
"Get init score failed, error: %w": "Error al obtener el puntaje de inicio, error: %w",
"Please sign out first": "Por favor, cierra sesión primero",
"The application does not allow to sign up new account": "La aplicación no permite registrarse con una cuenta nueva"
"The application does not allow to sign up new account": "La aplicación no permite registrar nuevas cuentas"
},
"auth": {
"Challenge method should be S256": "El método de desafío debe ser S256",
@ -12,24 +12,24 @@
"Failed to login in: %s": "No se ha podido iniciar sesión en: %s",
"Invalid token": "Token inválido",
"State expected: %s, but got: %s": "Estado esperado: %s, pero se obtuvo: %s",
"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": "La cuenta para el proveedor: %s y nombre de usuario: %s (%s) no existe y no está permitido registrarse como una cuenta nueva a través de %%s, por favor use otro método para registrarse",
"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": "La cuenta para el proveedor: %s y el nombre de usuario: %s (%s) no existe y no se permite registrarse como una nueva cuenta, por favor contacte a su soporte de TI",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "La cuenta para proveedor: %s y nombre de usuario: %s (%s) ya está vinculada a otra cuenta: %s (%s)",
"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": "La cuenta para el proveedor: %s y el nombre de usuario: %s (%s) no existen y no está permitido registrarse como una cuenta nueva a través de %%s, por favor use otro método para registrarse",
"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": "La cuenta para el proveedor: %s y el nombre de usuario: %s (%s) no existen y no se permite registrarse como una nueva cuenta, por favor contacte a su soporte de TI",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "La cuenta para el proveedor: %s y el nombre de usuario: %s (%s) ya está vinculada a otra cuenta: %s (%s)",
"The application: %s does not exist": "La aplicación: %s no existe",
"The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with LDAP is not enabled for the application": "El método de inicio de sesión: el inicio de sesión con LDAP no está habilitado para la aplicación",
"The login method: login with SMS is not enabled for the application": "El método de inicio de sesión: el inicio de sesión con SMS no está habilitado para la aplicación",
"The login method: login with email is not enabled for the application": "El método de inicio de sesión: el inicio de sesión con correo electrónico no está habilitado para la aplicación",
"The login method: login with face is not enabled for the application": "El método de inicio de sesión: el inicio de sesión con reconocimiento facial no está habilitado para la aplicación",
"The login method: login with password is not enabled for the application": "El método de inicio de sesión: inicio de sesión con contraseña no está habilitado para la aplicación",
"The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s does not exist": "La organización: %s no existe",
"The provider: %s does not exist": "The provider: %s does not exist",
"The provider: %s is not enabled for the application": "El proveedor: %s no está habilitado para la aplicación",
"Unauthorized operation": "Operación no autorizada",
"Unknown authentication type (not password or provider), form = %s": "Tipo de autenticación desconocido (no es contraseña o proveedor), formulario = %s",
"User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"User's tag: %s is not listed in the application's tags": "El tag de usuario: %s no está en la lista de tags de la aplicación",
"UserCode Expired": "UserCode Expired",
"UserCode Invalid": "UserCode Invalid",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "el usuario premium %s no tiene una suscripción activa o pendiente y la aplicación: %s no tiene ninguna lista de precios fijada",
"the application for user %s is not found": "the application for user %s is not found",
"the organization: %s is not found": "the organization: %s is not found"
},
@ -40,39 +40,39 @@
"%s does not meet the CIDR format requirements: %s": "%s does not meet the CIDR format requirements: %s",
"Affiliation cannot be blank": "Afiliación no puede estar en blanco",
"CIDR for IP: %s should not be empty": "CIDR for IP: %s should not be empty",
"Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"Default code does not match the code's matching rules": "El código por defecto no cumple con las reglas de coincidencia",
"DisplayName cannot be blank": "El nombre de visualización no puede estar en blanco",
"DisplayName is not valid real name": "El nombre de pantalla no es un nombre real válido",
"Email already exists": "El correo electrónico ya existe",
"Email cannot be empty": "El correo electrónico no puede estar vacío",
"Email is invalid": "El correo electrónico no es válido",
"Empty username.": "Nombre de usuario vacío.",
"Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "No puede iniciar sesión porque no existe ningún dato facial",
"Face data mismatch": "Los datos faciales no coinciden",
"Failed to parse client IP: %s": "Failed to parse client IP: %s",
"FirstName cannot be blank": "El nombre no puede estar en blanco",
"Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "Invitation code exhausted",
"Invitation code is invalid": "Invitation code is invalid",
"Invitation code suspended": "Invitation code suspended",
"LDAP user name or password incorrect": "Nombre de usuario o contraseña de Ldap incorrectos",
"LastName cannot be blank": "El apellido no puede estar en blanco",
"FirstName cannot be blank": "El Nombre no puede estar en blanco",
"Invitation code cannot be blank": "El Código de Invitación no puede estar en blanco",
"Invitation code exhausted": "Código de Invitación agotado",
"Invitation code is invalid": "El Código de Invitación es inválido",
"Invitation code suspended": "Código de Invitación suspendido",
"LDAP user name or password incorrect": "Nombre de usuario o contraseña de LDAP incorrectos",
"LastName cannot be blank": "El Apellido no puede estar en blanco",
"Multiple accounts with same uid, please check your ldap server": "Cuentas múltiples con el mismo uid, por favor revise su servidor ldap",
"Organization does not exist": "La organización no existe",
"Password cannot be empty": "Password cannot be empty",
"Phone already exists": "El teléfono ya existe",
"Phone cannot be empty": "Teléfono no puede estar vacío",
"Phone number is invalid": "El número de teléfono no es válido",
"Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Please register using the email corresponding to the invitation code": "Por favor regístrese usando el email correspondiente al código de invitación",
"Please register using the phone corresponding to the invitation code": "Por favor regístrate usando el teléfono correspondiente al código de invitación",
"Please register using the username corresponding to the invitation code": "Por favor regístrate usando el teléfono correspondiente al código de invitación",
"Session outdated, please login again": "Sesión expirada, por favor vuelva a iniciar sesión",
"The invitation code has already been used": "The invitation code has already been used",
"The invitation code has already been used": "El código de invitación ya ha sido utilizado",
"The user is forbidden to sign in, please contact the administrator": "El usuario no está autorizado a iniciar sesión, por favor contacte al administrador",
"The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"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.": "El nombre de usuario solo puede contener caracteres alfanuméricos, guiones bajos o guiones, no puede tener guiones o subrayados consecutivos, y no puede comenzar ni terminar con un guión o subrayado.",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "El usuario: %s no existe en el servidor LDAP",
"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.": "El nombre de usuario solo puede contener caracteres alfanuméricos, guiones bajos o medios, no puede tener guiones o subrayados consecutivos, y no puede comenzar ni terminar con un guión o subrayado.",
"The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "El valor \\\"%s\\\" para el campo de la cuenta \\\"%s\\\" no coincide con la regla regex de la cuenta",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "El valor \\\"%s\\\" para el campo de registro \\\"%s\\\" no coincide con la regla regex de registro de la aplicación \\\"%s\\\"",
"Username already exists": "El nombre de usuario ya existe",
"Username cannot be an email address": "Nombre de usuario no puede ser una dirección de correo electrónico",
"Username cannot contain white spaces": "Nombre de usuario no puede contener espacios en blanco",
@ -80,11 +80,11 @@
"Username is too long (maximum is 255 characters).": "El nombre de usuario es demasiado largo (el máximo es de 255 caracteres).",
"Username must have at least 2 characters": "Nombre de usuario debe tener al menos 2 caracteres",
"Username supports email format. Also 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. Also pay attention to the email format.": "Username supports email format. Also 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. Also pay attention to the email format.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Has ingresado la contraseña o código incorrecto demasiadas veces, por favor espera %d minutos e intenta de nuevo",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "Has ingresado la contraseña o código incorrectamente demasiadas veces, por favor espera %d minutos e intenta de nuevo",
"Your IP address: %s has been banned according to the configuration of: ": "Your IP address: %s has been banned according to the configuration of: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"",
"Your region is not allow to signup by phone": "Tu región no está permitida para registrarse por teléfono",
"password or code is incorrect": "password or code is incorrect",
"password or code is incorrect": "la contraseña o el código son incorrectos",
"password or code is incorrect, you have %d remaining chances": "Contraseña o código incorrecto, tienes %d intentos restantes",
"unsupported password type: %s": "Tipo de contraseña no compatible: %s"
},
@ -97,12 +97,12 @@
"Missing parameter": "Parámetro faltante",
"Only admin user can specify user": "Only admin user can specify user",
"Please login first": "Por favor, inicia sesión primero",
"The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The organization: %s should have one application at least": "La organización: %s debe tener al menos una aplicación",
"The user: %s doesn't exist": "El usuario: %s no existe",
"Wrong userId": "Wrong userId",
"don't support captchaProvider: ": "No apoyo a captchaProvider",
"this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"this operation requires administrator to perform": "this operation requires administrator to perform"
"don't support captchaProvider: ": "no hay soporte para el captchaProvider: ",
"this operation is not allowed in demo mode": "esta operación no está permitida en el modo demo",
"this operation requires administrator to perform": "esta operación requiere ser administrador para ejecutar"
},
"ldap": {
"Ldap server exist": "El servidor LDAP existe"
@ -122,14 +122,14 @@
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option."
},
"permission": {
"The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
"The permission: \\\"%s\\\" doesn't exist": "El permiso: \\\"%s\\\" no existe"
},
"provider": {
"Invalid application id": "Identificación de aplicación no válida",
"the provider: %s does not exist": "El proveedor: %s no existe"
},
"resource": {
"User is nil for tag: avatar": "El usuario es nulo para la etiqueta: avatar",
"User is nil for tag: avatar": "El usuario es nulo para el tag: avatar",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "Nombre de usuario o ruta completa de archivo está vacío: nombre de usuario = %s, ruta completa de archivo = %s"
},
"saml": {
@ -158,7 +158,7 @@
"Token not found, invalid accessToken": "Token no encontrado, accessToken inválido"
},
"user": {
"Display name cannot be empty": "El nombre de pantalla no puede estar vacío",
"Display name cannot be empty": "El nombre para mostrar no puede estar vacío",
"MFA email is enabled but email is empty": "MFA email is enabled but email is empty",
"MFA phone is enabled but phone number is empty": "MFA phone is enabled but phone number is empty",
"New password cannot contain blank space.": "La nueva contraseña no puede contener espacios en blanco.",
@ -173,16 +173,16 @@
"Invalid captcha provider.": "Proveedor de captcha no válido.",
"Phone number is invalid in your region %s": "El número de teléfono es inválido en tu región %s",
"The verification code has already been used!": "The verification code has already been used!",
"The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "¡El código de verificación aún no ha sido enviado!",
"Turing test failed.": "El test de Turing falló.",
"Unable to get the email modify rule.": "No se puede obtener la regla de modificación de correo electrónico.",
"Unable to get the phone modify rule.": "No se pudo obtener la regla de modificación del teléfono.",
"Unknown type": "Tipo desconocido",
"Wrong verification code!": "¡Código de verificación incorrecto!",
"You should verify your code in %d min!": "¡Deberías verificar tu código en %d minutos!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "El usuario no existe, por favor regístrese primero"
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "por favor agregue un proveedor SMS a la lista de \\\"Proveedores\\\" para la aplicación: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "por favor agregue un proveedor de EMAIL a la lista de \\\"Proveedores\\\" para la aplicación: %s",
"the user does not exist, please sign up first": "el usuario no existe, por favor regístrese primero"
},
"webauthn": {
"Please call WebAuthnSigninBegin first": "Por favor, llama primero a WebAuthnSigninBegin"

View File

@ -1,35 +1,35 @@
{
"account": {
"Failed to add user": "ユーザーの追加に失敗しました",
"Get init score failed, error: %w": "イニットスコアの取得に失敗しました。エラー:%w",
"Please sign out first": "最初にサインアウトしてください",
"Get init score failed, error: %w": "初期スコアの取得に失敗しました。エラー:%w",
"Please sign out first": "にサインアウトしてください",
"The application does not allow to sign up new account": "アプリケーションは新しいアカウントの登録を許可しません"
},
"auth": {
"Challenge method should be S256": "チャレンジメソッドはS256である必要があります",
"DeviceCode Invalid": "DeviceCode Invalid",
"Failed to create user, user information is invalid: %s": "ユーザーの作成に失敗しました。ユーザー情報が無効です:%s",
"Failed to login in: %s": "ログインできませんでした:%s",
"Failed to login in: %s": "ログインに失敗しました: %s",
"Invalid token": "無効なトークン",
"State expected: %s, but got: %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 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 login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with password is not enabled for the application": "ログイン方法:パスワードでのログインはアプリケーションで有効になっていません",
"The organization: %s does not exist": "The organization: %s does not exist",
"The login method: login with LDAP is not enabled for the application": "ログイン方法LDAPでのログインはアプリケーションで有効になっていません",
"The login method: login with SMS is not enabled for the application": "ログイン方法SMSによるログインはアプリケーションで有効になっていません",
"The login method: login with email is not enabled for the application": "ログイン方法:メールによるログインはアプリケーションで有効になっていません",
"The login method: login with face is not enabled for the application": "ログイン方法:顔認証によるログインはアプリケーションで有効になっていません",
"The login method: login with password is not enabled for the application": "ログイン方法:パスワードによるログインはアプリケーションで有効になっていません",
"The organization: %s does not exist": "組織: %s は存在しません",
"The provider: %s does not exist": "The provider: %s does not exist",
"The provider: %s is not enabled for the application": "プロバイダー:%sはアプリケーションでは有効化されていません",
"Unauthorized operation": "不正操作",
"Unauthorized operation": "権限のない操作",
"Unknown authentication type (not password or provider), form = %s": "不明な認証タイプ(パスワードまたはプロバイダーではない)フォーム=%s",
"User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"User's tag: %s is not listed in the application's tags": "ユーザーのタグ: %s はアプリケーションのタグに一覧表示されていません",
"UserCode Expired": "UserCode Expired",
"UserCode Invalid": "UserCode Invalid",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "有料ユーザー %s は有効または保留中のサブスクリプションとアプリケーションを持っていません: %s はデフォルトの価格を持っていません",
"the application for user %s is not found": "the application for user %s is not found",
"the organization: %s is not found": "the organization: %s is not found"
},
@ -40,41 +40,41 @@
"%s does not meet the CIDR format requirements: %s": "%s does not meet the CIDR format requirements: %s",
"Affiliation cannot be blank": "所属は空白にできません",
"CIDR for IP: %s should not be empty": "CIDR for IP: %s should not be empty",
"Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"Default code does not match the code's matching rules": "デフォルトのコードは、コードの一致するルールと一致しません",
"DisplayName cannot be blank": "表示名は空白にできません",
"DisplayName is not valid real name": "表示名は有効な実名ではありません",
"Email already exists": "メールは既に存在します",
"Email cannot be empty": "メールが空白にできません",
"Email already exists": "メールアドレスは既に存在します",
"Email cannot be empty": "メールアドレスは空欄にはできません",
"Email is invalid": "電子メールは無効です",
"Empty username.": "空のユーザー名。",
"Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "Face data mismatch",
"Empty username.": "ユーザー名が空白です。",
"Face data does not exist, cannot log in": "フェイスデータが存在しないため、ログインできません",
"Face data mismatch": "フェイスデータが一致しません",
"Failed to parse client IP: %s": "Failed to parse client IP: %s",
"FirstName cannot be blank": "ファーストネームは空白にできません",
"Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "Invitation code exhausted",
"Invitation code is invalid": "Invitation code is invalid",
"Invitation code suspended": "Invitation code suspended",
"LDAP user name or password incorrect": "Ldapのユーザー名またはパスワードが間違っています",
"LastName cannot be blank": "は空白にできません",
"FirstName cannot be blank": "名前は空白にできません",
"Invitation code cannot be blank": "招待コードは空白にできません",
"Invitation code exhausted": "招待コードが切れました",
"Invitation code is invalid": "招待コードが無効です",
"Invitation code suspended": "招待コードが一時停止されました",
"LDAP user name or password incorrect": "LDAPユーザー名またはパスワードが間違っています",
"LastName cannot be blank": "苗字は空白にできません",
"Multiple accounts with same uid, please check your ldap server": "同じuidを持つ複数のアカウントがあります。あなたのLDAPサーバーを確認してください",
"Organization does not exist": "組織は存在しません",
"Password cannot be empty": "Password cannot be empty",
"Phone already exists": "電話はすでに存在しています",
"Phone cannot be empty": "電話は空っぽにできません",
"Phone already exists": "電話番号は既に存在します",
"Phone cannot be empty": "電話番号は空欄にできません",
"Phone number is invalid": "電話番号が無効です",
"Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Please register using the email corresponding to the invitation code": "招待コードに対応するメールアドレスを使用して登録してください",
"Please register using the phone corresponding to the invitation code": "招待コードに対応する電話番号で登録してください",
"Please register using the username corresponding to the invitation code": "招待コードに対応するユーザー名を使用して登録してください",
"Session outdated, please login again": "セッションが期限切れになりました。再度ログインしてください",
"The invitation code has already been used": "The invitation code has already been used",
"The invitation code has already been used": "招待コードは既に使用されています",
"The user is forbidden to sign in, please contact the administrator": "ユーザーはサインインできません。管理者に連絡してください",
"The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"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 value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The user: %s doesn't exist in LDAP server": "ユーザー: %s はLDAPサーバーに存在しません",
"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 value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "アカウントフィールド \\\"%s\\\"の値\\\"%s\\\"はアカウント項目の正規表現と一致しません",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "サインアップフィールド \\\"%s\\\"の値\\\"%s\\\"は、アプリケーション\\\"%s\\\"のサインアップ項目の正規表現と一致しません。",
"Username already exists": "ユーザー名はすでに存在しています",
"Username cannot be an email address": "ユーザー名には電子メールアドレスを使用できません",
"Username cannot be an email address": "ユーザー名にはメールアドレスを使用できません",
"Username cannot contain white spaces": "ユーザ名にはスペースを含めることはできません",
"Username cannot start with a digit": "ユーザー名は数字で始めることはできません",
"Username is too long (maximum is 255 characters).": "ユーザー名が長すぎます最大255文字。",
@ -83,9 +83,9 @@
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "あなたは間違ったパスワードまたはコードを何度も入力しました。%d 分間待ってから再度お試しください",
"Your IP address: %s has been banned according to the configuration of: ": "Your IP address: %s has been banned according to the configuration of: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"",
"Your region is not allow to signup by phone": "あなたの地域は電話でサインアップすることができません",
"password or code is incorrect": "password or code is incorrect",
"password or code is incorrect, you have %d remaining chances": "パスワードまたはコードが間違っています。あと%d回の試行機会があります",
"Your region is not allow to signup by phone": "あなたの地域は電話番号でサインアップすることができません",
"password or code is incorrect": "パスワードまたはコードが間違っています",
"password or code is incorrect, you have %d remaining chances": "パスワードまたはコードが間違っています。あと%d回の試行出来ます",
"unsupported password type: %s": "サポートされていないパスワードタイプ:%s"
},
"enforcer": {
@ -96,36 +96,36 @@
"Failed to import users": "ユーザーのインポートに失敗しました",
"Missing parameter": "不足しているパラメーター",
"Only admin user can specify user": "Only admin user can specify user",
"Please login first": "最初にログインしてください",
"The organization: %s should have one application at least": "The organization: %s should have one application at least",
"Please login first": "にログインしてください",
"The organization: %s should have one application at least": "組織: %s には少なくとも 1 つのアプリケーションが必要です",
"The user: %s doesn't exist": "そのユーザー:%sは存在しません",
"Wrong userId": "Wrong userId",
"don't support captchaProvider: ": "captchaProviderをサポートしないでください",
"this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"this operation requires administrator to perform": "this operation requires administrator to perform"
"don't support captchaProvider: ": "CAPTCHAプロバイダーをサポートしていません: ",
"this operation is not allowed in demo mode": "デモモードでは、この操作はできません",
"this operation requires administrator to perform": "この操作は管理者が実行する必要があります"
},
"ldap": {
"Ldap server exist": "LDAPサーバーは存在します"
},
"link": {
"Please link first": "最初にリンクしてください",
"Please link first": "にリンクしてください",
"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": "このプロバイダーはリンク解除できません",
"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 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.": "管理者のみが%sを変更できます。",
"The %s is immutable.": "%sは不変です",
"Unknown modify rule %s.": "未知の変更ルール%s。",
"The %s is immutable.": "%s は変更不能です",
"Unknown modify rule %s.": "不明な変更ルール %s。",
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option."
},
"permission": {
"The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
"The permission: \\\"%s\\\" doesn't exist": "権限: \\\"%s\\\"は存在しません"
},
"provider": {
"Invalid application id": "アプリケーションIDが無効です",
"Invalid application id": "無効なアプリケーションID",
"the provider: %s does not exist": "プロバイダー%sは存在しません"
},
"resource": {
@ -139,9 +139,9 @@
"provider %s's category is not SAML": "プロバイダ %s のカテゴリはSAMLではありません"
},
"service": {
"Empty parameters for emailForm: %v": "EmailFormの空のパラメーターv",
"Invalid Email receivers: %s": "無効な電子メール受信者%s",
"Invalid phone receivers: %s": "電話受信者が無効です:%s"
"Empty parameters for emailForm: %v": "メールフォームのパラメータは空です: %v",
"Invalid Email receivers: %s": "無効なメール受信者: %s",
"Invalid phone receivers: %s": "無効な電話受信者: %s"
},
"storage": {
"The objectKey: %s is not allowed": "オブジェクトキー %s は許可されていません",
@ -151,14 +151,14 @@
"Error": "Error"
},
"token": {
"Grant_type: %s is not supported in this application": "grant_type%sはこのアプリケーションでサポートされていません",
"Grant_type: %s is not supported in this application": "Grant_type: %s はこのアプリケーションでサポートされていません",
"Invalid application or wrong clientSecret": "無効なアプリケーションまたは誤ったクライアントシークレットです",
"Invalid client_id": "client_idが無効です",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "リダイレクトURI%sは許可されたリダイレクトURIリストに存在しません",
"Invalid client_id": "無効なclient_idがです",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "リダイレクトURI%sは許可されたリダイレクトURIリストに存在しません",
"Token not found, invalid accessToken": "トークンが見つかりません。無効なアクセストークンです"
},
"user": {
"Display name cannot be empty": "表示名は空にできません",
"Display name cannot be empty": "表示名は空にできません",
"MFA email is enabled but email is empty": "MFA email is enabled but email is empty",
"MFA phone is enabled but phone number is empty": "MFA phone is enabled but phone number is empty",
"New password cannot contain blank space.": "新しいパスワードにはスペースを含めることはできません。",
@ -171,18 +171,18 @@
},
"verification": {
"Invalid captcha provider.": "無効なCAPTCHAプロバイダー。",
"Phone number is invalid in your region %s": "電話番号はあなたの地域無効です %s",
"Phone number is invalid in your region %s": "あなたの地域の電話番号は無効です %s",
"The verification code has already been used!": "The verification code has already been used!",
"The verification code has not been sent yet!": "The verification code has not been sent yet!",
"Turing test failed.": "チューリングテスト失敗しました",
"Unable to get the email modify rule.": "電子メール変更規則を取得できません。",
"Unable to get the phone modify rule.": "電話の変更ルールを取得できません。",
"The verification code has not been sent yet!": "認証コードはまだ送信されていません!",
"Turing test failed.": "チューリングテスト失敗しました",
"Unable to get the email modify rule.": "メールアドレスの変更ルールを取得できません。",
"Unable to get the phone modify rule.": "電話番号の変更ルールを取得できません。",
"Unknown type": "不明なタイプ",
"Wrong verification code!": "誤った検証コードです!",
"You should verify your code in %d min!": "あなたは%d分であなたのコードを確認する必要があります",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "ユーザーは存在しません。まず登録してください"
"You should verify your code in %d min!": "%d 分以内にコードを確認してください!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "アプリケーションの「プロバイダ」リストにSMSプロバイダを追加してください %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "アプリケーションの「プロバイダ」リストにメールプロバイダを追加してください: %s",
"the user does not exist, please sign up first": "ユーザーは存在しません。先にサインアップしてください"
},
"webauthn": {
"Please call WebAuthnSigninBegin first": "最初にWebAuthnSigninBeginを呼び出してください"

View File

@ -1,32 +1,32 @@
{
"account": {
"Failed to add user": "사용자 추가 실패",
"Failed to add user": "사용자 추가 실패했습니다",
"Get init score failed, error: %w": "초기 점수 획득 실패, 오류: %w",
"Please sign out first": "먼저 로그아웃해주세요",
"The application does not allow to sign up new account": "이 응용 프로그램은 새로운 계정 가입을 허용하지 않습니다"
"The application does not allow to sign up new account": "이 애플리케이션은 새로운 계정 가입을 허용하고 있지 않습니다"
},
"auth": {
"Challenge method should be S256": "도전 방식은 S256이어야 합니다",
"Challenge method should be S256": "챌린지 방식(Challenge Method)은 S256이어야 합니다",
"DeviceCode Invalid": "DeviceCode Invalid",
"Failed to create user, user information is invalid: %s": "사용자를 만들지 못했습니다. 사용자 정보가 잘못되었습니다: %s",
"Failed to create user, user information is invalid: %s": "사용자를 만들지 못했습니다. 사용자 정보가 유효하지 않습니다: %s",
"Failed to login in: %s": "로그인에 실패했습니다.: %s",
"Invalid token": "유효하지 않은 토큰",
"Invalid token": "토큰이 유효하지 않습니다",
"State expected: %s, but got: %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 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 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) 계정: %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": "공급자(Provider) 계정 %s 사용자 이름 %s (%s)은(는) 존재하지 않으며 새 계정 등록할 수 없습니다. IT 지원팀에 문의해주세요",
"The account for provider: %s and username: %s (%s) is already linked to another account: %s (%s)": "공급자(Provider) 계정 %s 사용자 이름 %s(%s)은(는) 이미 다른 계정 %s(%s)에 연결되어 있습니다",
"The application: %s does not exist": "해당 애플리케이션(%s)이 존재하지 않습니다",
"The login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"The login method: login with password is not enabled for the application": "어플리케이션에서는 암호를 용한 로그인 방법이 활성화되어 있지 않습니다",
"The organization: %s does not exist": "The organization: %s does not exist",
"The login method: login with LDAP is not enabled for the application": "로그인 방식: 이 애플리케이션은 LDAP를 이용한 로그인이 비활성화되어 있습니다",
"The login method: login with SMS is not enabled for the application": "로그인 방식: 이 애플리케이션은 SMS를 이용한 로그인이 비활성화되어 있습니다",
"The login method: login with email is not enabled for the application": "로그인 방식: 이 애플리케이션은 이메일을 이용한 로그인이 비활성화되어 있습니다",
"The login method: login with face is not enabled for the application": "로그인 방식: 이 애플리케이션은 FaceID를 이용한 로그인이 비활성화되어 있습니다",
"The login method: login with password is not enabled for the application": "로그인 방식: 이 애플리케이션은 비밀번호를 용한 로그인이 활성화되어 있습니다",
"The organization: %s does not exist": "조직(Organization): %s이 존재하지 않습니다.",
"The provider: %s does not exist": "The provider: %s does not exist",
"The provider: %s is not enabled for the application": "제공자 %s은(는) 응용 프로그램에서 활성화되어 있지 않습니다",
"The provider: %s is not enabled for the application": "제공자(Provider): %s은(는) 애플리케이션에서 활성화되어 있지 않습니다",
"Unauthorized operation": "무단 조작",
"Unknown authentication type (not password or provider), form = %s": "알 수 없는 인증 유형(암호 또는 공급자가 아님), 폼 = %s",
"User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"User's tag: %s is not listed in the application's tags": "사용자 태그: %s은(는) 애플리케이션의 태그에 등록되어 있지 않습니다",
"UserCode Expired": "UserCode Expired",
"UserCode Invalid": "UserCode Invalid",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing",
@ -34,11 +34,11 @@
"the organization: %s is not found": "the organization: %s is not found"
},
"cas": {
"Service %s and %s do not match": "서비스 %s와 %s 일치하지 않습니다"
"Service %s and %s do not match": "서비스 %s와 %s은(는) 일치하지 않습니다"
},
"check": {
"%s does not meet the CIDR format requirements: %s": "%s does not meet the CIDR format requirements: %s",
"Affiliation cannot be blank": "소속은 비워 둘 수 없습니다",
"Affiliation cannot be blank": "소속(Affiliation)은 비워둘 수 없습니다",
"CIDR for IP: %s should not be empty": "CIDR for IP: %s should not be empty",
"Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"DisplayName cannot be blank": "DisplayName는 비어 있을 수 없습니다",
@ -46,46 +46,46 @@
"Email already exists": "이메일이 이미 존재합니다",
"Email cannot be empty": "이메일은 비어 있을 수 없습니다",
"Email is invalid": "이메일이 유효하지 않습니다",
"Empty username.": "사용자 이름.",
"Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "Face data mismatch",
"Empty username.": "사용자 이름이 비어있음.",
"Face data does not exist, cannot log in": "얼굴인식 데이터가 존재하지 않습니다. 로그인할 수 없습니다",
"Face data mismatch": "얼굴이 일치하지 않습니다",
"Failed to parse client IP: %s": "Failed to parse client IP: %s",
"FirstName cannot be blank": "이름은 공백일 수 없습니다",
"Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "Invitation code exhausted",
"Invitation code is invalid": "Invitation code is invalid",
"Invitation code suspended": "Invitation code suspended",
"FirstName cannot be blank": "이름은 비워둘 수 없습니다",
"Invitation code cannot be blank": "초대 코드는 비워둘 수 없습니다",
"Invitation code exhausted": "초대 코드가 만료되었습니다",
"Invitation code is invalid": "초대 코드가 유효하지 않습니다",
"Invitation code suspended": "초대 코드를 사용할 수 없습니다",
"LDAP user name or password incorrect": "LDAP 사용자 이름 또는 암호가 잘못되었습니다",
"LastName cannot be blank": "성은 비어 있을 수 없습니다",
"Multiple accounts with same uid, please check your ldap server": "동일한 UID를 가진 여러 계정이 있습니다. LDAP 서버를 확인해주세요",
"Organization does not exist": "조직 존재하지 않습니다",
"Organization does not exist": "조직 존재하지 않습니다",
"Password cannot be empty": "Password cannot be empty",
"Phone already exists": "전화기는 이미 존재합니다",
"Phone cannot be empty": "전화는 비워 둘 수 없습니다",
"Phone already exists": "전화번호가 이미 존재합니다",
"Phone cannot be empty": "전화번호는 비워 둘 수 없습니다",
"Phone number is invalid": "전화번호가 유효하지 않습니다",
"Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Session outdated, please login again": "세션이 만료되었습니다. 다시 로그인해주세요",
"The invitation code has already been used": "The invitation code has already been used",
"The user is forbidden to sign in, please contact the administrator": "사용자는 로그인이 금지되어 있습니다. 관리자에게 문의하십시오",
"The user: %s doesn't exist in LDAP server": "The user: %s doesn't exist in LDAP server",
"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 value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "The value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"",
"The invitation code has already been used": "초대 코드가 이미 사용되었습니다",
"The user is forbidden to sign in, please contact the administrator": "해당 사용자는 로그인이 제한되어 있습니다. 관리자에게 문의하십시오",
"The user: %s doesn't exist in LDAP server": "사용자: %s는 LDAP 서버에 존재하지 않습니다",
"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 value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "계정 필드에 사용된 값이 정규식에 맞지 않습니다 (값: \\\"%s\\\", 필드 이름: \\\"%s\\\")",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "어플리케이션의 회원가입 필드에 사용된 값이 정규식에 맞지 않습니다 (값: \\\"%s\\\", 필드 이름: \\\"%s\\\", 어플리케이션: \\\"%s\\\")",
"Username already exists": "사용자 이름이 이미 존재합니다",
"Username cannot be an email address": "사용자 이름은 이메일 주소가 될 수 없습니다",
"Username cannot contain white spaces": "사용자 이름에는 공백 포함 수 없습니다",
"Username cannot contain white spaces": "사용자 이름에는 공백 포함 수 없습니다",
"Username cannot start with a digit": "사용자 이름은 숫자로 시작할 수 없습니다",
"Username is too long (maximum is 255 characters).": "사용자 이름이 너무 깁니다 (최대 255자).",
"Username must have at least 2 characters": "사용자 이름은 적어도 2개의 문자가 있어야 합니다",
"Username supports email format. Also 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. Also pay attention to the email format.": "Username supports email format. Also 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. Also pay attention to the email format.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "올바르지 않은 비밀번호나 코드를 여러 번 입력했습니다. %d분 동안 기다리신 후 다시 시도해주세요",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "올바르지 않은 비밀번호나 코드를 여러 번 입력했습니다. %d분 동안 기다 후 다시 시도해주세요",
"Your IP address: %s has been banned according to the configuration of: ": "Your IP address: %s has been banned according to the configuration of: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"",
"Your region is not allow to signup by phone": "당신의 지역은 전화로 가입할 수 없습니다",
"password or code is incorrect": "password or code is incorrect",
"password or code is incorrect, you have %d remaining chances": "암호 또는 코드가 올바르지 않습니다. %d번의 기회가 남아 있습니다",
"Your region is not allow to signup by phone": " 지역은 전화번호로 가입할 수 없습니다",
"password or code is incorrect": "비밀번호나 코드가 올바르지 않습니다",
"password or code is incorrect, you have %d remaining chances": "비밀번호나 코드가 올바르지 않습니다. %d번의 기회가 남아 있습니다",
"unsupported password type: %s": "지원되지 않는 암호 유형: %s"
},
"enforcer": {
@ -96,13 +96,13 @@
"Failed to import users": "사용자 가져오기를 실패했습니다",
"Missing parameter": "누락된 매개변수",
"Only admin user can specify user": "Only admin user can specify user",
"Please login first": "먼저 로그인 하십시오",
"The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The user: %s doesn't exist": "사용자 %s는 존재하지 않습니다",
"Please login first": "먼저 로그인하세요",
"The organization: %s should have one application at least": "조직(Organization): %s에는 적어도 하나의 Application이 있어야 합니다",
"The user: %s doesn't exist": "사용자(User): %s는 존재하지 않습니다",
"Wrong userId": "Wrong userId",
"don't support captchaProvider: ": "CaptchaProvider를 지원하지 마세요",
"this operation is not allowed in demo mode": "this operation is not allowed in demo mode",
"this operation requires administrator to perform": "this operation requires administrator to perform"
"don't support captchaProvider: ": "CaptchaProvider를 지원하지 않습니다: ",
"this operation is not allowed in demo mode": "데모 모드에서는 지원하지 않는 동작입니다",
"this operation requires administrator to perform": "해당 동작은 관리자 권한이 필요합니다"
},
"ldap": {
"Ldap server exist": "LDAP 서버가 존재합니다"
@ -111,25 +111,25 @@
"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": "당신은 어떤 애플리케이션의 회원이 아니기 때문에 스스로 링크를 해제할 수 없습니다"
"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.": "관리자만 %s을(를) 수정할 수 있습니다.",
"Only admin can modify the %s.": "관리자만 %s을(를) 수정할 수 있습니다.",
"The %s is immutable.": "%s 는 변경할 수 없습니다.",
"Unknown modify rule %s.": "미확인 수정 규칙 %s.",
"adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option.": "adding a new user to the 'built-in' organization is currently disabled. Please note: all users in the 'built-in' organization are global administrators in Casdoor. Refer to the docs: https://casdoor.org/docs/basic/core-concepts#how-does-casdoor-manage-itself. If you still wish to create a user for the 'built-in' organization, go to the organization's settings page and enable the 'Has privilege consent' option."
},
"permission": {
"The permission: \\\"%s\\\" doesn't exist": "The permission: \\\"%s\\\" doesn't exist"
"The permission: \\\"%s\\\" doesn't exist": "권한: \\\"%s\\\"가 존재하지 않습니다"
},
"provider": {
"Invalid application id": "잘못된 애플리케이션 ID입니다",
"the provider: %s does not exist": "제공자 %s가 존재하지 않습니다"
"the provider: %s does not exist": "제공자(Provider): %s가 존재하지 않습니다"
},
"resource": {
"User is nil for tag: avatar": "사용자는 아바타 태그에 대해 nil입니다",
"User is nil for tag: avatar": "사용자의 avatar 태그의 값이 nil 입니다",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "사용자 이름 또는 전체 파일 경로가 비어 있습니다: 사용자 이름 = %s, 전체 파일 경로 = %s"
},
"saml": {
@ -144,18 +144,18 @@
"Invalid phone receivers: %s": "잘못된 전화 수신자: %s"
},
"storage": {
"The objectKey: %s is not allowed": "객체 키 : %s 는 허용되지 않습니다",
"The provider type: %s is not supported": "제공자 유형: %s은/는 지원되지 않습니다"
"The objectKey: %s is not allowed": "오브젝트 키 : %s 는 허용되지 않습니다",
"The provider type: %s is not supported": "제공자(Provider) 유형: %s은/는 지원되지 않습니다"
},
"subscription": {
"Error": "Error"
},
"token": {
"Grant_type: %s is not supported in this application": "그랜트 유형: %s은(는) 이 어플리케이션에서 지원되지 않습니다",
"Invalid application or wrong clientSecret": "잘못된 어플리케이션 또는 올바르지 않은 클라이언트 시크릿입니다",
"Invalid client_id": "잘못된 클라이언트 ID입니다",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "허용된 Redirect URI 목록에 %s이(가) 존재하지 않습니다",
"Token not found, invalid accessToken": "토큰을 찾을 수 없습니다. 잘못된 액세스 토큰입니다"
"Grant_type: %s is not supported in this application": "Grant_type: %s은(는) 이 어플리케이션에서 지원되지 않습니다",
"Invalid application or wrong clientSecret": "어플리케이션이 유효하지 않거나 clientSecret이 잘못되었습니다",
"Invalid client_id": "client_id가 잘못되었습니다",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: 허용된 Redirect URI 목록에 %s이(가) 존재하지 않습니다",
"Token not found, invalid accessToken": "토큰을 찾을 수 없습니다. 유효하지 않은 accessToken입니다"
},
"user": {
"Display name cannot be empty": "디스플레이 이름은 비어 있을 수 없습니다",
@ -170,19 +170,19 @@
"The provider: %s is not found": "제공자: %s를 찾을 수 없습니다"
},
"verification": {
"Invalid captcha provider.": "잘못된 captcha 제공자입니다.",
"Phone number is invalid in your region %s": "전화 번호가 당신의 지역 %s에서 유효하지 않습니다",
"Invalid captcha provider.": "유효하지 않은 Captcha 제공자입니다.",
"Phone number is invalid in your region %s": "전화번호가 당 지역 %s에서 유효하지 않습니다",
"The verification code has already been used!": "The verification code has already been used!",
"The verification code has not been sent yet!": "The verification code has not been sent yet!",
"The verification code has not been sent yet!": "인증 코드가 아직 보내지지 않았습니다!",
"Turing test failed.": "튜링 테스트 실패.",
"Unable to get the email modify rule.": "이메일 수정 규칙을 가져올 수 없습니다.",
"Unable to get the phone modify rule.": "전화 수정 규칙을 가져올 수 없습니다.",
"Unknown type": "알 수 없는 유형",
"Wrong verification code!": "잘못된 인증 코드입니다!",
"You should verify your code in %d min!": "당신은 %d분 안에 코드를 검증해야 합니다!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "사용자가 존재하지 않습니다. 먼저 회원 가입 해주세요"
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "SMS 제공자를 어플리케이션의 \\\"Providers\\\" 항목에 추가해주세요: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "Email 제공자를 어플리케이션의 \\\"Providers\\\" 항목에 추가해주세요: %s",
"the user does not exist, please sign up first": "사용자가 존재하지 않습니다. 먼저 회원가입 해주세요"
},
"webauthn": {
"Please call WebAuthnSigninBegin first": "WebAuthnSigninBegin을 먼저 호출해주세요"

View File

@ -1,9 +1,9 @@
{
"account": {
"Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "The application does not allow to sign up new account"
"Failed to add user": "Nie udało się dodać użytkownika",
"Get init score failed, error: %w": "Błąd inicjowania wyniku, błąd: %w",
"Please sign out first": "Proszę najpierw się wylogować",
"The application does not allow to sign up new account": "Aplikacja nie pozwala na rejestrację nowych kont"
},
"auth": {
"Challenge method should be S256": "Challenge method should be S256",
@ -60,12 +60,12 @@
"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 cannot be empty": "Password cannot be empty",
"Phone already exists": "Phone already exists",
"Phone cannot be empty": "Phone cannot be empty",
"Phone number is invalid": "Phone number is invalid",
"Please register using the email corresponding to the invitation code": "Please register using the email corresponding to the invitation code",
"Please register using the phone corresponding to the invitation code": "Please register using the phone corresponding to the invitation code",
"Please register using the username corresponding to the invitation code": "Please register using the username corresponding to the invitation code",
"Phone already exists": "Telefon już istnieje",
"Phone cannot be empty": "Numer telefonu nie może być pusty",
"Phone number is invalid": "Numer telefonu jest nieprawidłowy",
"Please register using the email corresponding to the invitation code": "Zarejestruj się używając adresu e-mail, na który przyszedł kod zaproszenia",
"Please register using the phone corresponding to the invitation code": "Zarejestruj się używając numer telefonu, na który przyszedł kod zaproszenia",
"Please register using the username corresponding to the invitation code": "Zarejestruj się używając nazwy użytkownika odpowiadającej kodowi zaproszenia",
"Session outdated, please login again": "Session outdated, please login again",
"The invitation code has already been used": "The invitation code has already been used",
"The user is forbidden to sign in, please contact the administrator": "The user is forbidden to sign in, please contact the administrator",
@ -76,17 +76,17 @@
"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 cannot start with a digit": "Nazwa użytkownika nie może zaczynać się od cyfry",
"Username is too long (maximum is 255 characters).": "Username is too long (maximum is 255 characters).",
"Username must have at least 2 characters": "Username must have at least 2 characters",
"Username must have at least 2 characters": "Nazwa użytkownika musi liczyć co najmniej 2 znaki",
"Username supports email format. Also 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. Also pay attention to the email format.": "Username supports email format. Also 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. Also pay attention to the email format.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "You have entered the wrong password or code too many times, please wait for %d minutes and try again",
"Your IP address: %s has been banned according to the configuration of: ": "Your IP address: %s has been banned according to the configuration of: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"",
"Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"password or code is incorrect": "password or code is incorrect",
"Your region is not allow to signup by phone": "Twój region nie może zarejestrować się telefonicznie",
"password or code is incorrect": "hasło lub kod są nieprawidłowe",
"password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"unsupported password type: %s": "unsupported password type: %s"
"unsupported password type: %s": "nieobsługiwany typ hasła: %s"
},
"enforcer": {
"the adapter: %s is not found": "the adapter: %s is not found"
@ -94,9 +94,9 @@
"general": {
"Failed to import groups": "Failed to import groups",
"Failed to import users": "Failed to import users",
"Missing parameter": "Missing parameter",
"Missing parameter": "Brakujący parametr",
"Only admin user can specify user": "Only admin user can specify user",
"Please login first": "Please login first",
"Please login first": "Proszę najpierw się zalogować",
"The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The user: %s doesn't exist": "The user: %s doesn't exist",
"Wrong userId": "Wrong userId",
@ -105,11 +105,11 @@
"this operation requires administrator to perform": "this operation requires administrator to perform"
},
"ldap": {
"Ldap server exist": "Ldap server exist"
"Ldap server exist": "Serwer Ldap istnieje"
},
"link": {
"Please link first": "Please link first",
"This application has no providers": "This application has no providers",
"This application has no providers": "Ta aplikacja nie ma dostawców",
"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",
@ -153,7 +153,7 @@
"token": {
"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",
"Invalid client_id": "Nieprawidłowe ID klienta",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "Redirect URI: %s doesn't exist in the allowed Redirect URI list",
"Token not found, invalid accessToken": "Token not found, invalid accessToken"
},
@ -174,15 +174,15 @@
"Phone number is invalid in your region %s": "Phone number is invalid in your region %s",
"The verification code has already been used!": "The verification code has already been used!",
"The verification code has not been sent yet!": "The verification code has not been sent yet!",
"Turing test failed.": "Turing test failed.",
"Turing test failed.": "Test Turinga oblany.",
"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 verification code!": "Wrong verification code!",
"You should verify your code in %d min!": "You should verify your code in %d min!",
"Unknown type": "Nieznany typ",
"Wrong verification code!": "Błędny kod weryfikacyjny!",
"You should verify your code in %d min!": "Powinieneś zweryfikować swój kod za %d min!",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "please add a SMS provider to the \\\"Providers\\\" list for the application: %s",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "please add an Email provider to the \\\"Providers\\\" list for the application: %s",
"the user does not exist, please sign up first": "the user does not exist, please sign up first"
"the user does not exist, please sign up first": "użytkownik nie istnieje, najpierw się zarejestruj"
},
"webauthn": {
"Please call WebAuthnSigninBegin first": "Please call WebAuthnSigninBegin first"

View File

@ -21,7 +21,7 @@
"The login method: login with email is not enabled for the application": "Метод входа: вход с помощью электронной почты не включен для приложения",
"The login method: login with face is not enabled for the application": "Метод входа: вход с помощью лица не включен для приложения",
"The login method: login with password is not enabled for the application": "Метод входа: вход с паролем не включен для приложения",
"The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s does not exist": "Организация %s не существует",
"The provider: %s does not exist": "The provider: %s does not exist",
"The provider: %s is not enabled for the application": "Провайдер: %s не включен для приложения",
"Unauthorized operation": "Несанкционированная операция",
@ -29,7 +29,7 @@
"User's tag: %s is not listed in the application's tags": "Тег пользователя: %s не указан в тэгах приложения",
"UserCode Expired": "UserCode Expired",
"UserCode Invalid": "UserCode Invalid",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "paid-user %s does not have active or pending subscription and the application: %s does not have default pricing",
"paid-user %s does not have active or pending subscription and the application: %s does not have default pricing": "платный пользователь %s не имеет активных или ожидающих подписки и приложение %s не имеет цены по умолчанию",
"the application for user %s is not found": "the application for user %s is not found",
"the organization: %s is not found": "the organization: %s is not found"
},
@ -40,21 +40,21 @@
"%s does not meet the CIDR format requirements: %s": "%s does not meet the CIDR format requirements: %s",
"Affiliation cannot be blank": "Принадлежность не может быть пустым значением",
"CIDR for IP: %s should not be empty": "CIDR for IP: %s should not be empty",
"Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"Default code does not match the code's matching rules": "Код по умолчанию не соответствует правилам кода",
"DisplayName cannot be blank": "Имя отображения не может быть пустым",
"DisplayName is not valid real name": "DisplayName не является действительным именем",
"Email already exists": "Электронная почта уже существует",
"Email cannot be empty": "Электронная почта не может быть пустой",
"Email is invalid": "Адрес электронной почты недействительный",
"Empty username.": "Пустое имя пользователя.",
"Face data does not exist, cannot log in": "Face data does not exist, cannot log in",
"Face data mismatch": "Face data mismatch",
"Face data does not exist, cannot log in": "Данные о лице не существуют, невозможно войти",
"Face data mismatch": "Несоответствие данных лица",
"Failed to parse client IP: %s": "Failed to parse client IP: %s",
"FirstName cannot be blank": "Имя не может быть пустым",
"Invitation code cannot be blank": "Invitation code cannot be blank",
"Invitation code exhausted": "Invitation code exhausted",
"Invitation code is invalid": "Invitation code is invalid",
"Invitation code suspended": "Invitation code suspended",
"Invitation code cannot be blank": "Код приглашения не может быть пустым",
"Invitation code exhausted": "Код приглашения устарел",
"Invitation code is invalid": "Код приглашения неверен",
"Invitation code suspended": "Код приглашения заблокирован",
"LDAP user name or password incorrect": "Неправильное имя пользователя или пароль Ldap",
"LastName cannot be blank": "Фамилия не может быть пустой",
"Multiple accounts with same uid, please check your ldap server": "Множественные учетные записи с тем же UID. Пожалуйста, проверьте свой сервер LDAP",
@ -67,7 +67,7 @@
"Please register using the phone corresponding to the invitation code": "Пожалуйста, зарегистрируйтесь по телефону, соответствующему коду приглашения",
"Please register using the username corresponding to the invitation code": "Пожалуйста, зарегистрируйтесь, используя имя пользователя, соответствующее коду приглашения",
"Session outdated, please login again": "Сессия устарела, пожалуйста, войдите снова",
"The invitation code has already been used": "The invitation code has already been used",
"The invitation code has already been used": "Код приглашения уже использован",
"The user is forbidden to sign in, please contact the administrator": "Пользователю запрещен вход, пожалуйста, обратитесь к администратору",
"The user: %s doesn't exist in LDAP server": "Пользователь %s не существует на LDAP сервере",
"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.": "Имя пользователя может состоять только из буквенно-цифровых символов, нижних подчеркиваний или дефисов, не может содержать последовательные дефисы или подчеркивания, а также не может начинаться или заканчиваться на дефис или подчеркивание.",

View File

@ -1,30 +1,30 @@
{
"account": {
"Failed to add user": "Failed to add user",
"Get init score failed, error: %w": "Get init score failed, error: %w",
"Please sign out first": "Please sign out first",
"The application does not allow to sign up new account": "The application does not allow to sign up new account"
"Failed to add user": "Неможливо додати користувача",
"Get init score failed, error: %w": "Вхідна оцінка не вдалася, помилка: %w",
"Please sign out first": "Спочатку вийдіть",
"The application does not allow to sign up new account": "Додаток не дозволяє реєструвати новий обліковий запис"
},
"auth": {
"Challenge method should be S256": "Challenge method should be S256",
"Challenge method should be S256": "Метод виклику повинен бути S256",
"DeviceCode Invalid": "DeviceCode Invalid",
"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",
"Invalid token": "Invalid token",
"State expected: %s, but got: %s": "State expected: %s, but got: %s",
"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 login method: login with LDAP is not enabled for the application": "The login method: login with LDAP is not enabled for the application",
"The login method: login with SMS is not enabled for the application": "The login method: login with SMS is not enabled for the application",
"The login method: login with email is not enabled for the application": "The login method: login with email is not enabled for the application",
"The login method: login with face is not enabled for the application": "The login method: login with face is not enabled for the application",
"Failed to create user, user information is invalid: %s": "Не вдалося створити користувача, інформація про користувача недійсна: %s",
"Failed to login in: %s": "Не вдалося ввійти: %s",
"Invalid token": "Невірний токен",
"State expected: %s, but got: %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 via %%s, please use another way to sign up": "Обліковий запис для провайдера: %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) не існує і не дозволено зареєструватися як новий обліковий запис, будь ласка, зверніться в ІТ-підтримку",
"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 login method: login with LDAP is not enabled for the application": "Метод входу: вхід через LDAP не дозволена для додатку",
"The login method: login with SMS is not enabled for the application": "Метод входу: вхід через SMS для програми неактивований",
"The login method: login with email is not enabled for the application": "Метод входу: вхід в систему з електронною поштою не активовано для додатку",
"The login method: login with face is not enabled for the application": "Метод входу: вхід за допомогою обличчя неактивоване для додатку",
"The login method: login with password is not enabled for the application": "The login method: login with password is not enabled for the application",
"The organization: %s does not exist": "The organization: %s does not exist",
"The organization: %s does not exist": "Додаток %s не існує",
"The provider: %s does not exist": "The provider: %s does not exist",
"The provider: %s is not enabled for the application": "The provider: %s is not enabled for the application",
"Unauthorized operation": "Unauthorized operation",
"The provider: %s is not enabled for the application": "Постачальник: %s не увімкнено для додатку",
"Unauthorized operation": "Неавторизована операція",
"Unknown authentication type (not password or provider), form = %s": "Unknown authentication type (not password or provider), form = %s",
"User's tag: %s is not listed in the application's tags": "User's tag: %s is not listed in the application's tags",
"UserCode Expired": "UserCode Expired",
@ -38,7 +38,7 @@
},
"check": {
"%s does not meet the CIDR format requirements: %s": "%s does not meet the CIDR format requirements: %s",
"Affiliation cannot be blank": "Affiliation cannot be blank",
"Affiliation cannot be blank": "Приналежність не може бути порожньою",
"CIDR for IP: %s should not be empty": "CIDR for IP: %s should not be empty",
"Default code does not match the code's matching rules": "Default code does not match the code's matching rules",
"DisplayName cannot be blank": "DisplayName cannot be blank",
@ -78,13 +78,13 @@
"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 255 characters).": "Username is too long (maximum is 255 characters).",
"Username must have at least 2 characters": "Username must have at least 2 characters",
"Username must have at least 2 characters": "Ім'я користувача повинно мати хоча б 2 символи",
"Username supports email format. Also 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. Also pay attention to the email format.": "Username supports email format. Also 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. Also pay attention to the email format.",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "You have entered the wrong password or code too many times, please wait for %d minutes and try again",
"Your IP address: %s has been banned according to the configuration of: ": "Your IP address: %s has been banned according to the configuration of: ",
"Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"": "Your password has expired. Please reset your password by clicking \\\"Forgot password\\\"",
"Your region is not allow to signup by phone": "Your region is not allow to signup by phone",
"password or code is incorrect": "password or code is incorrect",
"password or code is incorrect": "пароль або код неправильний",
"password or code is incorrect, you have %d remaining chances": "password or code is incorrect, you have %d remaining chances",
"unsupported password type: %s": "unsupported password type: %s"
},
@ -94,9 +94,9 @@
"general": {
"Failed to import groups": "Failed to import groups",
"Failed to import users": "Failed to import users",
"Missing parameter": "Missing parameter",
"Missing parameter": "Відсутній параметр",
"Only admin user can specify user": "Only admin user can specify user",
"Please login first": "Please login first",
"Please login first": "Будь ласка, спочатку увійдіть",
"The organization: %s should have one application at least": "The organization: %s should have one application at least",
"The user: %s doesn't exist": "The user: %s doesn't exist",
"Wrong userId": "Wrong userId",

View File

@ -10,7 +10,7 @@
"DeviceCode Invalid": "DeviceCode 无效",
"Failed to create user, user information is invalid: %s": "创建用户失败,用户信息无效: %s",
"Failed to login in: %s": "登录失败: %s",
"Invalid token": "无效token",
"Invalid token": "无效 token",
"State expected: %s, but got: %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 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支持",
@ -55,9 +55,9 @@
"Invitation code exhausted": "邀请码使用次数已耗尽",
"Invitation code is invalid": "邀请码无效",
"Invitation code suspended": "邀请码已被禁止使用",
"LDAP user name or password incorrect": "LDAP密码错误",
"LDAP user name or password incorrect": "LDAP 密码错误",
"LastName cannot be blank": "姓不可以为空",
"Multiple accounts with same uid, please check your ldap server": "多个帐户具有相同的uid,请检查您的 LDAP 服务器",
"Multiple accounts with same uid, please check your ldap server": "多个帐户具有相同的 UID,请检查您的 LDAP 服务器",
"Organization does not exist": "组织不存在",
"Password cannot be empty": "密码不能为空",
"Phone already exists": "该手机号已存在",
@ -69,7 +69,7 @@
"Session outdated, please login again": "会话已过期,请重新登录",
"The invitation code has already been used": "邀请码已被使用",
"The user is forbidden to sign in, please contact the administrator": "该用户被禁止登录,请联系管理员",
"The user: %s doesn't exist in LDAP server": "用户: %s 在LDAP服务器中未找到",
"The user: %s doesn't exist in LDAP server": "用户: %s 在 LDAP 服务器中未找到",
"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 value \\\"%s\\\" for account field \\\"%s\\\" doesn't match the account item regex": "值 \\\"%s\\\"在账户信息字段\\\"%s\\\" 中与应用的账户项正则表达式不匹配",
"The value \\\"%s\\\" for signup field \\\"%s\\\" doesn't match the signup item regex of the application \\\"%s\\\"": "值\\\"%s\\\"在注册字段\\\"%s\\\"中与应用\\\"%s\\\"的注册项正则表达式不匹配",
@ -78,7 +78,7 @@
"Username cannot contain white spaces": "用户名禁止包含空格",
"Username cannot start with a digit": "用户名禁止使用数字开头",
"Username is too long (maximum is 255 characters).": "用户名过长最大允许长度为255个字符",
"Username must have at least 2 characters": "用户名至少要有2个字符",
"Username must have at least 2 characters": "用户名至少要有 2 个字符",
"Username supports email format. Also 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. Also pay attention to the email format.": "用户名支持电子邮件格式。此外,用户名只能包含字母数字字符、下划线或连字符,不能包含连续的连字符或下划线,也不能以连字符或下划线开头或结尾。同时请注意电子邮件格式。",
"You have entered the wrong password or code too many times, please wait for %d minutes and try again": "密码错误次数已达上限,请在 %d 分后重试",
"Your IP address: %s has been banned according to the configuration of: ": "您的IP地址%s 根据以下配置已被禁止: ",
@ -101,7 +101,7 @@
"The user: %s doesn't exist": "用户: %s不存在",
"Wrong userId": "错误的 userId",
"don't support captchaProvider: ": "不支持验证码提供商: ",
"this operation is not allowed in demo mode": "demo模式下不允许该操作",
"this operation is not allowed in demo mode": "demo 模式下不允许该操作",
"this operation requires administrator to perform": "只有管理员才能进行此操作"
},
"ldap": {
@ -130,7 +130,7 @@
},
"resource": {
"User is nil for tag: avatar": "上传头像时用户为空",
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "usernamefullFilePath为空: username = %s, fullFilePath = %s"
"Username or fullFilePath is empty: username = %s, fullFilePath = %s": "usernamefullFilePath 为空: username = %s, fullFilePath = %s"
},
"saml": {
"Application %s not found": "未找到应用: %s"
@ -153,9 +153,9 @@
"token": {
"Grant_type: %s is not supported in this application": "该应用不支持Grant_type: %s",
"Invalid application or wrong clientSecret": "无效应用或错误的clientSecret",
"Invalid client_id": "无效的ClientId",
"Invalid client_id": "无效的客户端 ID",
"Redirect URI: %s doesn't exist in the allowed Redirect URI list": "重定向 URI%s在许可跳转列表中未找到",
"Token not found, invalid accessToken": "未查询到对应token, accessToken无效"
"Token not found, invalid accessToken": "未查询到对应 token, accessToken 无效"
},
"user": {
"Display name cannot be empty": "显示名称不可为空",
@ -180,11 +180,11 @@
"Unknown type": "未知类型",
"Wrong verification code!": "验证码错误!",
"You should verify your code in %d min!": "请在 %d 分钟内输入正确验证码",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "请添加一个SMS提供商到应用 %s 的 \\\"提供商 \\\"列表",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "请添加一个Email提供商到应用 %s 的 \\\"提供商 \\\"列表",
"please add a SMS provider to the \\\"Providers\\\" list for the application: %s": "请添加一个 SMS 提供商到应用: %s 的 \\\"提供商 \\\"列表",
"please add an Email provider to the \\\"Providers\\\" list for the application: %s": "请添加一个 Email 提供商到应用: %s 的 \\\"提供商 \\\"列表",
"the user does not exist, please sign up first": "用户不存在,请先注册"
},
"webauthn": {
"Please call WebAuthnSigninBegin first": "请先调用WebAuthnSigninBegin函数"
"Please call WebAuthnSigninBegin first": "请先调用 WebAuthnSigninBegin 函数"
}
}

View File

@ -190,7 +190,7 @@ func (idp *DouyinIdProvider) GetUserInfo(token *oauth2.Token) (*UserInfo, error)
userInfo := UserInfo{
Id: douyinUserInfo.Data.OpenId,
Username: douyinUserInfo.Data.Nickname,
Username: douyinUserInfo.Data.OpenId,
DisplayName: douyinUserInfo.Data.Nickname,
AvatarUrl: douyinUserInfo.Data.Avatar,
}

View File

@ -252,12 +252,12 @@ func CheckPassword(user *User, password string, lang string, options ...bool) er
credManager := cred.GetCredManager(passwordType)
if credManager != nil {
if organization.MasterPassword != "" {
if password == organization.MasterPassword || credManager.IsPasswordCorrect(password, organization.MasterPassword, "", organization.PasswordSalt) {
if password == organization.MasterPassword || credManager.IsPasswordCorrect(password, organization.MasterPassword, organization.PasswordSalt) {
return resetUserSigninErrorTimes(user)
}
}
if credManager.IsPasswordCorrect(password, user.Password, user.PasswordSalt, organization.PasswordSalt) {
if credManager.IsPasswordCorrect(password, user.Password, organization.PasswordSalt) || credManager.IsPasswordCorrect(password, user.Password, user.PasswordSalt) {
return resetUserSigninErrorTimes(user)
}
@ -593,31 +593,41 @@ func CheckUpdateUser(oldUser, user *User, lang string) string {
return ""
}
func CheckToEnableCaptcha(application *Application, organization, username string) (bool, error) {
func CheckToEnableCaptcha(application *Application, organization, username string, clientIp string) (bool, error) {
if len(application.Providers) == 0 {
return false, nil
}
for _, providerItem := range application.Providers {
if providerItem.Provider == nil {
if providerItem.Provider == nil || providerItem.Provider.Category != "Captcha" {
continue
}
if providerItem.Provider.Category == "Captcha" {
if providerItem.Rule == "Dynamic" {
user, err := GetUserByFields(organization, username)
if providerItem.Rule == "Internet-Only" {
if util.IsInternetIp(clientIp) {
return true, nil
}
}
if providerItem.Rule == "Dynamic" {
user, err := GetUserByFields(organization, username)
if err != nil {
return false, err
}
if user != nil {
failedSigninLimit, _, err := GetFailedSigninConfigByUser(user)
if err != nil {
return false, err
}
failedSigninLimit := application.FailedSigninLimit
if failedSigninLimit == 0 {
failedSigninLimit = DefaultFailedSigninLimit
}
return user != nil && user.SigninWrongTimes >= failedSigninLimit, nil
return user.SigninWrongTimes >= failedSigninLimit, nil
}
return providerItem.Rule == "Always", nil
return false, nil
}
return providerItem.Rule == "Always", nil
}
return false, nil

View File

@ -20,6 +20,7 @@ package object
import "testing"
func TestDumpToFile(t *testing.T) {
createDatabase = false
InitConfig()
err := DumpToFile("./init_data_dump.json")

View File

@ -222,7 +222,7 @@ func UpdateOrganization(id string, organization *Organization, isGlobalAdmin boo
if organization.MasterPassword != "" && organization.MasterPassword != "***" {
credManager := cred.GetCredManager(organization.PasswordType)
if credManager != nil {
hashedPassword := credManager.GetHashedPassword(organization.MasterPassword, "", organization.PasswordSalt)
hashedPassword := credManager.GetHashedPassword(organization.MasterPassword, organization.PasswordSalt)
organization.MasterPassword = hashedPassword
}
}
@ -536,7 +536,13 @@ func IsNeedPromptMfa(org *Organization, user *User) bool {
if org == nil || user == nil {
return false
}
for _, item := range org.MfaItems {
mfaItems := org.MfaItems
if len(user.MfaItems) > 0 {
mfaItems = user.MfaItems
}
for _, item := range mfaItems {
if item.Rule == "Required" {
if item.Name == EmailType && !user.MfaEmailEnabled {
return true

View File

@ -212,6 +212,7 @@ type User struct {
ManagedAccounts []ManagedAccount `xorm:"managedAccounts blob" json:"managedAccounts"`
MfaAccounts []MfaAccount `xorm:"mfaAccounts blob" json:"mfaAccounts"`
MfaItems []*MfaItem `xorm:"varchar(300)" json:"mfaItems"`
NeedUpdatePassword bool `json:"needUpdatePassword"`
IpWhitelist string `xorm:"varchar(200)" json:"ipWhitelist"`
}
@ -795,7 +796,7 @@ func UpdateUser(id string, user *User, columns []string, isAdmin bool) (bool, er
}
}
if isAdmin {
columns = append(columns, "name", "id", "email", "phone", "country_code", "type", "balance")
columns = append(columns, "name", "id", "email", "phone", "country_code", "type", "balance", "mfa_items")
}
columns = append(columns, "updated_time")

View File

@ -42,8 +42,9 @@ func (user *User) UpdateUserHash() error {
func (user *User) UpdateUserPassword(organization *Organization) {
credManager := cred.GetCredManager(organization.PasswordType)
if credManager != nil {
hashedPassword := credManager.GetHashedPassword(user.Password, user.PasswordSalt, organization.PasswordSalt)
hashedPassword := credManager.GetHashedPassword(user.Password, organization.PasswordSalt)
user.Password = hashedPassword
user.PasswordType = organization.PasswordType
user.PasswordSalt = organization.PasswordSalt
}
}

View File

@ -185,17 +185,3 @@ func removePort(s string) string {
}
return ipStr
}
func isHostIntranet(s string) bool {
ipStr, _, err := net.SplitHostPort(s)
if err != nil {
ipStr = s
}
ip := net.ParseIP(ipStr)
if ip == nil {
return false
}
return ip.IsPrivate() || ip.IsLoopback() || ip.IsLinkLocalUnicast() || ip.IsLinkLocalMulticast()
}

View File

@ -83,7 +83,7 @@ func CorsFilter(ctx *context.Context) {
setCorsHeaders(ctx, origin)
} else if originHostname == host {
setCorsHeaders(ctx, origin)
} else if isHostIntranet(host) {
} else if util.IsHostIntranet(host) {
setCorsHeaders(ctx, origin)
} else {
ok, err := object.IsOriginAllowed(origin)

47
util/network.go Normal file
View File

@ -0,0 +1,47 @@
// Copyright 2025 The Casdoor Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package util
import (
"net"
)
func IsInternetIp(ip string) bool {
ipStr, _, err := net.SplitHostPort(ip)
if err != nil {
ipStr = ip
}
parsedIP := net.ParseIP(ipStr)
if parsedIP == nil {
return false
}
return !parsedIP.IsPrivate() && !parsedIP.IsLoopback() && !parsedIP.IsMulticast() && !parsedIP.IsUnspecified()
}
func IsHostIntranet(ip string) bool {
ipStr, _, err := net.SplitHostPort(ip)
if err != nil {
ipStr = ip
}
parsedIP := net.ParseIP(ipStr)
if parsedIP == nil {
return false
}
return parsedIP.IsPrivate() || parsedIP.IsLoopback() || parsedIP.IsLinkLocalUnicast() || parsedIP.IsLinkLocalMulticast()
}

View File

@ -696,18 +696,27 @@ export const MfaRulePrompted = "Prompted";
export const MfaRuleOptional = "Optional";
export function isRequiredEnableMfa(user, organization) {
if (!user || !organization || !organization.mfaItems) {
if (!user || !organization || (!organization.mfaItems && !user.mfaItems)) {
return false;
}
return getMfaItemsByRules(user, organization, [MfaRuleRequired]).length > 0;
}
export function getMfaItemsByRules(user, organization, mfaRules = []) {
if (!user || !organization || !organization.mfaItems) {
if (!user || !organization || (!organization.mfaItems && !user.mfaItems)) {
return [];
}
return organization.mfaItems.filter((mfaItem) => mfaRules.includes(mfaItem.rule))
let mfaItems = organization.mfaItems;
if (user.mfaItems && user.mfaItems.length !== 0) {
mfaItems = user.mfaItems;
}
if (mfaItems === null) {
return [];
}
return mfaItems.filter((mfaItem) => mfaRules.includes(mfaItem.rule))
.filter((mfaItem) => user.multiFactorAuths.some((mfa) => mfa.mfaType === mfaItem.name && !mfa.enabled));
}

View File

@ -42,6 +42,7 @@ import * as MfaBackend from "./backend/MfaBackend";
import AccountAvatar from "./account/AccountAvatar";
import FaceIdTable from "./table/FaceIdTable";
import MfaAccountTable from "./table/MfaAccountTable";
import MfaTable from "./table/MfaTable";
const {Option} = Select;
@ -926,6 +927,19 @@ class UserEditPage extends React.Component {
</Col>
</Row>
);
} else if (accountItem.name === "MFA items") {
return (<Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{Setting.getLabel(i18next.t("general:MFA items"), i18next.t("general:MFA items - Tooltip"))} :
</Col>
<Col span={22} >
<MfaTable
title={i18next.t("general:MFA items")}
table={this.state.user.mfaItems ?? []}
onUpdateTable={(value) => {this.updateUserField("mfaItems", value);}}
/>
</Col>
</Row>);
} else if (accountItem.name === "Multi-factor authentication") {
return (
!this.isSelfOrAdmin() ? null : (

View File

@ -163,7 +163,7 @@ export function getWechatQRCode(providerId) {
}
export function getCaptchaStatus(values) {
return fetch(`${Setting.ServerUrl}/api/get-captcha-status?organization=${values["organization"]}&userId=${values["username"]}`, {
return fetch(`${Setting.ServerUrl}/api/get-captcha-status?organization=${values["organization"]}&userId=${values["username"]}&application=${values["application"]}`, {
method: "GET",
credentials: "include",
headers: {

View File

@ -166,7 +166,7 @@ class AuthCallback extends React.Component {
const responseType = this.getResponseType();
const handleLogin = (res) => {
if (responseType === "login") {
if (res.data2) {
if (res.data3) {
sessionStorage.setItem("signinUrl", signinUrl);
Setting.goToLinkSoft(this, `/forget/${applicationName}`);
return;
@ -176,7 +176,7 @@ class AuthCallback extends React.Component {
const link = Setting.getFromLink();
Setting.goToLink(link);
} else if (responseType === "code") {
if (res.data2) {
if (res.data3) {
sessionStorage.setItem("signinUrl", signinUrl);
Setting.goToLinkSoft(this, `/forget/${applicationName}`);
return;
@ -185,7 +185,7 @@ class AuthCallback extends React.Component {
Setting.goToLink(`${oAuthParams.redirectUri}${concatChar}code=${code}&state=${oAuthParams.state}`);
// Setting.showMessage("success", `Authorization code: ${res.data}`);
} else if (responseType === "token" || responseType === "id_token") {
if (res.data2) {
if (res.data3) {
sessionStorage.setItem("signinUrl", signinUrl);
Setting.goToLinkSoft(this, `/forget/${applicationName}`);
return;
@ -207,7 +207,7 @@ class AuthCallback extends React.Component {
relayState: oAuthParams.relayState,
});
} else {
if (res.data2.needUpdatePassword) {
if (res.data3) {
sessionStorage.setItem("signinUrl", signinUrl);
Setting.goToLinkSoft(this, `/forget/${applicationName}`);
return;

View File

@ -134,6 +134,8 @@ class LoginPage extends React.Component {
return CaptchaRule.Always;
} else if (captchaProviderItems.some(providerItem => providerItem.rule === "Dynamic")) {
return CaptchaRule.Dynamic;
} else if (captchaProviderItems.some(providerItem => providerItem.rule === "Internet-Only")) {
return CaptchaRule.InternetOnly;
} else {
return CaptchaRule.Never;
}
@ -443,6 +445,9 @@ class LoginPage extends React.Component {
} else if (captchaRule === CaptchaRule.Dynamic) {
this.checkCaptchaStatus(values);
return;
} else if (captchaRule === CaptchaRule.InternetOnly) {
this.checkCaptchaStatus(values);
return;
}
}
this.login(values);
@ -491,9 +496,9 @@ class LoginPage extends React.Component {
const responseType = values["type"];
if (responseType === "login") {
if (res.data2) {
if (res.data3) {
sessionStorage.setItem("signinUrl", window.location.pathname + window.location.search);
Setting.goToLink(this, `/forget/${this.state.applicationName}`);
Setting.goToLinkSoft(this, `/forget/${this.state.applicationName}`);
}
Setting.showMessage("success", i18next.t("application:Logged in successfully"));
this.props.onLoginSuccess();
@ -505,9 +510,9 @@ class LoginPage extends React.Component {
userCodeStatus: "success",
});
} else if (responseType === "token" || responseType === "id_token") {
if (res.data2) {
if (res.data3) {
sessionStorage.setItem("signinUrl", window.location.pathname + window.location.search);
Setting.goToLink(this, `/forget/${this.state.applicationName}`);
Setting.goToLinkSoft(this, `/forget/${this.state.applicationName}`);
}
const amendatoryResponseType = responseType === "token" ? "access_token" : responseType;
const accessToken = res.data;
@ -517,9 +522,9 @@ class LoginPage extends React.Component {
this.props.onLoginSuccess(window.location.href);
return;
}
if (res.data2.needUpdatePassword) {
if (res.data3) {
sessionStorage.setItem("signinUrl", window.location.pathname + window.location.search);
Setting.goToLink(this, `/forget/${this.state.applicationName}`);
Setting.goToLinkSoft(this, `/forget/${this.state.applicationName}`);
}
if (res.data2.method === "POST") {
this.setState({
@ -961,9 +966,23 @@ class LoginPage extends React.Component {
const captchaProviderItems = this.getCaptchaProviderItems(application);
const alwaysProviderItems = captchaProviderItems.filter(providerItem => providerItem.rule === "Always");
const dynamicProviderItems = captchaProviderItems.filter(providerItem => providerItem.rule === "Dynamic");
const provider = alwaysProviderItems.length > 0
? alwaysProviderItems[0].provider
: dynamicProviderItems[0].provider;
const internetOnlyProviderItems = captchaProviderItems.filter(providerItem => providerItem.rule === "Internet-Only");
// Select provider based on the active captcha rule, not fixed priority
const captchaRule = this.getCaptchaRule(this.getApplicationObj());
let provider = null;
if (captchaRule === CaptchaRule.Always && alwaysProviderItems.length > 0) {
provider = alwaysProviderItems[0].provider;
} else if (captchaRule === CaptchaRule.Dynamic && dynamicProviderItems.length > 0) {
provider = dynamicProviderItems[0].provider;
} else if (captchaRule === CaptchaRule.InternetOnly && internetOnlyProviderItems.length > 0) {
provider = internetOnlyProviderItems[0].provider;
}
if (!provider) {
return null;
}
return <CaptchaModal
owner={provider.owner}

View File

@ -181,4 +181,5 @@ export const CaptchaRule = {
Always: "Always",
Never: "Never",
Dynamic: "Dynamic",
InternetOnly: "Internet-Only",
};

View File

@ -1,27 +1,27 @@
{
"account": {
"Logout": "Logout",
"My Account": "My Account",
"Sign Up": "Sign Up"
"Logout": "تسجيل خروج",
"My Account": "حسابي",
"Sign Up": "إنشاء حساب"
},
"adapter": {
"Duplicated policy rules": "Duplicated policy rules",
"Edit Adapter": "Edit Adapter",
"Failed to sync policies": "Failed to sync policies",
"New Adapter": "New Adapter",
"Policies": "Policies",
"Policies - Tooltip": "Casbin policy rules",
"Rule type": "Rule type",
"Sync policies successfully": "Sync policies successfully",
"Use same DB": "Use same DB",
"Duplicated policy rules": "قواعد السياسات المكررة",
"Edit Adapter": "تعديل المحول",
"Failed to sync policies": "فشل في مزامنة السياسات",
"New Adapter": "محول جديد",
"Policies": "شروط الاستخدام",
"Policies - Tooltip": "قواعد سياسة كاسبين",
"Rule type": "الإشتراطات",
"Sync policies successfully": "تمت مزامنة السياسات بنجاح",
"Use same DB": "استخدام نفس DB",
"Use same DB - Tooltip": "Use same DB - Tooltip"
},
"application": {
"Add Face ID": "Add Face ID",
"Add Face ID with Image": "Add Face ID with Image",
"Always": "Always",
"Auto signin": "Auto signin",
"Auto signin - Tooltip": "When a logged-in session exists in Casdoor, it is automatically used for application-side login",
"Always": "دائماً",
"Auto signin": "تسجيل الدخول التلقائي",
"Auto signin - Tooltip": "",
"Background URL": "Background URL",
"Background URL - Tooltip": "URL of the background image used in the login page",
"Background URL Mobile": "Background URL Mobile",
@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Left",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Přizpůsobit hlavičku vstupní stránky vaší aplikace",
"Incremental": "Inkrementální",
"Input": "Vstup",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Kód pozvánky",
"Left": "Vlevo",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Links",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Left",

File diff suppressed because it is too large Load Diff

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "کد head صفحه ورود برنامه خود را سفارشی کنید",
"Incremental": "افزایشی",
"Input": "ورودی",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "کد دعوت",
"Left": "چپ",
@ -457,7 +458,7 @@
"Show all": "نمایش همه",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "مجازی",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "کاربران جدید در ۳۰ روز گذشته",
@ -532,7 +533,7 @@
"Logging out...": "در حال خروج...",
"MetaMask plugin not detected": "پلاگین MetaMask شناسایی نشد",
"Model loading failure": "بارگذاری مدل ناموفق بود",
"No account?": "",
"No account?": "No account?",
"Or sign in with another account": "یا با حساب دیگری وارد شوید",
"Phone": "تلفن",
"Please ensure sufficient lighting and align your face in the center of the recognition box": "لطفاً از نور کافی اطمینان حاصل کنید و صورت خود را در مرکز جعبه تشخیص قرار دهید",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Left",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incrémentale",
"Input": "Saisie",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Code d'invitation",
"Left": "Gauche",
@ -293,14 +294,14 @@
"Home - Tooltip": "Page d'accueil de l'application",
"ID": "ID",
"ID - Tooltip": "Chaîne unique aléatoire",
"IP whitelist": "IP whitelist",
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
"IP whitelist": "Liste blanche d'adresses IP",
"IP whitelist - Tooltip": "Liste blanche d'adresses IP - infobulle",
"Identity": "Identité",
"Invitations": "Invitations",
"Is enabled": "Est activé",
"Is enabled - Tooltip": "Définir s'il peut être utilisé",
"Is shared": "Is shared",
"Is shared - Tooltip": "Share this application with other organizations",
"Is shared": "Est partagé",
"Is shared - Tooltip": "Partager cette application avec d'autres organisations",
"LDAPs": "LDAPs",
"LDAPs - Tooltip": "Serveurs LDAP",
"Languages": "Langues",
@ -457,7 +458,7 @@
"Show all": "Tout afficher",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtuel",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "Comptes créés dans les 30 derniers jours",
@ -538,9 +539,9 @@
"Please ensure sufficient lighting and align your face in the center of the recognition box": "Please ensure sufficient lighting and align your face in the center of the recognition box",
"Please ensure that you have a camera device for facial recognition": "Please ensure that you have a camera device for facial recognition",
"Please input your Email or Phone!": "Veuillez saisir votre adresse e-mail ou votre numéro de téléphone !",
"Please input your Email!": "Please input your Email!",
"Please input your LDAP username!": "Please input your LDAP username!",
"Please input your Phone!": "Please input your Phone!",
"Please input your Email!": "Veuillez saisir votre adresse e-mail !",
"Please input your LDAP username!": "Veuillez entrer votre nom d'utilisateur LDAP !",
"Please input your Phone!": "Veuillez saisir votre numéro de téléphone !",
"Please input your code!": "Veuillez saisir votre code !",
"Please input your organization name!": "Veuillez saisir le nom de votre organisation !",
"Please input your password!": "Veuillez saisir votre mot de passe !",
@ -559,8 +560,8 @@
"Successfully logged in with WebAuthn credentials": "Connexion avec les identifiants WebAuthn réussie",
"The camera is currently in use by another webpage": "The camera is currently in use by another webpage",
"The input is not valid Email or phone number!": "L'entrée n'est pas une adresse e-mail ou un numéro de téléphone valide !",
"The input is not valid Email!": "The input is not valid Email!",
"The input is not valid phone number!": "The input is not valid phone number!",
"The input is not valid Email!": "L'entrée n'est pas une adresse e-mail valide !",
"The input is not valid phone number!": "L'entrée n'est pas un numéro de téléphone valide !",
"To access": "Pour accéder à",
"Verification code": "Code de vérification",
"WebAuthn": "WebAuthn",
@ -1043,7 +1044,7 @@
"Text 3": "Text 3",
"Text 4": "Text 4",
"Text 5": "Text 5",
"The input Email doesn't match the signup item regex!": "The input Email doesn't match the signup item regex!",
"The input Email doesn't match the signup item regex!": "L'adresse e-mail saisie ne correspond pas au format attendu pour l'inscription.",
"The input is not invoice Tax ID!": "L'entrée n'est pas l'identifiant fiscal de la facture !",
"The input is not invoice title!": "L'entrée n'est pas un nom ou une dénomination sociale !",
"The input is not valid Email!": "L'entrée n'est pas une adresse e-mail valide !",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Left",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Kiri",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Left",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

File diff suppressed because it is too large Load Diff

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Left",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

View File

@ -6,50 +6,50 @@
},
"adapter": {
"Duplicated policy rules": "복제된 정책 규칙들",
"Edit Adapter": "편집 어댑터 수정하기",
"Edit Adapter": "어댑터 수정",
"Failed to sync policies": "정책 동기화 실패했습니다",
"New Adapter": "새로운 어댑터",
"Policies": "정책",
"Policies - Tooltip": "Casbin 정책 규칙",
"Rule type": "Rule type",
"Rule type": "규칙 유형",
"Sync policies successfully": "정책을 성공적으로 동기화했습니다",
"Use same DB": "Use same DB",
"Use same DB - Tooltip": "Use same DB - Tooltip"
"Use same DB": "같은 DB 사용",
"Use same DB - Tooltip": "Casdoor와 같은 DB 사용"
},
"application": {
"Add Face ID": "Add Face ID",
"Add Face ID with Image": "Add Face ID with Image",
"Always": "항상",
"Auto signin": "자동 로그인",
"Auto signin - Tooltip": "카스도어에 로그인된 세션이 존재할 때, 애플리케이션 쪽 로그인에 자동으로 사용됩니다",
"Auto signin - Tooltip": "Casdoor에 로그인 된 세션이 존재할 때, Application의 로그인에 자동으로 사용됩니다",
"Background URL": "배경 URL",
"Background URL - Tooltip": "로그인 페이지에서 사용된 배경 이미지의 URL",
"Background URL Mobile": "Background URL Mobile",
"Background URL Mobile - Tooltip": "Background URL Mobile - Tooltip",
"Big icon": "Big icon",
"Binding providers": "Binding providers",
"CSS style": "CSS style",
"Big icon": "큰 아이콘",
"Binding providers": "바인딩 제공자",
"CSS style": "CSS 스타일",
"Center": "중앙",
"Copy SAML metadata URL": "SAML 메타데이터 URL 복사",
"Copy prompt page URL": "프롬프트 페이지 URL을 복사하세요",
"Copy signin page URL": "사인인 페이지 URL 복사",
"Copy signup page URL": "가입 페이지 URL 복사하세요",
"Custom CSS": "CSS 양식",
"Custom CSS - Edit": " CSS - 편집",
"Custom CSS - Tooltip": "가입, 로그인 및 비밀번호를 잊어버린 양식의 CSS 스타일링 (예 : 테두리와 그림자 추가)",
"Custom CSS Mobile": "Custom CSS Mobile",
"Custom CSS Mobile - Edit": "Custom CSS Mobile - Edit",
"Custom CSS Mobile - Tooltip": "Custom CSS Mobile - Tooltip",
"Copy prompt page URL": "프롬프트 페이지 URL을 복사",
"Copy signin page URL": "로그인 페이지 URL 복사",
"Copy signup page URL": "회원가입 페이지 URL 복사",
"Custom CSS": "사용자 정의 CSS",
"Custom CSS - Edit": "사용자 정의 CSS - 편집",
"Custom CSS - Tooltip": "회원가입, 로그인 및 비밀번호 찾기 양식의 CSS (예: 테두리와 그림자 추가)",
"Custom CSS Mobile": "모바일 전용 사용자 정의 CSS",
"Custom CSS Mobile - Edit": "모바일 전용 사용자 정의 CSS - 편집",
"Custom CSS Mobile - Tooltip": "모바일 전용 사용자 정의 CSS - Tooltip",
"Dynamic": "Dynamic",
"Edit Application": " 편집하기",
"Enable Email linking": "이메일 링크 사용 가능하도록 설정하기",
"Enable Email linking - Tooltip": "3rd-party 로그인 공급자를 사용할 때, 만약 조직 내에 동일한 이메일을 사용하는 사용자가 있다면, 3rd-party 로그인 방법은 자동으로 해당 사용자와 연동됩니다",
"Enable SAML C14N10": "Enable SAML C14N10",
"Enable SAML C14N10 - Tooltip": "Enable SAML C14N10 - Tooltip",
"Enable SAML POST binding": "Enable SAML POST binding",
"Enable SAML POST binding - Tooltip": "The HTTP POST binding uses input fields in a HTML form to send SAML messages, Enable when your SP use it",
"Enable SAML compression": "SAML 압축 사용 가능하게 설정하기",
"Enable SAML compression - Tooltip": "카스도어가 SAML idp로 사용될 때 SAML 응답 메시지를 압축할 것인지 여부",
"Edit Application": "어플리케이션 편집",
"Enable Email linking": "Email 연결 활성화",
"Enable Email linking - Tooltip": "3rd-party 로그인 공급자를 사용할 때 조직 내에 동일한 이메일 사용자가 있다면, 자동으로 해당 사용자와 연동됩니다",
"Enable SAML C14N10": "SAML C14N10 활성화",
"Enable SAML C14N10 - Tooltip": "SAML에서 C14N11 대신 C14N10 사용",
"Enable SAML POST binding": "SAML POST 바인딩 활성화",
"Enable SAML POST binding - Tooltip": "HTTP POST 바인딩이 SAML 메시지를 보내는 데에 HTML 양식의 입력 필드를 사용합니다. 서비스 제공자가 이것을 사용한다면 활성화 해주세요",
"Enable SAML compression": "SAML 압축 활성화",
"Enable SAML compression - Tooltip": "Casdoor가 SAML idp로 사용될 때 SAML 응답 메시지를 압축할 것인지 여부",
"Enable side panel": "측면 패널 활성화",
"Enable signin session - Tooltip": "애플리케이션에서 Casdoor에 로그인 한 후 Casdoor가 세션을 유지하는 지 여부",
"Enable signup": "가입 가능하게 만들기",
@ -58,13 +58,13 @@
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
"Failed signin limit": "Failed signin limit",
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
"Failed to sign in": "로그인 실패했습니다",
"Failed to sign in": "로그인 실패",
"File uploaded successfully": "파일이 성공적으로 업로드되었습니다",
"First, last": "First, last",
"First, last": "이름, 성",
"Follow organization theme": "조직의 주제를 따르세요",
"Footer HTML": "Footer HTML",
"Footer HTML - Edit": "Footer HTML - Edit",
"Footer HTML - Tooltip": "Custom the footer of your application",
"Footer HTML - Edit": "Footer HTML - 편집",
"Footer HTML - Tooltip": "어플리케이션의 Footer 커스텀",
"Forced redirect origin": "Forced redirect origin",
"Form position": "양식 위치",
"Form position - Tooltip": "가입, 로그인 및 비밀번호 재설정 양식의 위치",
@ -72,69 +72,70 @@
"Grant types": "Grant types: 부여 유형",
"Grant types - Tooltip": "OAuth 프로토콜에서 허용되는 그란트 유형을 선택하십시오",
"Header HTML": "Header HTML",
"Header HTML - Edit": "Header HTML - Edit",
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Header HTML - Edit": "Header HTML - 편집",
"Header HTML - Tooltip": "어플리케이션의 엔트리 페이지의 Head 태그 커스텀",
"Incremental": "증가",
"Input": "입력",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Invitation code": "초대 코드",
"Left": "왼쪽",
"Logged in successfully": "성공적으로 로그인했습니다",
"Logged out successfully": "로그아웃이 성공적으로 되었습니다",
"Multiple Choices": "Multiple Choices",
"New Application": "새로운 응용 프로그램",
"No verification": "No verification",
"Normal": "Normal",
"Only signup": "Only signup",
"Org choice mode": "Org choice mode",
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"",
"Please input your application!": "당신의 신청서를 입력해주세요!",
"Please input your organization!": "귀하의 조직을 입력해 주세요!",
"No verification": "인증 없음",
"Normal": "일반",
"Only signup": "회원가입만",
"Org choice mode": "조직 선택 모드",
"Org choice mode - Tooltip": "조직 선택 모드 - Tooltip",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "\\\"자동 로그인\\\"을 활성화하기 전에 먼저 \\\"로그인 세션\\\"을 활성화 해주세요",
"Please input your application!": "어플리케이션 이름을 입력해주세요!",
"Please input your organization!": "조직 이름을 입력해주세요!",
"Please select a HTML file": "HTML 파일을 선택해 주세요",
"Random": "Random",
"Real name": "Real name",
"Redirect URL": "리디렉 URL",
"Random": "무작위",
"Real name": "실명",
"Redirect URL": "리디렉 URL",
"Redirect URL (Assertion Consumer Service POST Binding URL) - Tooltip": "리디렉션 URL (단언 서비스 소비자 POST 바인딩 URL)",
"Redirect URLs": "URL 리디렉트",
"Redirect URLs": "리디렉션 URL 목록",
"Redirect URLs - Tooltip": "허용된 리디렉션 URL 목록은 정규 표현식 일치를 지원합니다. 목록에 없는 URL은 리디렉션에 실패합니다",
"Refresh token expire": "리프레시 토큰 만료",
"Refresh token expire - Tooltip": "리프레시 토큰 만료 시간",
"Reset to Empty": "Reset to Empty",
"Right": "옳은",
"Reset to Empty": "초기화",
"Right": "오른쪽",
"Rule": "규칙",
"SAML metadata": "SAML 메타데이터",
"SAML metadata - Tooltip": "SAML 프로토콜의 메타 데이터",
"SAML reply URL": "SAML 응답 URL",
"Select": "Select",
"Select": "선택",
"Side panel HTML": "사이드 패널 HTML",
"Side panel HTML - Edit": "사이드 패널 HTML - 편집",
"Side panel HTML - Tooltip": "로그인 페이지의 측면 패널용 HTML 코드를 맞춤 설정하십시오",
"Sign Up Error": "가입 오류",
"Signin": "Signin",
"Signin (Default True)": "Signin (Default True)",
"Signin items": "Signin items",
"Signin items - Tooltip": "Signin items - Tooltip",
"Signin methods": "Signin methods",
"Signin methods - Tooltip": "Signin methods - Tooltip",
"Sign Up Error": "회원가입 오류",
"Signin": "로그인",
"Signin (Default True)": "로그인 (기본 동의)",
"Signin items": "로그인 항목",
"Signin items - Tooltip": "로그인 할 때에 사용자가 작성해야하는 항목들",
"Signin methods": "로그인 방법",
"Signin methods - Tooltip": "로그인 방법 - Tooltip",
"Signin session": "로그인 세션",
"Signup items": "가입 항목",
"Signup items - Tooltip": "새로운 계정 등록시 사용자가 작성해야하는 항목들",
"Signup items": "회원가입 항목",
"Signup items - Tooltip": "회원가입 할 때에 사용자가 작성해야하는 항목들",
"Single Choice": "Single Choice",
"Small icon": "Small icon",
"Tags - Tooltip": "Only users with the tag that is listed in the application tags can login",
"The application does not allow to sign up new account": "이 어플리케이션은 새 계정 등록을 허용하지 않습니다",
"Small icon": "작은 아이콘",
"Tags - Tooltip": "태그(Tags): 어플리케이션의 태그 목록에 있는 태그를 가진 사용자만 로그인할 수 있습니다",
"The application does not allow to sign up new account": "이 어플리케이션은 회원가입을 허용하지 않습니다",
"Token expire": "토큰 만료",
"Token expire - Tooltip": "액세스 토큰 만료 시간",
"Token fields": "Token fields",
"Token fields - Tooltip": "Token fields - Tooltip",
"Token fields": "토큰 필드",
"Token fields - Tooltip": "토큰에 포함된 사용자 필드",
"Token format": "토큰 형식",
"Token format - Tooltip": "접근 토큰의 형식",
"Token format - Tooltip": "엑세스 토큰의 형식",
"Token signing method": "Token signing method",
"Token signing method - Tooltip": "Signing method of JWT token, needs to be the same algorithm as the certificate",
"Use Email as NameID": "Use Email as NameID",
"Use Email as NameID - Tooltip": "Use Email as NameID - Tooltip",
"You are unexpected to see this prompt page": "당신은 이 프롬프트 페이지를 볼 것을 예상하지 못했습니다"
"You are unexpected to see this prompt page": "이 프롬프트 페이지는 표시되지 않아야 합니다"
},
"cert": {
"Bit size": "비트 크기",
@ -209,17 +210,17 @@
"Adapter": "어댑터",
"Adapter - Tooltip": "정책 저장소의 테이블 이름",
"Adapters": "어댑터",
"Add": "추가하다",
"Add custom item": "Add custom item",
"Admin": "Admin",
"Add": "추가",
"Add custom item": "사용자 지정 항목 추가",
"Admin": "관리자",
"Affiliation URL": "소속 URL",
"Affiliation URL - Tooltip": "소속 홈페이지 URL",
"All": "All",
"All": "모두",
"Application": "응용 프로그램",
"Application - Tooltip": "Application - Tooltip",
"Applications": "응용 프로그램",
"Applications": "어플리케이션",
"Applications that require authentication": "인증이 필요한 애플리케이션들",
"Apps": "Apps",
"Apps": "",
"Authorization": "Authorization",
"Avatar": "아바타",
"Avatar - Tooltip": "사용자를 위한 공개 아바타 이미지",
@ -233,7 +234,7 @@
"Certs": "증명서",
"Click to Upload": "클릭하여 업로드하세요",
"Client IP": "Client IP",
"Close": "닫",
"Close": "닫",
"Confirm": "Confirm",
"Copied to clipboard successfully": "Copied to clipboard successfully",
"Created time": "작성한 시간",
@ -322,7 +323,7 @@
"Method": "방법",
"Model": "모델",
"Model - Tooltip": "Casbin 접근 제어 모델",
"Models": "모델",
"Models": "모델",
"Name": "이름",
"Name - Tooltip": "고유한 문자열 기반 ID",
"Name format": "Name format",
@ -364,10 +365,10 @@
"Pricing": "Pricing",
"Pricing - Tooltip": "Pricing - Tooltip",
"Pricings": "가격",
"Products": "제품",
"Products": "제품",
"Provider": "공급자",
"Provider - Tooltip": "지불 공급자를 구성해야합니다. PayPal, Alipay, WeChat Pay 등이 포함됩니다.",
"Providers": "제공자",
"Providers": "제공자",
"Providers - Tooltip": "공급 업체는 구성되어야합니다. 3rd-party 로그인, 객체 저장소, 검증 코드 등을 포함합니다.",
"QR Code": "QR Code",
"QR code is too large": "QR code is too large",
@ -379,7 +380,7 @@
"Role": "Role",
"Role - Tooltip": "Role - Tooltip",
"Roles": "역할들",
"Roles - Tooltip": "사용자가 속한 역할",
"Roles - Tooltip": "사용자가 속한 역할",
"Root cert": "Root cert",
"Root cert - Tooltip": "Root cert - Tooltip",
"SAML attributes": "SAML attributes",
@ -390,7 +391,7 @@
"Save": "저장하다",
"Save & Exit": "저장하고 종료하기",
"Session ID": "세션 ID",
"Sessions": "세션",
"Sessions": "세션",
"Shortcuts": "Shortcuts",
"Signin URL": "로그인 URL",
"Signin URL - Tooltip": "로그인 페이지에 대한 사용자 지정 URL입니다. 설정되지 않으면 기본 Casdoor 로그인 페이지가 사용됩니다. 설정하면 Casdoor의 여러 페이지의 로그인 링크가이 URL로 리디렉션됩니다",
@ -409,99 +410,99 @@
"Successfully deleted": "성공적으로 삭제되었습니다",
"Successfully removed": "Successfully removed",
"Successfully saved": "성공적으로 저장되었습니다",
"Successfully sent": "Successfully sent",
"Successfully synced": "Successfully synced",
"Supported country codes": "지원되는 국가 코드",
"Supported country codes - Tooltip": "조직에서 지원하는 국가 코드입니다. 이 코드들은 SMS 인증 코드를 보낼 때 접두사로 선택할 수 있습니다",
"Sure to delete": "삭제하시겠습니까?",
"Sure to disable": "Sure to disable",
"Sure to remove": "Sure to remove",
"Successfully sent": "성공적으로 전송했습니다",
"Successfully synced": "동기화 성공",
"Supported country codes": "지원되는 국가 코드",
"Supported country codes - Tooltip": "조직에서 지원하는 국가 코드입니다. SMS 인증 코드를 보낼 때 접두사로 선택할 수 있습니다",
"Sure to delete": "정말 삭제하시겠습니까?",
"Sure to disable": "정말 비활성화하시겠습니까?",
"Sure to remove": "정말 제거하시겠습니까?",
"Swagger": "Swagger",
"Sync": "싱크",
"Syncers": "싱크어스",
"Sync": "동기화",
"Syncers": "동기화 도구",
"System Info": "시스템 정보",
"There was a problem signing you in..": "There was a problem signing you in..",
"There was a problem signing you in..": "로그인하는 데 문제가 발생했습니다..",
"This is a read-only demo site!": "이것은 읽기 전용 데모 사이트입니다!",
"Timestamp": "Timestamp",
"Timestamp": "타임스탬프",
"Tokens": "토큰",
"Tour": "Tour",
"Transactions": "Transactions",
"Type": "Type",
"Type - Tooltip": "Type - Tooltip",
"Type": "유형",
"Type - Tooltip": "유형 - Tooltip",
"URL": "URL",
"URL - Tooltip": "URL 링크",
"Up": "위로",
"Updated time": "Updated time",
"Updated time": "업데이트된 시간",
"User": "사용자",
"User - Tooltip": "사용자 이름이 정확한지 확인하세요",
"User Management": "User Management",
"User Management": "사용자 관리",
"User containers": "사용자 풀",
"User type": "사용자 유형",
"User type - Tooltip": "사용자가 속한 태그는 기본적으로 \"보통 사용자\"로 설정됩니다",
"Users": "사용자",
"Users - Tooltip": "Users - Tooltip",
"Users - Tooltip": "사용자 - Tooltip",
"Users under all organizations": "모든 조직의 사용자",
"Verifications": "Verifications",
"Webhooks": "Webhooks",
"You can only select one physical group": "You can only select one physical group",
"empty": "",
"remove": "remove",
"Verifications": "인증",
"Webhooks": "웹훅",
"You can only select one physical group": "하나의 물리적 그룹만 선택할 수 있습니다",
"empty": "비어 있음",
"remove": "제거",
"{total} in total": "총 {total}개"
},
"group": {
"Edit Group": "Edit Group",
"New Group": "New Group",
"Parent group": "Parent group",
"Parent group - Tooltip": "Parent group - Tooltip",
"Physical": "Physical",
"Show all": "Show all",
"Edit Group": "그룹 편집",
"New Group": "새 그룹",
"Parent group": "상위 그룹",
"Parent group - Tooltip": "상위 그룹 - Tooltip",
"Physical": "물리적",
"Show all": "모두 보기",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"Virtual": "가상",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",
"New users past 7 days": "New users past 7 days",
"New users today": "New users today",
"Past 30 Days": "Past 30 Days",
"Total users": "Total users"
"New users past 30 days": "지난 30일 동안의 신규 사용자",
"New users past 7 days": "지난 7일 동안의 신규 사용자",
"New users today": "오늘의 신규 사용자",
"Past 30 Days": "지난 30일",
"Total users": "유저 수 합계"
},
"invitation": {
"Code": "Code",
"Code - Tooltip": "Code - Tooltip",
"Default code": "Default code",
"Default code - Tooltip": "When the invitation code is a regular expression, please enter the invitation code that matches the regular expression rule as the default invitation code for the invitation link",
"Edit Invitation": "Edit Invitation",
"New Invitation": "New Invitation",
"Quota": "Quota",
"Quota - Tooltip": "Quota - Tooltip",
"Used count": "Used count",
"Code": "초대 코드",
"Code - Tooltip": "초대 코드는 단일 문자열이거나 정규 표현식일 수 있습니다. 정규 표현식과 일치하는 모든 문자열은 유효한 초대 코드입니다",
"Default code": "기본 초대 코드",
"Default code - Tooltip": "초대 코드가 정규 표현식인 경우, 기본 초대 코드로 정규 표현식 규칙과 일치하는 초대 코드를 입력해 주세요",
"Edit Invitation": "초대 코드 수정",
"New Invitation": "새 초대 코드",
"Quota": "최대 사용 횟수",
"Quota - Tooltip": "초대 코드를 사용하여 등록할 수 있는 최대 사용자 수",
"Used count": "사용 횟수",
"Used count - Tooltip": "Used count - Tooltip",
"You need to first specify a default application for organization: ": "You need to first specify a default application for organization: "
},
"ldap": {
"Admin": "Admin",
"Admin - Tooltip": "LDAP 서버 관리자의 CN 또는 ID",
"Admin": "관리자",
"Admin - Tooltip": "LDAP 서버 관리자의 CN(Common Name) 또는 ID",
"Admin Password": "관리자 비밀번호",
"Admin Password - Tooltip": "LDAP 서버 관리자 비밀번호",
"Allow self-signed certificate": "Allow self-signed certificate",
"Allow self-signed certificate - Tooltip": "Allow self-signed certificate - Tooltip",
"Auto Sync": "자동 동기화",
"Auto Sync - Tooltip": "자동 동기화 구성, 0에서 비활성화됨",
"Base DN": "기본 DN",
"Base DN - Tooltip": "LDAP 검색 중 기본 DN",
"Base DN": "Base DN",
"Base DN - Tooltip": "LDAP 검색 중 Base DN",
"CN": "CN",
"Default group": "Default group",
"Default group - Tooltip": "Group to which users belong after synchronization",
"Edit LDAP": "LDAP 수정",
"Enable SSL": "SSL 활성화",
"Enable SSL - Tooltip": "SSL을 활성화할지 여부를 결정하십시오",
"Filter fields": "Filter fields",
"Filter fields - Tooltip": "Filter fields - Tooltip",
"Enable SSL - Tooltip": "SSL을 활성화하시겠습니까?",
"Filter fields": "필터 필드",
"Filter fields - Tooltip": "필터 필드 - Tooltip",
"Group ID": "그룹 ID",
"Last Sync": "마지막 동기화",
"Search Filter": "Search Filter",
"Search Filter - Tooltip": "Search Filter - Tooltip",
"Search Filter": "검색 필터",
"Search Filter - Tooltip": "검색 필터 - Tooltip",
"Server": "서버",
"Server host": "서버 호스트",
"Server host - Tooltip": "LDAP 서버 주소",
@ -510,74 +511,74 @@
"Server port": "서버 포트",
"Server port - Tooltip": "LDAP 서버 포트",
"The Auto Sync option will sync all users to specify organization": "오토 동기화 옵션은 모든 사용자를 지정된 조직에 동기화합니다",
"synced": "synced",
"unsynced": "unsynced"
"synced": "동기화됨",
"unsynced": "동기화 되어있지 않음"
},
"login": {
"Auto sign in": "자동 로그인",
"Back button": "Back button",
"Back button": "뒤로가기 버튼",
"Continue with": "계속하다",
"Email": "Email",
"Email": "이메일",
"Email or phone": "이메일 또는 전화",
"Face ID": "Face ID",
"Face Recognition": "Face Recognition",
"Face recognition failed": "Face recognition failed",
"Face Recognition": "얼굴 인식",
"Face recognition failed": "얼굴 인식 실패",
"Failed to log out": "Failed to log out",
"Failed to obtain MetaMask authorization": "Failed to obtain MetaMask authorization",
"Failed to obtain Web3-Onboard authorization": "Failed to obtain Web3-Onboard authorization",
"Failed to obtain MetaMask authorization": "MetaMask 인증을 받지 못했습니다",
"Failed to obtain Web3-Onboard authorization": "Web3-Onboard 인증을 받지 못했습니다",
"Forgot password?": "비밀번호를 잊으셨나요?",
"LDAP": "LDAP",
"LDAP username, Email or phone": "LDAP username, Email or phone",
"Loading": "로딩 중입니다",
"LDAP username, Email or phone": "LDAP 사용자 이름, 이메일 또는 전화번호",
"Loading": "불러오는 중",
"Logging out...": "로그아웃 중...",
"MetaMask plugin not detected": "MetaMask plugin not detected",
"MetaMask plugin not detected": "MetaMask 플러그인이 감지되지 않았습니다",
"Model loading failure": "Model loading failure",
"No account?": "계정이 없나요?",
"Or sign in with another account": "다른 계정으로 로그인하세요",
"Phone": "Phone",
"Please ensure sufficient lighting and align your face in the center of the recognition box": "Please ensure sufficient lighting and align your face in the center of the recognition box",
"Please ensure that you have a camera device for facial recognition": "Please ensure that you have a camera device for facial recognition",
"Phone": "전화번호",
"Please ensure sufficient lighting and align your face in the center of the recognition box": "충분한 조명을 확보하고 얼굴을 인식 상자 중앙에 맞춰주세요",
"Please ensure that you have a camera device for facial recognition": "얼굴 인식을 위한 카메라 장치가 있는지 확인해 주세요",
"Please input your Email or Phone!": "이메일 또는 전화번호를 입력해주세요!",
"Please input your Email!": "Please input your Email!",
"Please input your LDAP username!": "Please input your LDAP username!",
"Please input your Phone!": "Please input your Phone!",
"Please input your code!": "코드를 입력해주세요!",
"Please input your organization name!": "Please input your organization name!",
"Please input your password!": "비밀번호를 입력해주세요!",
"Please load the webpage using HTTPS, otherwise the camera cannot be accessed": "Please load the webpage using HTTPS, otherwise the camera cannot be accessed",
"Please provide permission to access the camera": "Please provide permission to access the camera",
"Please select an organization": "Please select an organization",
"Please select an organization to sign in": "Please select an organization to sign in",
"Please type an organization to sign in": "Please type an organization to sign in",
"Redirecting, please wait.": "리디렉 중입니다. 잠시 기다려주세요.",
"Please input your Email!": "이메일을 입력해 주세요",
"Please input your LDAP username!": "LDAP 사용자 이름을 입력해주세요",
"Please input your Phone!": "전화번호를 입력해주세요",
"Please input your code!": "코드를 입력해주세요",
"Please input your organization name!": "조직 이름을 입력해주세요",
"Please input your password!": "비밀번호를 입력해주세요",
"Please load the webpage using HTTPS, otherwise the camera cannot be accessed": "웹페이지를 HTTPS로 로드해주세요. 그렇지 않을 경우 카메라에 접근이 불가능합니다",
"Please provide permission to access the camera": "카메라 접근 권한을 허용해주세요",
"Please select an organization": "조직을 선택해주세요",
"Please select an organization to sign in": "로그인할 조직을 선택해주세요",
"Please type an organization to sign in": "로그인할 조직 이름을 입력해주세요",
"Redirecting, please wait.": "리디렉 중입니다. 잠시 기다려주세요.",
"Sign In": "로그인",
"Sign in with Face ID": "Sign in with Face ID",
"Sign in with WebAuthn": "WebAuthn으로 로그인하세요",
"Sign in with {type}": "{type}로 로그인하세요",
"Signin button": "Signin button",
"Sign in with Face ID": "Face ID로 로그인",
"Sign in with WebAuthn": "WebAuthn으로 로그인",
"Sign in with {type}": "{type}로 로그인",
"Signin button": "로그인 버튼",
"Signing in...": "로그인 중...",
"Successfully logged in with WebAuthn credentials": "WebAuthn 자격 증명으로 로그인 성공적으로 수행했습니다",
"The camera is currently in use by another webpage": "The camera is currently in use by another webpage",
"The input is not valid Email or phone number!": "입력한 값은 유효한 이메일 또는 전화번호가 아닙니다!",
"The input is not valid Email!": "The input is not valid Email!",
"The input is not valid phone number!": "The input is not valid phone number!",
"Successfully logged in with WebAuthn credentials": "WebAuthn 자격 증명으로 성공적으로 로그인했습니다",
"The camera is currently in use by another webpage": "카메라가 다른 웹페이지에서 사용 중입니다",
"The input is not valid Email or phone number!": "입력한 이메일 또는 전화번호가 유효하지 않습니다",
"The input is not valid Email!": "입력한 이메일이 유효하지 않습니다",
"The input is not valid phone number!": "입력한 전화번호가 유효하지 않습니다",
"To access": "접근하다",
"Verification code": "인증 코드",
"WebAuthn": "WebAuthn",
"sign up now": "지금 가입하세요",
"username, Email or phone": "유저명, 이메일 또는 전화번호"
"sign up now": "회원가입하세요",
"username, Email or phone": "사용자 이름, 이메일 또는 전화번호"
},
"mfa": {
"Each time you sign in to your Account, you'll need your password and a authentication code": "Each time you sign in to your Account, you'll need your password and a authentication code",
"Enable multi-factor authentication": "Enable multi-factor authentication",
"Failed to get application": "Failed to get application",
"Failed to initiate MFA": "Failed to initiate MFA",
"Have problems?": "Have problems?",
"Multi-factor authentication": "Multi-factor authentication",
"Multi-factor authentication - Tooltip ": "Multi-factor authentication - Tooltip ",
"Multi-factor methods": "Multi-factor methods",
"Multi-factor recover": "Multi-factor recover",
"Multi-factor recover description": "Multi-factor recover description",
"Each time you sign in to your Account, you'll need your password and a authentication code": "로그인할 때마다 비밀번호와 인증 코드가 필요합니다",
"Enable multi-factor authentication": "MFA 활성화",
"Failed to get application": "어플리케이션을 가져올 수 없습니다",
"Failed to initiate MFA": "MFA를 시작하지 못했습니다",
"Have problems?": "문제가 있으신가요?",
"Multi-factor authentication": "다중 인증 (MFA)",
"Multi-factor authentication - Tooltip ": "다중 인증 (MFA) - Tooltip",
"Multi-factor methods": "다중 인증 방법",
"Multi-factor recover": "다중 인증 복구",
"Multi-factor recover description": "다중 인증 복구 설명",
"Or copy the secret to your Authenticator App": "Or copy the secret to your Authenticator App",
"Passcode": "Passcode",
"Please bind your email first, the system will automatically uses the mail for multi-factor authentication": "Please bind your email first, the system will automatically uses the mail for multi-factor authentication",
@ -613,8 +614,8 @@
"New Model": "새로운 모델"
},
"organization": {
"Account items": "계정 항목",
"Account items - Tooltip": "개인 설정 페이지의 항목",
"Account items": "계정 항목",
"Account items - Tooltip": "개인 설정 페이지의 항목",
"All": "모두",
"Edit Organization": "단체 수정",
"Follow global theme": "글로벌 테마를 따르세요",
@ -720,7 +721,7 @@
"Read": "읽다",
"Resource type": "자원 유형",
"Resource type - Tooltip": "자원 유형",
"Resources - Tooltip": "인가된 자원",
"Resources - Tooltip": "인가된 자원",
"Submitter": "제출자",
"Submitter - Tooltip": "이 허가를 신청하는 사람",
"TreeNode": "트리 노드",
@ -1005,7 +1006,7 @@
"Sub groups - Tooltip": "Sub groups - Tooltip",
"Sub roles": "서브 역할",
"Sub roles - Tooltip": "현재 역할에 포함된 역할",
"Sub users": "하위 사용자",
"Sub users": "하위 사용자",
"Sub users - Tooltip": "현재 역할에 포함 된 사용자"
},
"signup": {
@ -1102,7 +1103,7 @@
"Table": "테이블",
"Table - Tooltip": "데이터베이스 테이블 이름",
"Table columns": "테이블 열",
"Table columns - Tooltip": "데이터 동기화에 관련된 테이블의 열입니다. 동기화에 관련되지 않은 열은 추가할 필요가 없습니다",
"Table columns - Tooltip": "데이터 동기화에 관련된 테이블의 열(Columns) 입니다. 동기화에 관련되지 않은 열은 추가할 필요가 없습니다",
"Test DB Connection": "Test DB Connection"
},
"system": {
@ -1170,7 +1171,7 @@
"Balance": "Balance",
"Balance - Tooltip": "User's balance",
"Bio": "바이오",
"Bio - Tooltip": "사용자의 자기소개\n\n안녕하세요, 저는 [이름]입니다. 한국을 포함한 여러 나라에서 살아본 적이 있습니다. 저는 [직업/전공]을 공부하고 있으며 [취미/관심사]에 대해 깊게 알고 있습니다. 이 채팅 서비스를 사용하여 새로운 사람들과 함께 대화를 나누기를 원합니다. 감사합니다",
"Bio - Tooltip": "사용자의 자기소개",
"Birthday": "Birthday",
"Birthday - Tooltip": "Birthday - Tooltip",
"Captcha Verify Failed": "캡차 검증 실패",
@ -1262,7 +1263,7 @@
"Upload ID card with person picture": "Upload ID card with person picture",
"Upload a photo": "사진을 업로드하세요",
"User Profile": "User Profile",
"Values": "가치들",
"Values": "",
"Verification code sent": "인증 코드가 전송되었습니다",
"WebAuthn credentials": "웹 인증 자격증명",
"You have changed the username, please save your change first before modifying the password": "You have changed the username, please save your change first before modifying the password",
@ -1280,7 +1281,7 @@
"Events - Tooltip": "이벤트",
"Extended user fields": "Extended user fields",
"Extended user fields - Tooltip": "Extended user fields - Tooltip",
"Headers": "헤더",
"Headers": "헤더",
"Headers - Tooltip": "HTTP 헤더 (키-값 쌍)",
"Is user extended": "사용자가 확장되었습니까?",
"Is user extended - Tooltip": "사용자의 확장 필드를 JSON에 포함할지 여부",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Left",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Left",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

View File

@ -1,40 +1,40 @@
{
"account": {
"Logout": "Logout",
"My Account": "My Account",
"Sign Up": "Sign Up"
"Logout": "Wyloguj się",
"My Account": "Moje Konto",
"Sign Up": "Zarejestruj się"
},
"adapter": {
"Duplicated policy rules": "Duplicated policy rules",
"Edit Adapter": "Edit Adapter",
"Failed to sync policies": "Failed to sync policies",
"New Adapter": "New Adapter",
"Policies": "Policies",
"Policies - Tooltip": "Casbin policy rules",
"Rule type": "Rule type",
"Sync policies successfully": "Sync policies successfully",
"Use same DB": "Use same DB",
"Duplicated policy rules": "Zduplikowane zasady polityki",
"Edit Adapter": "Edytuj adapter",
"Failed to sync policies": "Nie udało się zsynchronizować reguł",
"New Adapter": "Nowy adapter",
"Policies": "Reguły",
"Policies - Tooltip": "Zasady polityki Casbin",
"Rule type": "Typ reguły",
"Sync policies successfully": "Pomyślna synchronizacja zasad",
"Use same DB": "Użyj tej samej bazy danych",
"Use same DB - Tooltip": "Use same DB - Tooltip"
},
"application": {
"Add Face ID": "Add Face ID",
"Add Face ID with Image": "Add Face ID with Image",
"Always": "Always",
"Auto signin": "Auto signin",
"Auto signin - Tooltip": "When a logged-in session exists in Casdoor, it is automatically used for application-side login",
"Background URL": "Background URL",
"Background URL - Tooltip": "URL of the background image used in the login page",
"Always": "Zawsze",
"Auto signin": "Auto-logowanie",
"Auto signin - Tooltip": "Gdy zalogowana sesja istnieje w Casdoor, zostanie ona automatycznie użyta do logowania do aplikacji",
"Background URL": "URL tła",
"Background URL - Tooltip": "URL obrazu tła używanego na stronie logowania",
"Background URL Mobile": "Background URL Mobile",
"Background URL Mobile - Tooltip": "Background URL Mobile - Tooltip",
"Big icon": "Big icon",
"Binding providers": "Binding providers",
"CSS style": "CSS style",
"Center": "Center",
"Copy SAML metadata URL": "Copy SAML metadata URL",
"Copy prompt page URL": "Copy prompt page URL",
"Copy signin page URL": "Copy signin page URL",
"Copy signup page URL": "Copy signup page URL",
"Custom CSS": "Custom CSS",
"Big icon": "Duża ikona",
"Binding providers": "Dostawcy powiązań",
"CSS style": "Styl CSS",
"Center": "Wyśrodkowany",
"Copy SAML metadata URL": "Skopiuj adres URL metadanych SAML",
"Copy prompt page URL": "Skopiuj adres URL strony z monitem",
"Copy signin page URL": "Skopiuj adres URL strony logowania",
"Copy signup page URL": "Skopiuj adres URL strony rejestracji",
"Custom CSS": "Niestandardowy CSS",
"Custom CSS - Edit": "Custom CSS - Edit",
"Custom CSS - Tooltip": "CSS styling of the signup, signin and forget password forms (e.g. adding borders and shadows)",
"Custom CSS Mobile": "Custom CSS Mobile",
@ -51,22 +51,22 @@
"Enable SAML compression": "Enable SAML compression",
"Enable SAML compression - Tooltip": "Whether to compress SAML response messages when Casdoor is used as SAML idp",
"Enable side panel": "Enable side panel",
"Enable signin session - Tooltip": "Whether Casdoor maintains a session after logging into Casdoor from the application",
"Enable signup": "Enable signup",
"Enable signup - Tooltip": "Whether to allow users to register a new account",
"Failed signin frozen time": "Failed signin frozen time",
"Failed signin frozen time - Tooltip": "Failed signin frozen time - Tooltip",
"Failed signin limit": "Failed signin limit",
"Failed signin limit - Tooltip": "Failed signin limit - Tooltip",
"Failed to sign in": "Failed to sign in",
"File uploaded successfully": "File uploaded successfully",
"First, last": "First, last",
"Follow organization theme": "Follow organization theme",
"Footer HTML": "Footer HTML",
"Footer HTML - Edit": "Footer HTML - Edit",
"Footer HTML - Tooltip": "Custom the footer of your application",
"Enable signin session - Tooltip": "Czy Casdoor utrzymuje sesję po zalogowaniu się do Casdoor z aplikacji",
"Enable signup": "Włącz rejestrację",
"Enable signup - Tooltip": "Czy zezwolić użytkownikom na rejestrację nowego konta",
"Failed signin frozen time": "Czas blokady po nieudanym logowaniu",
"Failed signin frozen time - Tooltip": "Czas blokady po nieudanym logowaniu - podpowiedź",
"Failed signin limit": "Limit nieudanych logowań",
"Failed signin limit - Tooltip": "Limit nieudanych logowań - podpowiedź",
"Failed to sign in": "Nie udało się zalogować",
"File uploaded successfully": "Plik został pomyślnie przesłany",
"First, last": "Imię, Nazwisko",
"Follow organization theme": "Użyj motywu organizacji",
"Footer HTML": "Stopka HTML",
"Footer HTML - Edit": "Stopka HTML - Edycja",
"Footer HTML - Tooltip": "Dostosuj stopkę swojej aplikacji",
"Forced redirect origin": "Forced redirect origin",
"Form position": "Form position",
"Form position": "Pozycja formularza",
"Form position - Tooltip": "Location of the signup, signin and forget password forms",
"Generate Face ID": "Generate Face ID",
"Grant types": "Grant types",
@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Left",
@ -85,21 +86,21 @@
"New Application": "New Application",
"No verification": "No verification",
"Normal": "Normal",
"Only signup": "Only signup",
"Org choice mode": "Org choice mode",
"Org choice mode - Tooltip": "Org choice mode - Tooltip",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"",
"Please input your application!": "Please input your application!",
"Please input your organization!": "Please input your organization!",
"Please select a HTML file": "Please select a HTML file",
"Random": "Random",
"Real name": "Real name",
"Redirect URL": "Redirect URL",
"Redirect URL (Assertion Consumer Service POST Binding URL) - Tooltip": "Redirect URL (Assertion Consumer Service POST Binding URL)",
"Redirect URLs": "Redirect URLs",
"Redirect URLs - Tooltip": "Allowed redirect URL list, supporting regular expression matching; URLs not in the list will fail to redirect",
"Refresh token expire": "Refresh token expire",
"Refresh token expire - Tooltip": "Refresh token expiration time",
"Only signup": "Tylko rejestracja",
"Org choice mode": "Tryb wyboru organizacji",
"Org choice mode - Tooltip": "Tryb wyboru organizacji - podpowiedź",
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "Proszę włączyć \\\"Sesja logowania\\\" przed włączeniem \\\"Auto logowania\\\"",
"Please input your application!": "Proszę wprowadzić swoją aplikację!",
"Please input your organization!": "Proszę wprowadzić swoją organizację!",
"Please select a HTML file": "Proszę wybrać plik HTML",
"Random": "Losowy",
"Real name": "Prawdziwe nazwisko",
"Redirect URL": "Adres URL przekierowania",
"Redirect URL (Assertion Consumer Service POST Binding URL) - Tooltip": "URL przekierowania (Assertion Consumer Service POST Binding URL)",
"Redirect URLs": "Adresy URL przekierowania",
"Redirect URLs - Tooltip": "Pozwól na listę adresów URL przekierowań, obsługującą dopasowanie wyrażenia regularnego; adresy URL nieznajdujce się na liście nie będą przekierowane",
"Refresh token expire": "Wygasanie tokena odświeżania",
"Refresh token expire - Tooltip": "Czas wygasanie tokena odświeżania",
"Reset to Empty": "Reset to Empty",
"Right": "Right",
"Rule": "Rule",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Código de convite",
"Left": "Esquerda",
@ -169,7 +170,7 @@
"Submit and complete": "Enviar e concluir"
},
"currency": {
"AUD": "AUD",
"AUD": "",
"BRL": "BRL",
"CAD": "CAD",
"CHF": "CHF",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

File diff suppressed because it is too large Load Diff

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Vlastný HTML kód pre hlavičku vašej vstupnej stránky aplikácie",
"Incremental": "Postupný",
"Input": "Vstup",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Kód pozvania",
"Left": "Vľavo",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Left",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Incremental",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Davet Kodu",
"Left": "Sol",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Налаштуйте тег head на сторінці входу до програми",
"Incremental": "Інкрементний",
"Input": "Введення",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Код запрошення",
"Left": "Ліворуч",
@ -457,7 +458,7 @@
"Show all": "Покажи все",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Віртуальний",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "Нові користувачі за останні 30 днів",

View File

@ -76,6 +76,7 @@
"Header HTML - Tooltip": "Custom the head tag of your application entry page",
"Incremental": "Tăng",
"Input": "Input",
"Internet-Only": "Internet-Only",
"Invalid characters in application name": "Invalid characters in application name",
"Invitation code": "Invitation code",
"Left": "Trái",
@ -457,7 +458,7 @@
"Show all": "Show all",
"Upload (.xlsx)": "Upload (.xlsx)",
"Virtual": "Virtual",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page"
},
"home": {
"New users past 30 days": "New users past 30 days",

View File

@ -44,14 +44,14 @@
"Edit Application": "编辑应用",
"Enable Email linking": "自动关联邮箱相同的账号",
"Enable Email linking - Tooltip": "使用第三方授权登录时,如果组织中存在与授权用户邮箱相同的用户,会自动关联该第三方登录方式到该用户",
"Enable SAML C14N10": "启用SAML C14N10",
"Enable SAML C14N10 - Tooltip": "在SAML协议里使用C14N10而不是C14N11",
"Enable SAML POST binding": "启用SAML POST Binding",
"Enable SAML C14N10": "启用 SAML C14N10",
"Enable SAML C14N10 - Tooltip": "在 SAML 协议里使用 C14N10而不是 C14N11",
"Enable SAML POST binding": "启用 SAML POST Binding",
"Enable SAML POST binding - Tooltip": "HTTP POST绑定使用HTML表单中的输入字段发送SAML消息当SP使用它时启用",
"Enable SAML compression": "压缩SAML响应",
"Enable SAML compression - Tooltip": "Casdoor作为SAML IdP是否压缩SAML响应信息",
"Enable SAML compression": "压缩 SAML 响应",
"Enable SAML compression - Tooltip": "Casdoor 作为 SAML idp 时,是否压缩 SAML 响应信息",
"Enable side panel": "启用侧面板",
"Enable signin session - Tooltip": "从应用登录Casdoor后Casdoor是否保持会话",
"Enable signin session - Tooltip": "从应用登录 Casdoor Casdoor 是否保持会话",
"Enable signup": "启用注册",
"Enable signup - Tooltip": "是否允许用户注册",
"Failed signin frozen time": "登入重试等待时间",
@ -62,20 +62,21 @@
"File uploaded successfully": "文件上传成功",
"First, last": "名字, 姓氏",
"Follow organization theme": "使用组织主题",
"Footer HTML": "Footer HTML",
"Footer HTML - Edit": "Footer HTML - Edit",
"Footer HTML - Tooltip": "自定义应用的footer",
"Footer HTML": "页脚 HTML",
"Footer HTML - Edit": "页脚 HTML - 编辑",
"Footer HTML - Tooltip": "自定义应用的 footer",
"Forced redirect origin": "强制重定向origin",
"Form position": "表单位置",
"Form position - Tooltip": "注册、登录、忘记密码等表单的位置",
"Generate Face ID": "生成人脸ID",
"Grant types": "OAuth授权类型",
"Grant types - Tooltip": "选择允许哪些OAuth协议中的grant types",
"Header HTML": "Header HTML",
"Grant types - Tooltip": "选择 OAuth 协议中允许的授权类型",
"Header HTML": "页眉 HTML",
"Header HTML - Edit": "Header HTML - 编辑",
"Header HTML - Tooltip": "自定义应用页面的head标签",
"Header HTML - Tooltip": "自定义应用页面的头部标签",
"Incremental": "递增",
"Input": "输入",
"Internet-Only": "外网启用",
"Invalid characters in application name": "应用名称内有非法字符",
"Invitation code": "邀请码",
"Left": "居左",
@ -91,25 +92,25 @@
"Please enable \\\"Signin session\\\" first before enabling \\\"Auto signin\\\"": "开启 \\\"保持登录会话\\\" 后才能开启 \\\"自动登录\\\"",
"Please input your application!": "请输入你的应用",
"Please input your organization!": "请输入你的组织",
"Please select a HTML file": "请选择一个HTML文件",
"Please select a HTML file": "请选择一个 HTML 文件",
"Random": "随机",
"Real name": "真实姓名",
"Redirect URL": "重定向 URL",
"Redirect URL (Assertion Consumer Service POST Binding URL) - Tooltip": "回复 URL (断言使用者服务 URL, 使用POST请求返回响应) - Tooltip",
"Redirect URL (Assertion Consumer Service POST Binding URL) - Tooltip": "重定向 URL(断言消费者服务 POST 绑定 URL",
"Redirect URLs": "重定向 URLs",
"Redirect URLs - Tooltip": "允许的重定向URL列表支持正则匹配不在列表中的URL将会跳转失败",
"Refresh token expire": "Refresh Token过期",
"Refresh token expire - Tooltip": "Refresh Token过期时间",
"Redirect URLs - Tooltip": "允许的重定向 URL 列表,支持正则匹配,不在列表中的 URL 将会跳转失败",
"Refresh token expire": "Refresh Token 过期",
"Refresh token expire - Tooltip": "Refresh Token 过期时间",
"Reset to Empty": "重置为空",
"Right": "居右",
"Rule": "规则",
"SAML metadata": "SAML元数据",
"SAML metadata - Tooltip": "SAML协议的元数据Metadata信息",
"SAML reply URL": "SAML回复 URL",
"SAML metadata": "SAML 元数据",
"SAML metadata - Tooltip": "SAML 协议的元数据Metadata信息",
"SAML reply URL": "SAML 回复 URL",
"Select": "选择",
"Side panel HTML": "侧面板HTML",
"Side panel HTML - Edit": "侧面板HTML - 编辑",
"Side panel HTML - Tooltip": "自定义登录页面侧面板的HTML代码",
"Side panel HTML - Tooltip": "自定义登录页面侧面板的 HTML 代码",
"Sign Up Error": "注册错误",
"Signin": "登录",
"Signin (Default True)": "登录 (默认同意)",
@ -280,7 +281,7 @@
"Favicon": "组织Favicon",
"Favicon - Tooltip": "该组织所有Casdoor页面中所使用的Favicon图标URL",
"First name": "名字",
"Forced redirect origin - Tooltip": "Forced redirect origin - Tooltip",
"Forced redirect origin - Tooltip": "强制重定向来源 - 工具提示",
"Forget URL": "忘记密码URL",
"Forget URL - Tooltip": "自定义忘记密码页面的URL不设置时采用Casdoor默认的忘记密码页面设置后Casdoor各类页面的忘记密码链接会跳转到该URL",
"Found some texts still not translated? Please help us translate at": "发现有些文字尚未翻译?请移步这里帮我们翻译:",
@ -293,7 +294,7 @@
"Home - Tooltip": "应用的首页",
"ID": "ID",
"ID - Tooltip": "唯一的随机字符串",
"IP whitelist": "IP whitelist",
"IP whitelist": "IP 白名单",
"IP whitelist - Tooltip": "IP whitelist - Tooltip",
"Identity": "身份认证",
"Invitations": "邀请码",
@ -369,7 +370,7 @@
"Provider - Tooltip": "需要配置的支付提供商包括PayPal、支付宝、微信支付等",
"Providers": "提供商",
"Providers - Tooltip": "需要配置的提供商,包括第三方登录、对象存储、验证码等",
"QR Code": "QR Code",
"QR Code": "二维码",
"QR code is too large": "二维码过大",
"Real name": "姓名",
"Records": "日志",
@ -457,7 +458,7 @@
"Show all": "显示全部",
"Upload (.xlsx)": "上传(.xlsx)",
"Virtual": "虚拟组",
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -\u003e [Groups] page": "您需要先删除所有子组。您可以在 [组织] -\u003e [群组] 页面左侧的群组树中查看子组"
"You need to delete all subgroups first. You can view the subgroups in the left group tree of the [Organizations] -> [Groups] page": "您需要先删除所有子组。您可以在 [组织] -> [群组] 页面左侧的群组树中查看子组"
},
"home": {
"New users past 30 days": "过去 30 天新增的用户",
@ -485,7 +486,7 @@
"Admin Password": "密码",
"Admin Password - Tooltip": "LDAP服务器管理员密码",
"Allow self-signed certificate": "允许自签名证书",
"Allow self-signed certificate - Tooltip": "Allow self-signed certificate - Tooltip",
"Allow self-signed certificate - Tooltip": "允许自签名证书",
"Auto Sync": "自动同步",
"Auto Sync - Tooltip": "自动同步配置为0时禁用",
"Base DN": "基本DN",
@ -517,9 +518,9 @@
"Auto sign in": "下次自动登录",
"Back button": "返回按钮",
"Continue with": "使用以下账号继续",
"Email": "Email",
"Email": "邮箱",
"Email or phone": "Email或手机号",
"Face ID": "Face ID",
"Face ID": "面部识别",
"Face Recognition": "人脸识别",
"Face recognition failed": "人脸识别失败",
"Failed to log out": "注销失败",
@ -867,10 +868,10 @@
"Internal": "内部",
"Issuer URL": "Issuer链接",
"Issuer URL - Tooltip": "Issuer链接URL",
"Key ID": "Key ID",
"Key ID - Tooltip": "Key ID",
"Key text": "Key text",
"Key text - Tooltip": "Key text",
"Key ID": "密钥 ID",
"Key ID - Tooltip": "密钥 ID",
"Key text": "关键文本",
"Key text - Tooltip": "关键文本",
"Metadata": "元数据",
"Metadata - Tooltip": "SAML元数据",
"Metadata url": "Metadata链接",
@ -930,9 +931,9 @@
"Sender Id - Tooltip": "发件人 Id - 工具提示",
"Sender number": "发件人号码",
"Sender number - Tooltip": "发件人号码 - 工具提示",
"Service ID identifier": "Service ID identifier",
"Service ID identifier - Tooltip": "Service ID identifier",
"Service account JSON": "Service account JSON",
"Service ID identifier": "服务 ID 标识符",
"Service ID identifier - Tooltip": "服务 ID 标识符",
"Service account JSON": "服务帐户 JSON",
"Service account JSON - Tooltip": "Service account对应的JSON文件内容",
"Sign Name": "签名名称",
"Sign Name - Tooltip": "签名名称",
@ -953,8 +954,8 @@
"Sub type - Tooltip": "子类型",
"Subject": "主题",
"Subject - Tooltip": "邮件的主题",
"Team ID": "Team ID",
"Team ID - Tooltip": "Team ID",
"Team ID": "团队ID",
"Team ID - Tooltip": "团队ID",
"Template code": "模板代码",
"Template code - Tooltip": "模板代码",
"Test Email": "测试Email配置",
@ -972,8 +973,8 @@
"Use WeChat Open Platform to login": "使用微信开放平台进行登录",
"Use id as name": "使用id作为用户名",
"Use id as name - Tooltip": "使用id作为用户的名字",
"User flow": "User flow",
"User flow - Tooltip": "User flow",
"User flow": "用户流量",
"User flow - Tooltip": "用户流量",
"User mapping": "用户映射",
"User mapping - Tooltip": "用户映射 - 工具提示",
"UserInfo URL": "UserInfo URL",
@ -1184,8 +1185,8 @@
"Email cannot be empty": "邮箱不能为空",
"Email/phone reset successfully": "邮箱或手机号重置成功",
"Empty input!": "输入为空!",
"Face ID": "Face ID",
"Face IDs": "Face IDs",
"Face ID": "面部识别",
"Face IDs": "面部识别",
"Gender": "性别",
"Gender - Tooltip": "性别 - Tooltip",
"Homepage": "个人主页",
@ -1213,7 +1214,7 @@
"Keys": "键",
"Language": "语言",
"Language - Tooltip": "语言 - Tooltip",
"Last change password time": "Last change password time",
"Last change password time": "上次修改密码时间",
"Link": "绑定",
"Location": "城市",
"Location - Tooltip": "居住地址所在的城市",

View File

@ -110,6 +110,7 @@ class AccountTable extends React.Component {
{name: "Managed accounts", label: i18next.t("user:Managed accounts")},
{name: "Face ID", label: i18next.t("user:Face ID")},
{name: "MFA accounts", label: i18next.t("user:MFA accounts")},
{name: "MFA items", label: i18next.t("general:MFA items")},
];
};

View File

@ -255,6 +255,7 @@ class ProviderTable extends React.Component {
<Option key="None" value="None">{i18next.t("general:None")}</Option>
<Option key="Dynamic" value="Dynamic">{i18next.t("application:Dynamic")}</Option>
<Option key="Always" value="Always">{i18next.t("application:Always")}</Option>
<Option key="Internet-Only" value="Internet-Only">{i18next.t("application:Internet-Only")}</Option>
</Select>
);
} else if (record.provider?.category === "SMS" || record.provider?.category === "Email") {