mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2026-09-22 08:00:53 +00:00
feat(auth): add LDAP authentication support and related configurations (#13385)
* feat(auth): add LDAP authentication support and related configurations * feat(ldap): implement LDAP synchronization features and enhance user import logic * feat(auth): add authSource and authSourceStatus to user information * feat(i18n): update LDAP synchronization error messages in multiple languages * feat(i18n): update LDAP synchronization error messages in multiple languages * feat(i18n): update LDAP synchronization error messages in multiple languages
This commit is contained in:
+15
-5
@@ -167,11 +167,7 @@ func CheckEntrance(entrance string) error {
|
||||
}
|
||||
|
||||
func CheckPassword(priKey, password, passwordFromDB string) error {
|
||||
privateKey, err := encrypt.ParseRSAPrivateKey(priKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
loginPassword, err := encrypt.DecryptPassword(password, privateKey)
|
||||
loginPassword, err := DecryptLoginPassword(priKey, password)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -185,6 +181,18 @@ func CheckPassword(priKey, password, passwordFromDB string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func DecryptLoginPassword(priKey, password string) (string, error) {
|
||||
privateKey, err := encrypt.ParseRSAPrivateKey(priKey)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
loginPassword, err := encrypt.DecryptPassword(password, privateKey)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return loginPassword, nil
|
||||
}
|
||||
|
||||
func LoadMFA(req dto.MfaRequest) (mfa.Otp, error) {
|
||||
settingRepo := repo.NewISettingRepo()
|
||||
username, err := settingRepo.GetValueByKey("UserName")
|
||||
@@ -248,6 +256,8 @@ func GetCurrentUserInfo() (*dto.CurrentUserInfo, error) {
|
||||
info.MFAInterval, _ = strconv.Atoi(settingMap["MFAInterval"])
|
||||
info.ApiKeyValidityTime, _ = strconv.Atoi(settingMap["ApiKeyValidityTime"])
|
||||
info.Name = settingMap["UserName"]
|
||||
info.AuthSource = "local"
|
||||
info.AuthSourceStatus = "active"
|
||||
info.Role = "ADMIN"
|
||||
info.Permissions = []string{}
|
||||
info.NodeRoles = []dto.CurrentUserNodeRole{}
|
||||
|
||||
@@ -65,6 +65,8 @@ type CurrentUserInfo struct {
|
||||
MFAStatus string `json:"mfaStatus"`
|
||||
MFAInterval int `json:"mfaInterval"`
|
||||
ComplexitySetting string `json:"complexitySetting"`
|
||||
AuthSource string `json:"authSource"`
|
||||
AuthSourceStatus string `json:"authSourceStatus"`
|
||||
|
||||
ApiInterfaceStatus string `json:"apiInterfaceStatus"`
|
||||
ApiKey string `json:"apiKey"`
|
||||
|
||||
@@ -199,6 +199,17 @@ var WebUrlMap = map[string]struct{}{
|
||||
|
||||
"/enterprise/users/list": {},
|
||||
"/enterprise/users/roles": {},
|
||||
"/enterprise/users/auth": {},
|
||||
"/enterprise/users/auth/ldap": {},
|
||||
"/enterprise/users/auth/passkey": {},
|
||||
"/enterprise/users/auth/radius": {},
|
||||
"/enterprise/users/auth/oidc": {},
|
||||
"/enterprise/users/auth/saml2": {},
|
||||
"/enterprise/users/auth/cas": {},
|
||||
"/enterprise/users/auth/oauth2": {},
|
||||
"/enterprise/users/auth/dingtalk": {},
|
||||
"/enterprise/users/auth/feishu": {},
|
||||
"/enterprise/users/auth/wecom": {},
|
||||
"/enterprise/license": {},
|
||||
"/enterprise/license-required": {},
|
||||
"/enterprise/ops-report": {},
|
||||
|
||||
@@ -10,6 +10,7 @@ require (
|
||||
github.com/gin-gonic/gin v1.12.0
|
||||
github.com/glebarez/sqlite v1.11.0
|
||||
github.com/go-gormigrate/gormigrate/v2 v2.1.6
|
||||
github.com/go-ldap/ldap/v3 v3.4.13
|
||||
github.com/go-playground/validator/v10 v10.30.3
|
||||
github.com/go-resty/resty/v2 v2.17.2
|
||||
github.com/go-webauthn/webauthn v0.17.4
|
||||
@@ -43,6 +44,7 @@ require (
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/Azure/go-ntlmssp v0.1.0 // indirect
|
||||
github.com/KyleBanks/depth v1.2.1 // indirect
|
||||
github.com/boombuler/barcode v1.1.0 // indirect
|
||||
github.com/bytedance/gopkg v0.1.4 // indirect
|
||||
@@ -57,6 +59,7 @@ require (
|
||||
github.com/gabriel-vasile/mimetype v1.4.13 // indirect
|
||||
github.com/gin-contrib/sse v1.1.1 // indirect
|
||||
github.com/glebarez/go-sqlite v1.22.0 // indirect
|
||||
github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 // indirect
|
||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.23.0 // indirect
|
||||
github.com/go-openapi/jsonreference v0.21.5 // indirect
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
github.com/1panel-dev/base64Captcha v1.3.8 h1:GbQ2IuGMp4ai4erpwf4BMjm5eLC8Efb+dATVwgpPIII=
|
||||
github.com/1panel-dev/base64Captcha v1.3.8/go.mod h1:gVpwyGm9+g4rg3pXdYnsFAouP73qMOSBfnT3bxCFzco=
|
||||
github.com/Azure/go-ntlmssp v0.1.0 h1:DjFo6YtWzNqNvQdrwEyr/e4nhU3vRiwenz5QX7sFz+A=
|
||||
github.com/Azure/go-ntlmssp v0.1.0/go.mod h1:NYqdhxd/8aAct/s4qSYZEerdPuH1liG2/X9DiVTbhpk=
|
||||
github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk=
|
||||
github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
|
||||
@@ -47,8 +49,12 @@ github.com/glebarez/go-sqlite v1.22.0 h1:uAcMJhaA6r3LHMTFgP0SifzgXg46yJkgxqyuyec
|
||||
github.com/glebarez/go-sqlite v1.22.0/go.mod h1:PlBIdHe0+aUEFn+r2/uthrWq4FxbzugL0L8Li6yQJbc=
|
||||
github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw=
|
||||
github.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ=
|
||||
github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 h1:BP4M0CvQ4S3TGls2FvczZtj5Re/2ZzkV9VwqPHH/3Bo=
|
||||
github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
|
||||
github.com/go-gormigrate/gormigrate/v2 v2.1.6 h1:VtX+l1Stj2v5RGubVQk0LS/8EPGXR+ldcOyCmlmKoyg=
|
||||
github.com/go-gormigrate/gormigrate/v2 v2.1.6/go.mod h1:PZpedQc4tWaxn6kvXicwhinh3L0seLpMc5ReKRX5id4=
|
||||
github.com/go-ldap/ldap/v3 v3.4.13 h1:+x1nG9h+MZN7h/lUi5Q3UZ0fJ1GyDQYbPvbuH38baDQ=
|
||||
github.com/go-ldap/ldap/v3 v3.4.13/go.mod h1:LxsGZV6vbaK0sIvYfsv47rfh4ca0JXokCoKjZxsszv0=
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-openapi/jsonpointer v0.23.0 h1:c25HFTJ6uWGmoe5BQI6p72p4o7KnlWYsy1MeFlAumsw=
|
||||
|
||||
@@ -424,3 +424,51 @@ ErrExpiredToken: 'Token expired. Reset and scan again.'
|
||||
# command export
|
||||
Name: "Name"
|
||||
Command: "Command"
|
||||
|
||||
# LDAP
|
||||
ErrLDAPConnectionTest: "LDAP connection test failed. Check the server address, bind account, and network settings."
|
||||
LDAPConnectionTestSuccess: "LDAP connection test succeeded."
|
||||
ErrLDAPDirectorySearch: "Failed to read LDAP users. Check the connection and search settings."
|
||||
ErrLDAPConfigLoad: "Failed to load the LDAP configuration."
|
||||
ErrLDAPConfigSave: "Failed to save the LDAP configuration."
|
||||
ErrLDAPURLInvalid: "The LDAP server address must use ldap:// or ldaps:// and include a valid host."
|
||||
ErrLDAPBindDNRequired: "The bind DN is required."
|
||||
ErrLDAPBindPasswordRequired: "The bind password is required."
|
||||
ErrLDAPUserOURequired: "The user OU is required."
|
||||
ErrLDAPConnectTimeoutRange: "The connection timeout must be between 1 and 120 seconds."
|
||||
ErrLDAPSearchPageSizeRange: "The LDAP query page size must be between 1 and 10000."
|
||||
ErrLDAPResultPageSizeRange: "The result page size cannot exceed 200."
|
||||
ErrLDAPAttributeMapOnlyName: "The attribute mapping supports only the name field."
|
||||
ErrLDAPNameAttributeRequired: "The LDAP attribute mapped to name is required."
|
||||
ErrLDAPAttributeNameInvalid: "The attribute mapping contains an invalid LDAP attribute name."
|
||||
ErrLDAPUserFilterRequired: "The user filter is required."
|
||||
ErrLDAPUserFilterInvalid: "The user filter is not a valid LDAP filter."
|
||||
ErrLDAPAttributeMapObject: "The attribute mapping must be a valid JSON object."
|
||||
ErrLDAPImportModeInvalid: "The import mode must be selected users or all users."
|
||||
ErrLDAPImportSelectionRequired: "Select at least one LDAP user to import."
|
||||
ErrLDAPImportSelectionInvalid: "The selected LDAP users are invalid or no longer exist. Read the directory again."
|
||||
ErrLDAPConfigChanged: "The LDAP configuration has changed. Read the directory and preview the import again."
|
||||
ErrLDAPRoleRequired: "Select a role for new LDAP users."
|
||||
ErrLDAPImportPlanIncomplete: "An incomplete LDAP import plan cannot be executed."
|
||||
ErrLDAPQueryTokenInvalid: "The LDAP query result has expired. Read the directory again."
|
||||
ErrLDAPPlanTokenInvalid: "The LDAP import preview has expired. Preview the import again."
|
||||
ErrLDAPOperationFailed: "The LDAP operation failed. Try again."
|
||||
ErrLDAPEntryIdentityMissing: "The LDAP entry is missing a stable ID or username."
|
||||
ErrLDAPDuplicateExternalID: "LDAP returned duplicate user IDs."
|
||||
ErrLDAPUsernameConflict: "The username is already used by another user."
|
||||
ErrLDAPUsernameSourceConflict: "The username is already used by a local user or another authentication source."
|
||||
ErrLDAPUsernameConcurrentConflict: "The username was claimed by another user during import."
|
||||
ErrLDAPLocalCredentialsReadonly: "LDAP usernames and passwords are managed by LDAP and cannot be changed locally."
|
||||
ErrLDAPPasswordExpirationUnsupported: "LDAP users do not use the local password expiration policy."
|
||||
ErrLDAPSyncSourceDisabled: "Enable AD/LDAP before enabling or running synchronization."
|
||||
ErrLDAPSyncConfigSave: "Failed to save the LDAP synchronization settings."
|
||||
ErrLDAPSyncSchedule: "Failed to update the LDAP synchronization schedule."
|
||||
ErrLDAPSyncCronInvalid: "Enter a valid five-field Cron expression."
|
||||
ErrLDAPSyncWeekdayInvalid: "Select a valid weekday."
|
||||
ErrLDAPSyncCronRequired: "Enter a Cron expression."
|
||||
ErrLDAPSyncScheduleTypeInvalid: "Select a valid synchronization schedule type."
|
||||
ErrLDAPSyncTimeInvalid: "Enter a valid execution time."
|
||||
ErrLDAPSyncRunning: "An LDAP synchronization task is already running."
|
||||
ErrLDAPSyncDirectoryIncomplete: "LDAP returned an incomplete full query result. No user status was changed."
|
||||
ErrLDAPSyncFailed: "LDAP user synchronization failed."
|
||||
LDAPSyncSuccess: "LDAP user synchronization completed successfully."
|
||||
|
||||
@@ -424,3 +424,51 @@ ErrExpiredToken: 'El token ha expirado, por favor restablezca y escanee de nuevo
|
||||
# exportación de comandos
|
||||
Name: "Nombre"
|
||||
Command: "Comando"
|
||||
|
||||
# LDAP
|
||||
ErrLDAPConnectionTest: "La prueba de conexión LDAP falló. Compruebe la dirección del servidor, la cuenta de enlace y la configuración de red."
|
||||
LDAPConnectionTestSuccess: "La prueba de conexión LDAP se realizó correctamente."
|
||||
ErrLDAPDirectorySearch: "No se pudieron leer los usuarios LDAP. Compruebe la conexión y la configuración de búsqueda."
|
||||
ErrLDAPConfigLoad: "No se pudo cargar la configuración LDAP."
|
||||
ErrLDAPConfigSave: "No se pudo guardar la configuración LDAP."
|
||||
ErrLDAPURLInvalid: "La dirección del servidor LDAP debe usar ldap:// o ldaps:// e incluir un host válido."
|
||||
ErrLDAPBindDNRequired: "El DN de enlace es obligatorio."
|
||||
ErrLDAPBindPasswordRequired: "La contraseña de enlace es obligatoria."
|
||||
ErrLDAPUserOURequired: "La OU de usuarios es obligatoria."
|
||||
ErrLDAPConnectTimeoutRange: "El tiempo de espera de conexión debe estar entre 1 y 120 segundos."
|
||||
ErrLDAPSearchPageSizeRange: "El tamaño de página de la consulta LDAP debe estar entre 1 y 10000."
|
||||
ErrLDAPResultPageSizeRange: "El tamaño de página de resultados no puede superar 200."
|
||||
ErrLDAPAttributeMapOnlyName: "La asignación de atributos solo admite el campo name."
|
||||
ErrLDAPNameAttributeRequired: "El atributo LDAP asignado a name es obligatorio."
|
||||
ErrLDAPAttributeNameInvalid: "La asignación contiene un nombre de atributo LDAP no válido."
|
||||
ErrLDAPUserFilterRequired: "El filtro de usuarios es obligatorio."
|
||||
ErrLDAPUserFilterInvalid: "El filtro de usuarios no es un filtro LDAP válido."
|
||||
ErrLDAPAttributeMapObject: "La asignación de atributos debe ser un objeto JSON válido."
|
||||
ErrLDAPImportModeInvalid: "El modo de importación debe ser usuarios seleccionados o todos los usuarios."
|
||||
ErrLDAPImportSelectionRequired: "Seleccione al menos un usuario LDAP para importar."
|
||||
ErrLDAPImportSelectionInvalid: "Los usuarios LDAP seleccionados no son válidos o ya no existen. Vuelva a leer el directorio."
|
||||
ErrLDAPConfigChanged: "La configuración LDAP ha cambiado. Vuelva a leer el directorio y a previsualizar la importación."
|
||||
ErrLDAPRoleRequired: "Seleccione un rol para los nuevos usuarios LDAP."
|
||||
ErrLDAPImportPlanIncomplete: "No se puede ejecutar un plan de importación LDAP incompleto."
|
||||
ErrLDAPQueryTokenInvalid: "El resultado de la consulta LDAP ha caducado. Vuelva a leer el directorio."
|
||||
ErrLDAPPlanTokenInvalid: "La vista previa de importación LDAP ha caducado. Vuelva a previsualizar la importación."
|
||||
ErrLDAPOperationFailed: "La operación LDAP falló. Inténtelo de nuevo."
|
||||
ErrLDAPEntryIdentityMissing: "A la entrada LDAP le falta un ID estable o un nombre de usuario."
|
||||
ErrLDAPDuplicateExternalID: "LDAP devolvió IDs de usuario duplicados."
|
||||
ErrLDAPUsernameConflict: "El nombre de usuario ya está siendo utilizado por otro usuario."
|
||||
ErrLDAPUsernameSourceConflict: "El nombre de usuario ya está siendo utilizado por un usuario local u otra fuente de autenticación."
|
||||
ErrLDAPUsernameConcurrentConflict: "Otro usuario ocupó el nombre de usuario durante la importación."
|
||||
ErrLDAPLocalCredentialsReadonly: "Los nombres de usuario y contraseñas LDAP se administran en LDAP y no pueden modificarse localmente."
|
||||
ErrLDAPPasswordExpirationUnsupported: "Los usuarios LDAP no utilizan la política local de caducidad de contraseñas."
|
||||
ErrLDAPSyncSourceDisabled: "Habilite AD/LDAP antes de activar o ejecutar la sincronización."
|
||||
ErrLDAPSyncConfigSave: "No se pudo guardar la configuración de sincronización LDAP."
|
||||
ErrLDAPSyncSchedule: "No se pudo actualizar la programación de sincronización LDAP."
|
||||
ErrLDAPSyncCronInvalid: "Introduzca una expresión Cron válida de cinco campos."
|
||||
ErrLDAPSyncWeekdayInvalid: "Seleccione un día de la semana válido."
|
||||
ErrLDAPSyncCronRequired: "Introduzca una expresión Cron."
|
||||
ErrLDAPSyncScheduleTypeInvalid: "Seleccione un tipo de programación de sincronización válido."
|
||||
ErrLDAPSyncTimeInvalid: "Introduzca una hora de ejecución válida."
|
||||
ErrLDAPSyncRunning: "Ya hay una tarea de sincronización LDAP en ejecución."
|
||||
ErrLDAPSyncDirectoryIncomplete: "LDAP devolvió un resultado incompleto de la consulta completa. No se modificó el estado de ningún usuario."
|
||||
ErrLDAPSyncFailed: "La sincronización de usuarios LDAP falló."
|
||||
LDAPSyncSuccess: "La sincronización de usuarios LDAP se completó correctamente."
|
||||
|
||||
@@ -424,3 +424,51 @@ ErrExpiredToken: 'توکن منقضی شده است. بازنشانی کرده
|
||||
# خروجی فرمان
|
||||
Name: "نام"
|
||||
Command: "دستور"
|
||||
|
||||
# LDAP
|
||||
ErrLDAPConnectionTest: "آزمایش اتصال LDAP ناموفق بود. نشانی سرور، حساب اتصال و تنظیمات شبکه را بررسی کنید."
|
||||
LDAPConnectionTestSuccess: "آزمایش اتصال LDAP با موفقیت انجام شد."
|
||||
ErrLDAPDirectorySearch: "خواندن کاربران LDAP ناموفق بود. تنظیمات اتصال و جستجو را بررسی کنید."
|
||||
ErrLDAPConfigLoad: "بارگذاری پیکربندی LDAP ناموفق بود."
|
||||
ErrLDAPConfigSave: "ذخیره پیکربندی LDAP ناموفق بود."
|
||||
ErrLDAPURLInvalid: "نشانی سرور LDAP باید از ldap:// یا ldaps:// استفاده کند و شامل میزبان معتبر باشد."
|
||||
ErrLDAPBindDNRequired: "DN اتصال الزامی است."
|
||||
ErrLDAPBindPasswordRequired: "رمز عبور اتصال الزامی است."
|
||||
ErrLDAPUserOURequired: "OU کاربران الزامی است."
|
||||
ErrLDAPConnectTimeoutRange: "مهلت اتصال باید بین ۱ تا ۱۲۰ ثانیه باشد."
|
||||
ErrLDAPSearchPageSizeRange: "اندازه صفحه پرسوجوی LDAP باید بین ۱ تا ۱۰۰۰۰ باشد."
|
||||
ErrLDAPResultPageSizeRange: "اندازه صفحه نتایج نمیتواند بیشتر از ۲۰۰ باشد."
|
||||
ErrLDAPAttributeMapOnlyName: "نگاشت ویژگی فقط از فیلد name پشتیبانی میکند."
|
||||
ErrLDAPNameAttributeRequired: "ویژگی LDAP نگاشتشده به name الزامی است."
|
||||
ErrLDAPAttributeNameInvalid: "نگاشت ویژگی شامل نام ویژگی LDAP نامعتبر است."
|
||||
ErrLDAPUserFilterRequired: "فیلتر کاربر الزامی است."
|
||||
ErrLDAPUserFilterInvalid: "فیلتر کاربر یک فیلتر LDAP معتبر نیست."
|
||||
ErrLDAPAttributeMapObject: "نگاشت ویژگی باید یک شیء JSON معتبر باشد."
|
||||
ErrLDAPImportModeInvalid: "حالت درونریزی باید کاربران انتخابشده یا همه کاربران باشد."
|
||||
ErrLDAPImportSelectionRequired: "حداقل یک کاربر LDAP را برای درونریزی انتخاب کنید."
|
||||
ErrLDAPImportSelectionInvalid: "کاربران LDAP انتخابشده نامعتبرند یا دیگر وجود ندارند. فهرست را دوباره بخوانید."
|
||||
ErrLDAPConfigChanged: "پیکربندی LDAP تغییر کرده است. فهرست را دوباره بخوانید و پیشنمایش درونریزی را تکرار کنید."
|
||||
ErrLDAPRoleRequired: "برای کاربران جدید LDAP یک نقش انتخاب کنید."
|
||||
ErrLDAPImportPlanIncomplete: "طرح ناقص درونریزی LDAP قابل اجرا نیست."
|
||||
ErrLDAPQueryTokenInvalid: "نتیجه پرسوجوی LDAP منقضی شده است. فهرست را دوباره بخوانید."
|
||||
ErrLDAPPlanTokenInvalid: "پیشنمایش درونریزی LDAP منقضی شده است. دوباره پیشنمایش بگیرید."
|
||||
ErrLDAPOperationFailed: "عملیات LDAP ناموفق بود. دوباره تلاش کنید."
|
||||
ErrLDAPEntryIdentityMissing: "ورودی LDAP فاقد شناسه پایدار یا نام کاربری است."
|
||||
ErrLDAPDuplicateExternalID: "LDAP شناسههای کاربری تکراری برگرداند."
|
||||
ErrLDAPUsernameConflict: "نام کاربری قبلاً توسط کاربر دیگری استفاده شده است."
|
||||
ErrLDAPUsernameSourceConflict: "نام کاربری قبلاً توسط کاربر محلی یا منبع احراز هویت دیگری استفاده شده است."
|
||||
ErrLDAPUsernameConcurrentConflict: "هنگام درونریزی، نام کاربری توسط کاربر دیگری گرفته شد."
|
||||
ErrLDAPLocalCredentialsReadonly: "نام کاربری و رمز عبور LDAP توسط LDAP مدیریت میشوند و بهصورت محلی قابل تغییر نیستند."
|
||||
ErrLDAPPasswordExpirationUnsupported: "کاربران LDAP از سیاست محلی انقضای رمز عبور استفاده نمیکنند."
|
||||
ErrLDAPSyncSourceDisabled: "پیش از فعالسازی یا اجرای همگامسازی، AD/LDAP را فعال کنید."
|
||||
ErrLDAPSyncConfigSave: "ذخیره تنظیمات همگامسازی LDAP ناموفق بود."
|
||||
ErrLDAPSyncSchedule: "بهروزرسانی زمانبندی همگامسازی LDAP ناموفق بود."
|
||||
ErrLDAPSyncCronInvalid: "یک عبارت Cron معتبر پنجبخشی وارد کنید."
|
||||
ErrLDAPSyncWeekdayInvalid: "یک روز معتبر از هفته را انتخاب کنید."
|
||||
ErrLDAPSyncCronRequired: "یک عبارت Cron وارد کنید."
|
||||
ErrLDAPSyncScheduleTypeInvalid: "یک نوع زمانبندی معتبر برای همگامسازی انتخاب کنید."
|
||||
ErrLDAPSyncTimeInvalid: "یک زمان اجرای معتبر وارد کنید."
|
||||
ErrLDAPSyncRunning: "یک وظیفه همگامسازی LDAP در حال اجرا است."
|
||||
ErrLDAPSyncDirectoryIncomplete: "LDAP نتیجه ناقصی از پرسوجوی کامل برگرداند. وضعیت هیچ کاربری تغییر نکرد."
|
||||
ErrLDAPSyncFailed: "همگامسازی کاربران LDAP ناموفق بود."
|
||||
LDAPSyncSuccess: "همگامسازی کاربران LDAP با موفقیت انجام شد."
|
||||
|
||||
@@ -424,3 +424,51 @@ ErrExpiredToken: 'トークンの有効期限が切れました。リセット
|
||||
# コマンドエクスポート
|
||||
Name: "名前"
|
||||
Command: "コマンド"
|
||||
|
||||
# LDAP
|
||||
ErrLDAPConnectionTest: "LDAP 接続テストに失敗しました。サーバーアドレス、バインドアカウント、ネットワーク設定を確認してください。"
|
||||
LDAPConnectionTestSuccess: "LDAP 接続テストに成功しました。"
|
||||
ErrLDAPDirectorySearch: "LDAP ユーザーの読み取りに失敗しました。接続と検索設定を確認してください。"
|
||||
ErrLDAPConfigLoad: "LDAP 設定の読み込みに失敗しました。"
|
||||
ErrLDAPConfigSave: "LDAP 設定の保存に失敗しました。"
|
||||
ErrLDAPURLInvalid: "LDAP サーバーアドレスには ldap:// または ldaps:// を使用し、有効なホストを含める必要があります。"
|
||||
ErrLDAPBindDNRequired: "バインド DN は必須です。"
|
||||
ErrLDAPBindPasswordRequired: "バインドパスワードは必須です。"
|
||||
ErrLDAPUserOURequired: "ユーザー OU は必須です。"
|
||||
ErrLDAPConnectTimeoutRange: "接続タイムアウトは 1~120 秒の範囲で指定してください。"
|
||||
ErrLDAPSearchPageSizeRange: "LDAP クエリのページサイズは 1~10000 の範囲で指定してください。"
|
||||
ErrLDAPResultPageSizeRange: "結果のページサイズは 200 以下にしてください。"
|
||||
ErrLDAPAttributeMapOnlyName: "属性マッピングでは name フィールドのみサポートされます。"
|
||||
ErrLDAPNameAttributeRequired: "name にマッピングする LDAP 属性は必須です。"
|
||||
ErrLDAPAttributeNameInvalid: "属性マッピングに無効な LDAP 属性名が含まれています。"
|
||||
ErrLDAPUserFilterRequired: "ユーザーフィルターは必須です。"
|
||||
ErrLDAPUserFilterInvalid: "ユーザーフィルターが有効な LDAP フィルターではありません。"
|
||||
ErrLDAPAttributeMapObject: "属性マッピングは有効な JSON オブジェクトである必要があります。"
|
||||
ErrLDAPImportModeInvalid: "インポートモードは、選択したユーザーまたはすべてのユーザーである必要があります。"
|
||||
ErrLDAPImportSelectionRequired: "インポートする LDAP ユーザーを 1 人以上選択してください。"
|
||||
ErrLDAPImportSelectionInvalid: "選択した LDAP ユーザーが無効か、存在しません。ディレクトリを再度読み取ってください。"
|
||||
ErrLDAPConfigChanged: "LDAP 設定が変更されました。ディレクトリを再度読み取り、インポートを再プレビューしてください。"
|
||||
ErrLDAPRoleRequired: "新しい LDAP ユーザーのロールを選択してください。"
|
||||
ErrLDAPImportPlanIncomplete: "不完全な LDAP インポートプランは実行できません。"
|
||||
ErrLDAPQueryTokenInvalid: "LDAP クエリ結果の有効期限が切れました。ディレクトリを再度読み取ってください。"
|
||||
ErrLDAPPlanTokenInvalid: "LDAP インポートプレビューの有効期限が切れました。再度プレビューしてください。"
|
||||
ErrLDAPOperationFailed: "LDAP 操作に失敗しました。再試行してください。"
|
||||
ErrLDAPEntryIdentityMissing: "LDAP エントリに安定した ID またはユーザー名がありません。"
|
||||
ErrLDAPDuplicateExternalID: "LDAP から重複したユーザー ID が返されました。"
|
||||
ErrLDAPUsernameConflict: "このユーザー名は別のユーザーが既に使用しています。"
|
||||
ErrLDAPUsernameSourceConflict: "このユーザー名はローカルユーザーまたは別の認証ソースが既に使用しています。"
|
||||
ErrLDAPUsernameConcurrentConflict: "インポート中に別のユーザーがこのユーザー名を使用しました。"
|
||||
ErrLDAPLocalCredentialsReadonly: "LDAP のユーザー名とパスワードは LDAP で管理されるため、ローカルでは変更できません。"
|
||||
ErrLDAPPasswordExpirationUnsupported: "LDAP ユーザーにはローカルのパスワード有効期限ポリシーは適用されません。"
|
||||
ErrLDAPSyncSourceDisabled: "同期を有効化または実行する前に、AD/LDAP を有効にしてください。"
|
||||
ErrLDAPSyncConfigSave: "LDAP 同期設定の保存に失敗しました。"
|
||||
ErrLDAPSyncSchedule: "LDAP 同期スケジュールの更新に失敗しました。"
|
||||
ErrLDAPSyncCronInvalid: "有効な 5 フィールドの Cron 式を入力してください。"
|
||||
ErrLDAPSyncWeekdayInvalid: "有効な曜日を選択してください。"
|
||||
ErrLDAPSyncCronRequired: "Cron 式を入力してください。"
|
||||
ErrLDAPSyncScheduleTypeInvalid: "有効な同期スケジュールの種類を選択してください。"
|
||||
ErrLDAPSyncTimeInvalid: "有効な実行時刻を入力してください。"
|
||||
ErrLDAPSyncRunning: "LDAP 同期タスクはすでに実行中です。"
|
||||
ErrLDAPSyncDirectoryIncomplete: "LDAP の全件クエリ結果が不完全です。ユーザーの状態は変更されませんでした。"
|
||||
ErrLDAPSyncFailed: "LDAP ユーザーの同期に失敗しました。"
|
||||
LDAPSyncSuccess: "LDAP ユーザーの同期が正常に完了しました。"
|
||||
|
||||
@@ -424,3 +424,51 @@ ErrExpiredToken: '토큰이 만료되었습니다. 재설정 후 다시 스캔
|
||||
# 명령 내보내기
|
||||
Name: "이름"
|
||||
Command: "명령어"
|
||||
|
||||
# LDAP
|
||||
ErrLDAPConnectionTest: "LDAP 연결 테스트에 실패했습니다. 서버 주소, 바인드 계정 및 네트워크 설정을 확인하세요."
|
||||
LDAPConnectionTestSuccess: "LDAP 연결 테스트에 성공했습니다."
|
||||
ErrLDAPDirectorySearch: "LDAP 사용자를 읽지 못했습니다. 연결 및 검색 설정을 확인하세요."
|
||||
ErrLDAPConfigLoad: "LDAP 설정을 불러오지 못했습니다."
|
||||
ErrLDAPConfigSave: "LDAP 설정을 저장하지 못했습니다."
|
||||
ErrLDAPURLInvalid: "LDAP 서버 주소는 ldap:// 또는 ldaps://를 사용하고 유효한 호스트를 포함해야 합니다."
|
||||
ErrLDAPBindDNRequired: "바인드 DN은 필수입니다."
|
||||
ErrLDAPBindPasswordRequired: "바인드 비밀번호는 필수입니다."
|
||||
ErrLDAPUserOURequired: "사용자 OU는 필수입니다."
|
||||
ErrLDAPConnectTimeoutRange: "연결 시간 제한은 1초에서 120초 사이여야 합니다."
|
||||
ErrLDAPSearchPageSizeRange: "LDAP 조회 페이지 크기는 1에서 10000 사이여야 합니다."
|
||||
ErrLDAPResultPageSizeRange: "결과 페이지 크기는 200을 초과할 수 없습니다."
|
||||
ErrLDAPAttributeMapOnlyName: "속성 매핑은 name 필드만 지원합니다."
|
||||
ErrLDAPNameAttributeRequired: "name에 매핑할 LDAP 속성은 필수입니다."
|
||||
ErrLDAPAttributeNameInvalid: "속성 매핑에 잘못된 LDAP 속성 이름이 포함되어 있습니다."
|
||||
ErrLDAPUserFilterRequired: "사용자 필터는 필수입니다."
|
||||
ErrLDAPUserFilterInvalid: "사용자 필터가 올바른 LDAP 필터가 아닙니다."
|
||||
ErrLDAPAttributeMapObject: "속성 매핑은 올바른 JSON 객체여야 합니다."
|
||||
ErrLDAPImportModeInvalid: "가져오기 모드는 선택한 사용자 또는 모든 사용자여야 합니다."
|
||||
ErrLDAPImportSelectionRequired: "가져올 LDAP 사용자를 한 명 이상 선택하세요."
|
||||
ErrLDAPImportSelectionInvalid: "선택한 LDAP 사용자가 잘못되었거나 더 이상 존재하지 않습니다. 디렉터리를 다시 읽으세요."
|
||||
ErrLDAPConfigChanged: "LDAP 설정이 변경되었습니다. 디렉터리를 다시 읽고 가져오기를 다시 미리 보세요."
|
||||
ErrLDAPRoleRequired: "새 LDAP 사용자의 역할을 선택하세요."
|
||||
ErrLDAPImportPlanIncomplete: "완전하지 않은 LDAP 가져오기 계획은 실행할 수 없습니다."
|
||||
ErrLDAPQueryTokenInvalid: "LDAP 조회 결과가 만료되었습니다. 디렉터리를 다시 읽으세요."
|
||||
ErrLDAPPlanTokenInvalid: "LDAP 가져오기 미리 보기가 만료되었습니다. 다시 미리 보세요."
|
||||
ErrLDAPOperationFailed: "LDAP 작업에 실패했습니다. 다시 시도하세요."
|
||||
ErrLDAPEntryIdentityMissing: "LDAP 항목에 안정적인 ID 또는 사용자 이름이 없습니다."
|
||||
ErrLDAPDuplicateExternalID: "LDAP가 중복된 사용자 ID를 반환했습니다."
|
||||
ErrLDAPUsernameConflict: "이 사용자 이름은 다른 사용자가 이미 사용 중입니다."
|
||||
ErrLDAPUsernameSourceConflict: "이 사용자 이름은 로컬 사용자 또는 다른 인증 소스가 이미 사용 중입니다."
|
||||
ErrLDAPUsernameConcurrentConflict: "가져오는 동안 다른 사용자가 이 사용자 이름을 사용했습니다."
|
||||
ErrLDAPLocalCredentialsReadonly: "LDAP 사용자 이름과 비밀번호는 LDAP에서 관리되므로 로컬에서 변경할 수 없습니다."
|
||||
ErrLDAPPasswordExpirationUnsupported: "LDAP 사용자는 로컬 비밀번호 만료 정책을 사용하지 않습니다."
|
||||
ErrLDAPSyncSourceDisabled: "동기화를 활성화하거나 실행하기 전에 AD/LDAP를 활성화하세요."
|
||||
ErrLDAPSyncConfigSave: "LDAP 동기화 설정을 저장하지 못했습니다."
|
||||
ErrLDAPSyncSchedule: "LDAP 동기화 일정을 업데이트하지 못했습니다."
|
||||
ErrLDAPSyncCronInvalid: "유효한 5필드 Cron 표현식을 입력하세요."
|
||||
ErrLDAPSyncWeekdayInvalid: "유효한 요일을 선택하세요."
|
||||
ErrLDAPSyncCronRequired: "Cron 표현식을 입력하세요."
|
||||
ErrLDAPSyncScheduleTypeInvalid: "유효한 동기화 일정 유형을 선택하세요."
|
||||
ErrLDAPSyncTimeInvalid: "유효한 실행 시간을 입력하세요."
|
||||
ErrLDAPSyncRunning: "LDAP 동기화 작업이 이미 실행 중입니다."
|
||||
ErrLDAPSyncDirectoryIncomplete: "LDAP 전체 조회 결과가 불완전하여 사용자 상태를 변경하지 않았습니다."
|
||||
ErrLDAPSyncFailed: "LDAP 사용자 동기화에 실패했습니다."
|
||||
LDAPSyncSuccess: "LDAP 사용자 동기화가 완료되었습니다."
|
||||
|
||||
@@ -424,3 +424,51 @@ ErrExpiredToken: 'ໂທເຄັນໝົດອາຍຸແລ້ວ. ກະລ
|
||||
# command export
|
||||
Name: "ຊື່"
|
||||
Command: "ຄຳສັ່ງ"
|
||||
|
||||
# LDAP
|
||||
ErrLDAPConnectionTest: "ການທົດສອບການເຊື່ອມຕໍ່ LDAP ບໍ່ສຳເລັດ. ກະລຸນາກວດສອບທີ່ຢູ່ເຊີບເວີ, ບັນຊີຜູກມັດ ແລະການຕັ້ງຄ່າເຄືອຂ່າຍ."
|
||||
LDAPConnectionTestSuccess: "ການທົດສອບການເຊື່ອມຕໍ່ LDAP ສຳເລັດແລ້ວ."
|
||||
ErrLDAPDirectorySearch: "ອ່ານຜູ້ໃຊ້ LDAP ບໍ່ສຳເລັດ. ກະລຸນາກວດສອບການເຊື່ອມຕໍ່ ແລະການຕັ້ງຄ່າການຄົ້ນຫາ."
|
||||
ErrLDAPConfigLoad: "ໂຫຼດການຕັ້ງຄ່າ LDAP ບໍ່ສຳເລັດ."
|
||||
ErrLDAPConfigSave: "ບັນທຶກການຕັ້ງຄ່າ LDAP ບໍ່ສຳເລັດ."
|
||||
ErrLDAPURLInvalid: "ທີ່ຢູ່ເຊີບເວີ LDAP ຕ້ອງໃຊ້ ldap:// ຫຼື ldaps:// ແລະມີໂຮສທີ່ຖືກຕ້ອງ."
|
||||
ErrLDAPBindDNRequired: "ຈຳເປັນຕ້ອງມີ Bind DN."
|
||||
ErrLDAPBindPasswordRequired: "ຈຳເປັນຕ້ອງມີລະຫັດຜ່ານສຳລັບການຜູກມັດ."
|
||||
ErrLDAPUserOURequired: "ຈຳເປັນຕ້ອງມີ OU ຂອງຜູ້ໃຊ້."
|
||||
ErrLDAPConnectTimeoutRange: "ໄລຍະເວລາໝົດການເຊື່ອມຕໍ່ຕ້ອງຢູ່ລະຫວ່າງ 1 ຫາ 120 ວິນາທີ."
|
||||
ErrLDAPSearchPageSizeRange: "ຂະໜາດໜ້າການສອບຖາມ LDAP ຕ້ອງຢູ່ລະຫວ່າງ 1 ຫາ 10000."
|
||||
ErrLDAPResultPageSizeRange: "ຂະໜາດໜ້າຜົນລັບຕ້ອງບໍ່ເກີນ 200."
|
||||
ErrLDAPAttributeMapOnlyName: "ການສ້າງແຜນທີ່ຄຸນສົມບັດຮອງຮັບສະເພາະຊ່ອງຂໍ້ມູນ name."
|
||||
ErrLDAPNameAttributeRequired: "ຈຳເປັນຕ້ອງລະບຸຄຸນສົມບັດ LDAP ທີ່ຈັບຄູ່ກັບ name."
|
||||
ErrLDAPAttributeNameInvalid: "ການສ້າງແຜນທີ່ຄຸນສົມບັດມີຊື່ຄຸນສົມບັດ LDAP ທີ່ບໍ່ຖືກຕ້ອງ."
|
||||
ErrLDAPUserFilterRequired: "ຈຳເປັນຕ້ອງມີຕົວກອງຜູ້ໃຊ້."
|
||||
ErrLDAPUserFilterInvalid: "ຕົວກອງຜູ້ໃຊ້ບໍ່ແມ່ນຕົວກອງ LDAP ທີ່ຖືກຕ້ອງ."
|
||||
ErrLDAPAttributeMapObject: "ການສ້າງແຜນທີ່ຄຸນສົມບັດຕ້ອງເປັນວັດຖຸ JSON ທີ່ຖືກຕ້ອງ."
|
||||
ErrLDAPImportModeInvalid: "ຮູບແບບການນຳເຂົ້າຕ້ອງເປັນຜູ້ໃຊ້ທີ່ເລືອກ ຫຼືຜູ້ໃຊ້ທັງໝົດ."
|
||||
ErrLDAPImportSelectionRequired: "ກະລຸນາເລືອກຜູ້ໃຊ້ LDAP ຢ່າງໜ້ອຍໜຶ່ງຄົນເພື່ອນຳເຂົ້າ."
|
||||
ErrLDAPImportSelectionInvalid: "ຜູ້ໃຊ້ LDAP ທີ່ເລືອກບໍ່ຖືກຕ້ອງ ຫຼືບໍ່ມີຢູ່ແລ້ວ. ກະລຸນາອ່ານໄດເລກະທໍລີອີກຄັ້ງ."
|
||||
ErrLDAPConfigChanged: "ການຕັ້ງຄ່າ LDAP ມີການປ່ຽນແປງ. ກະລຸນາອ່ານໄດເລກະທໍລີ ແລະເບິ່ງຕົວຢ່າງການນຳເຂົ້າອີກຄັ້ງ."
|
||||
ErrLDAPRoleRequired: "ກະລຸນາເລືອກບົດບາດສຳລັບຜູ້ໃຊ້ LDAP ໃໝ່."
|
||||
ErrLDAPImportPlanIncomplete: "ບໍ່ສາມາດດຳເນີນແຜນການນຳເຂົ້າ LDAP ທີ່ບໍ່ຄົບຖ້ວນໄດ້."
|
||||
ErrLDAPQueryTokenInvalid: "ຜົນການສອບຖາມ LDAP ໝົດອາຍຸແລ້ວ. ກະລຸນາອ່ານໄດເລກະທໍລີອີກຄັ້ງ."
|
||||
ErrLDAPPlanTokenInvalid: "ຕົວຢ່າງການນຳເຂົ້າ LDAP ໝົດອາຍຸແລ້ວ. ກະລຸນາເບິ່ງຕົວຢ່າງການນຳເຂົ້າອີກຄັ້ງ."
|
||||
ErrLDAPOperationFailed: "ການດຳເນີນງານ LDAP ບໍ່ສຳເລັດ. ກະລຸນາລອງໃໝ່."
|
||||
ErrLDAPEntryIdentityMissing: "ລາຍການ LDAP ຂາດ ID ທີ່ຄົງທີ່ ຫຼືຊື່ຜູ້ໃຊ້."
|
||||
ErrLDAPDuplicateExternalID: "LDAP ສົ່ງຄືນ ID ຜູ້ໃຊ້ທີ່ຊ້ຳກັນ."
|
||||
ErrLDAPUsernameConflict: "ຊື່ຜູ້ໃຊ້ນີ້ຖືກໃຊ້ໂດຍຜູ້ໃຊ້ອື່ນແລ້ວ."
|
||||
ErrLDAPUsernameSourceConflict: "ຊື່ຜູ້ໃຊ້ນີ້ຖືກໃຊ້ໂດຍຜູ້ໃຊ້ພາຍໃນ ຫຼືແຫຼ່ງການພິສູດຢືນຢັນອື່ນແລ້ວ."
|
||||
ErrLDAPUsernameConcurrentConflict: "ຊື່ຜູ້ໃຊ້ນີ້ຖືກຜູ້ໃຊ້ອື່ນນຳໄປໃຊ້ໃນລະຫວ່າງການນຳເຂົ້າ."
|
||||
ErrLDAPLocalCredentialsReadonly: "ຊື່ຜູ້ໃຊ້ ແລະລະຫັດຜ່ານ LDAP ຖືກຈັດການໂດຍ LDAP ແລະບໍ່ສາມາດປ່ຽນແປງພາຍໃນໄດ້."
|
||||
ErrLDAPPasswordExpirationUnsupported: "ຜູ້ໃຊ້ LDAP ບໍ່ໃຊ້ນະໂຍບາຍການໝົດອາຍຸລະຫັດຜ່ານພາຍໃນ."
|
||||
ErrLDAPSyncSourceDisabled: "ກະລຸນາເປີດໃຊ້ AD/LDAP ກ່ອນເປີດໃຊ້ ຫຼື ດຳເນີນການຊິງຂໍ້ມູນ."
|
||||
ErrLDAPSyncConfigSave: "ບັນທຶກການຕັ້ງຄ່າການຊິງຂໍ້ມູນ LDAP ບໍ່ສຳເລັດ."
|
||||
ErrLDAPSyncSchedule: "ອັບເດດຕາຕະລາງການຊິງຂໍ້ມູນ LDAP ບໍ່ສຳເລັດ."
|
||||
ErrLDAPSyncCronInvalid: "ກະລຸນາປ້ອນນິພົດ Cron ແບບ 5 ຊ່ອງທີ່ຖືກຕ້ອງ."
|
||||
ErrLDAPSyncWeekdayInvalid: "ກະລຸນາເລືອກມື້ໃນອາທິດທີ່ຖືກຕ້ອງ."
|
||||
ErrLDAPSyncCronRequired: "ກະລຸນາປ້ອນນິພົດ Cron."
|
||||
ErrLDAPSyncScheduleTypeInvalid: "ກະລຸນາເລືອກປະເພດຕາຕະລາງການຊິງຂໍ້ມູນທີ່ຖືກຕ້ອງ."
|
||||
ErrLDAPSyncTimeInvalid: "ກະລຸນາປ້ອນເວລາດຳເນີນການທີ່ຖືກຕ້ອງ."
|
||||
ErrLDAPSyncRunning: "ມີວຽກຊິງຂໍ້ມູນ LDAP ກຳລັງເຮັດວຽກຢູ່ແລ້ວ."
|
||||
ErrLDAPSyncDirectoryIncomplete: "LDAP ສົ່ງຄືນຜົນການຄົ້ນຫາທັງໝົດທີ່ບໍ່ຄົບຖ້ວນ. ບໍ່ມີການປ່ຽນແປງສະຖານະຜູ້ໃຊ້."
|
||||
ErrLDAPSyncFailed: "ການຊິງຂໍ້ມູນຜູ້ໃຊ້ LDAP ບໍ່ສຳເລັດ."
|
||||
LDAPSyncSuccess: "ການຊິງຂໍ້ມູນຜູ້ໃຊ້ LDAP ສຳເລັດແລ້ວ."
|
||||
|
||||
@@ -424,3 +424,51 @@ ErrExpiredToken: "Token telah tamat tempoh, sila tetapkan semula dan imbas semul
|
||||
# eksport perintah
|
||||
Name: "Nama"
|
||||
Command: "Arahan"
|
||||
|
||||
# LDAP
|
||||
ErrLDAPConnectionTest: "Ujian sambungan LDAP gagal. Semak alamat pelayan, akaun pengikatan dan tetapan rangkaian."
|
||||
LDAPConnectionTestSuccess: "Ujian sambungan LDAP berjaya."
|
||||
ErrLDAPDirectorySearch: "Gagal membaca pengguna LDAP. Semak tetapan sambungan dan carian."
|
||||
ErrLDAPConfigLoad: "Gagal memuatkan konfigurasi LDAP."
|
||||
ErrLDAPConfigSave: "Gagal menyimpan konfigurasi LDAP."
|
||||
ErrLDAPURLInvalid: "Alamat pelayan LDAP mesti menggunakan ldap:// atau ldaps:// dan mengandungi hos yang sah."
|
||||
ErrLDAPBindDNRequired: "DN pengikatan diperlukan."
|
||||
ErrLDAPBindPasswordRequired: "Kata laluan pengikatan diperlukan."
|
||||
ErrLDAPUserOURequired: "OU pengguna diperlukan."
|
||||
ErrLDAPConnectTimeoutRange: "Had masa sambungan mestilah antara 1 hingga 120 saat."
|
||||
ErrLDAPSearchPageSizeRange: "Saiz halaman pertanyaan LDAP mestilah antara 1 hingga 10000."
|
||||
ErrLDAPResultPageSizeRange: "Saiz halaman hasil tidak boleh melebihi 200."
|
||||
ErrLDAPAttributeMapOnlyName: "Pemetaan atribut hanya menyokong medan name."
|
||||
ErrLDAPNameAttributeRequired: "Atribut LDAP yang dipetakan kepada name diperlukan."
|
||||
ErrLDAPAttributeNameInvalid: "Pemetaan atribut mengandungi nama atribut LDAP yang tidak sah."
|
||||
ErrLDAPUserFilterRequired: "Penapis pengguna diperlukan."
|
||||
ErrLDAPUserFilterInvalid: "Penapis pengguna bukan penapis LDAP yang sah."
|
||||
ErrLDAPAttributeMapObject: "Pemetaan atribut mestilah objek JSON yang sah."
|
||||
ErrLDAPImportModeInvalid: "Mod import mestilah pengguna terpilih atau semua pengguna."
|
||||
ErrLDAPImportSelectionRequired: "Pilih sekurang-kurangnya seorang pengguna LDAP untuk diimport."
|
||||
ErrLDAPImportSelectionInvalid: "Pengguna LDAP yang dipilih tidak sah atau tidak lagi wujud. Baca semula direktori."
|
||||
ErrLDAPConfigChanged: "Konfigurasi LDAP telah berubah. Baca semula direktori dan pratonton import sekali lagi."
|
||||
ErrLDAPRoleRequired: "Pilih peranan untuk pengguna LDAP baharu."
|
||||
ErrLDAPImportPlanIncomplete: "Pelan import LDAP yang tidak lengkap tidak boleh dilaksanakan."
|
||||
ErrLDAPQueryTokenInvalid: "Hasil pertanyaan LDAP telah tamat tempoh. Baca semula direktori."
|
||||
ErrLDAPPlanTokenInvalid: "Pratonton import LDAP telah tamat tempoh. Pratonton semula import."
|
||||
ErrLDAPOperationFailed: "Operasi LDAP gagal. Cuba lagi."
|
||||
ErrLDAPEntryIdentityMissing: "Entri LDAP tiada ID stabil atau nama pengguna."
|
||||
ErrLDAPDuplicateExternalID: "LDAP mengembalikan ID pengguna yang berulang."
|
||||
ErrLDAPUsernameConflict: "Nama pengguna telah digunakan oleh pengguna lain."
|
||||
ErrLDAPUsernameSourceConflict: "Nama pengguna telah digunakan oleh pengguna tempatan atau sumber pengesahan lain."
|
||||
ErrLDAPUsernameConcurrentConflict: "Nama pengguna telah diambil oleh pengguna lain semasa import."
|
||||
ErrLDAPLocalCredentialsReadonly: "Nama pengguna dan kata laluan LDAP diurus oleh LDAP dan tidak boleh diubah secara tempatan."
|
||||
ErrLDAPPasswordExpirationUnsupported: "Pengguna LDAP tidak menggunakan dasar tamat tempoh kata laluan tempatan."
|
||||
ErrLDAPSyncSourceDisabled: "Dayakan AD/LDAP sebelum mendayakan atau menjalankan penyegerakan."
|
||||
ErrLDAPSyncConfigSave: "Gagal menyimpan tetapan penyegerakan LDAP."
|
||||
ErrLDAPSyncSchedule: "Gagal mengemas kini jadual penyegerakan LDAP."
|
||||
ErrLDAPSyncCronInvalid: "Masukkan ungkapan Cron lima medan yang sah."
|
||||
ErrLDAPSyncWeekdayInvalid: "Pilih hari dalam minggu yang sah."
|
||||
ErrLDAPSyncCronRequired: "Masukkan ungkapan Cron."
|
||||
ErrLDAPSyncScheduleTypeInvalid: "Pilih jenis jadual penyegerakan yang sah."
|
||||
ErrLDAPSyncTimeInvalid: "Masukkan masa pelaksanaan yang sah."
|
||||
ErrLDAPSyncRunning: "Tugas penyegerakan LDAP sedang berjalan."
|
||||
ErrLDAPSyncDirectoryIncomplete: "LDAP mengembalikan hasil pertanyaan penuh yang tidak lengkap. Tiada status pengguna diubah."
|
||||
ErrLDAPSyncFailed: "Penyegerakan pengguna LDAP gagal."
|
||||
LDAPSyncSuccess: "Penyegerakan pengguna LDAP berjaya diselesaikan."
|
||||
|
||||
@@ -422,5 +422,53 @@ ErrInvalidToken: 'Token inválido, por favor, reinicie e escaneie novamente.'
|
||||
ErrExpiredToken: 'O token expirou, por favor, reinicie e escaneie novamente.'
|
||||
|
||||
# exportação de comandos
|
||||
Name: "Название"
|
||||
Command: "Команда"
|
||||
Name: "Nome"
|
||||
Command: "Comando"
|
||||
|
||||
# LDAP
|
||||
ErrLDAPConnectionTest: "Falha no teste de conexão LDAP. Verifique o endereço do servidor, a conta de vinculação e as configurações de rede."
|
||||
LDAPConnectionTestSuccess: "Teste de conexão LDAP concluído com sucesso."
|
||||
ErrLDAPDirectorySearch: "Falha ao ler os usuários LDAP. Verifique as configurações de conexão e pesquisa."
|
||||
ErrLDAPConfigLoad: "Falha ao carregar a configuração LDAP."
|
||||
ErrLDAPConfigSave: "Falha ao salvar a configuração LDAP."
|
||||
ErrLDAPURLInvalid: "O endereço do servidor LDAP deve usar ldap:// ou ldaps:// e incluir um host válido."
|
||||
ErrLDAPBindDNRequired: "O DN de vinculação é obrigatório."
|
||||
ErrLDAPBindPasswordRequired: "A senha de vinculação é obrigatória."
|
||||
ErrLDAPUserOURequired: "A OU de usuários é obrigatória."
|
||||
ErrLDAPConnectTimeoutRange: "O tempo limite da conexão deve estar entre 1 e 120 segundos."
|
||||
ErrLDAPSearchPageSizeRange: "O tamanho da página da consulta LDAP deve estar entre 1 e 10000."
|
||||
ErrLDAPResultPageSizeRange: "O tamanho da página de resultados não pode exceder 200."
|
||||
ErrLDAPAttributeMapOnlyName: "O mapeamento de atributos aceita apenas o campo name."
|
||||
ErrLDAPNameAttributeRequired: "O atributo LDAP mapeado para name é obrigatório."
|
||||
ErrLDAPAttributeNameInvalid: "O mapeamento contém um nome de atributo LDAP inválido."
|
||||
ErrLDAPUserFilterRequired: "O filtro de usuários é obrigatório."
|
||||
ErrLDAPUserFilterInvalid: "O filtro de usuários não é um filtro LDAP válido."
|
||||
ErrLDAPAttributeMapObject: "O mapeamento de atributos deve ser um objeto JSON válido."
|
||||
ErrLDAPImportModeInvalid: "O modo de importação deve ser usuários selecionados ou todos os usuários."
|
||||
ErrLDAPImportSelectionRequired: "Selecione pelo menos um usuário LDAP para importar."
|
||||
ErrLDAPImportSelectionInvalid: "Os usuários LDAP selecionados são inválidos ou não existem mais. Leia o diretório novamente."
|
||||
ErrLDAPConfigChanged: "A configuração LDAP foi alterada. Leia o diretório e visualize a importação novamente."
|
||||
ErrLDAPRoleRequired: "Selecione uma função para os novos usuários LDAP."
|
||||
ErrLDAPImportPlanIncomplete: "Um plano de importação LDAP incompleto não pode ser executado."
|
||||
ErrLDAPQueryTokenInvalid: "O resultado da consulta LDAP expirou. Leia o diretório novamente."
|
||||
ErrLDAPPlanTokenInvalid: "A visualização da importação LDAP expirou. Visualize a importação novamente."
|
||||
ErrLDAPOperationFailed: "A operação LDAP falhou. Tente novamente."
|
||||
ErrLDAPEntryIdentityMissing: "A entrada LDAP não possui um ID estável ou nome de usuário."
|
||||
ErrLDAPDuplicateExternalID: "O LDAP retornou IDs de usuário duplicados."
|
||||
ErrLDAPUsernameConflict: "O nome de usuário já é usado por outro usuário."
|
||||
ErrLDAPUsernameSourceConflict: "O nome de usuário já é usado por um usuário local ou outra fonte de autenticação."
|
||||
ErrLDAPUsernameConcurrentConflict: "O nome de usuário foi ocupado por outro usuário durante a importação."
|
||||
ErrLDAPLocalCredentialsReadonly: "Os nomes de usuário e senhas LDAP são gerenciados pelo LDAP e não podem ser alterados localmente."
|
||||
ErrLDAPPasswordExpirationUnsupported: "Usuários LDAP não usam a política local de expiração de senha."
|
||||
ErrLDAPSyncSourceDisabled: "Ative o AD/LDAP antes de ativar ou executar a sincronização."
|
||||
ErrLDAPSyncConfigSave: "Falha ao salvar as configurações de sincronização LDAP."
|
||||
ErrLDAPSyncSchedule: "Falha ao atualizar o agendamento da sincronização LDAP."
|
||||
ErrLDAPSyncCronInvalid: "Insira uma expressão Cron válida de cinco campos."
|
||||
ErrLDAPSyncWeekdayInvalid: "Selecione um dia da semana válido."
|
||||
ErrLDAPSyncCronRequired: "Insira uma expressão Cron."
|
||||
ErrLDAPSyncScheduleTypeInvalid: "Selecione um tipo de agendamento de sincronização válido."
|
||||
ErrLDAPSyncTimeInvalid: "Insira um horário de execução válido."
|
||||
ErrLDAPSyncRunning: "Uma tarefa de sincronização LDAP já está em execução."
|
||||
ErrLDAPSyncDirectoryIncomplete: "O LDAP retornou um resultado incompleto da consulta completa. Nenhum status de usuário foi alterado."
|
||||
ErrLDAPSyncFailed: "Falha na sincronização de usuários LDAP."
|
||||
LDAPSyncSuccess: "A sincronização de usuários LDAP foi concluída com sucesso."
|
||||
|
||||
@@ -424,3 +424,51 @@ ErrExpiredToken: 'Токен истек, пожалуйста, сбросьте
|
||||
# экспорт команд
|
||||
Name: "Название"
|
||||
Command: "Команда"
|
||||
|
||||
# LDAP
|
||||
ErrLDAPConnectionTest: "Не удалось выполнить проверку подключения LDAP. Проверьте адрес сервера, учетную запись привязки и настройки сети."
|
||||
LDAPConnectionTestSuccess: "Проверка подключения LDAP выполнена успешно."
|
||||
ErrLDAPDirectorySearch: "Не удалось прочитать пользователей LDAP. Проверьте подключение и настройки поиска."
|
||||
ErrLDAPConfigLoad: "Не удалось загрузить конфигурацию LDAP."
|
||||
ErrLDAPConfigSave: "Не удалось сохранить конфигурацию LDAP."
|
||||
ErrLDAPURLInvalid: "Адрес сервера LDAP должен использовать ldap:// или ldaps:// и содержать допустимый хост."
|
||||
ErrLDAPBindDNRequired: "Требуется DN привязки."
|
||||
ErrLDAPBindPasswordRequired: "Требуется пароль привязки."
|
||||
ErrLDAPUserOURequired: "Требуется OU пользователей."
|
||||
ErrLDAPConnectTimeoutRange: "Время ожидания подключения должно быть от 1 до 120 секунд."
|
||||
ErrLDAPSearchPageSizeRange: "Размер страницы запроса LDAP должен быть от 1 до 10000."
|
||||
ErrLDAPResultPageSizeRange: "Размер страницы результатов не может превышать 200."
|
||||
ErrLDAPAttributeMapOnlyName: "Сопоставление атрибутов поддерживает только поле name."
|
||||
ErrLDAPNameAttributeRequired: "Требуется атрибут LDAP, сопоставленный с name."
|
||||
ErrLDAPAttributeNameInvalid: "Сопоставление содержит недопустимое имя атрибута LDAP."
|
||||
ErrLDAPUserFilterRequired: "Требуется фильтр пользователей."
|
||||
ErrLDAPUserFilterInvalid: "Фильтр пользователей не является допустимым фильтром LDAP."
|
||||
ErrLDAPAttributeMapObject: "Сопоставление атрибутов должно быть допустимым объектом JSON."
|
||||
ErrLDAPImportModeInvalid: "Режим импорта должен включать выбранных или всех пользователей."
|
||||
ErrLDAPImportSelectionRequired: "Выберите хотя бы одного пользователя LDAP для импорта."
|
||||
ErrLDAPImportSelectionInvalid: "Выбранные пользователи LDAP недействительны или больше не существуют. Повторно прочитайте каталог."
|
||||
ErrLDAPConfigChanged: "Конфигурация LDAP изменилась. Повторно прочитайте каталог и просмотрите импорт."
|
||||
ErrLDAPRoleRequired: "Выберите роль для новых пользователей LDAP."
|
||||
ErrLDAPImportPlanIncomplete: "Неполный план импорта LDAP нельзя выполнить."
|
||||
ErrLDAPQueryTokenInvalid: "Результат запроса LDAP истек. Повторно прочитайте каталог."
|
||||
ErrLDAPPlanTokenInvalid: "Предварительный просмотр импорта LDAP истек. Выполните его повторно."
|
||||
ErrLDAPOperationFailed: "Операция LDAP завершилась ошибкой. Повторите попытку."
|
||||
ErrLDAPEntryIdentityMissing: "В записи LDAP отсутствует стабильный идентификатор или имя пользователя."
|
||||
ErrLDAPDuplicateExternalID: "LDAP вернул повторяющиеся идентификаторы пользователей."
|
||||
ErrLDAPUsernameConflict: "Имя пользователя уже используется другим пользователем."
|
||||
ErrLDAPUsernameSourceConflict: "Имя пользователя уже используется локальным пользователем или другим источником аутентификации."
|
||||
ErrLDAPUsernameConcurrentConflict: "Во время импорта имя пользователя было занято другим пользователем."
|
||||
ErrLDAPLocalCredentialsReadonly: "Имена и пароли пользователей LDAP управляются LDAP и не могут быть изменены локально."
|
||||
ErrLDAPPasswordExpirationUnsupported: "Для пользователей LDAP не применяется локальная политика срока действия пароля."
|
||||
ErrLDAPSyncSourceDisabled: "Включите AD/LDAP перед включением или запуском синхронизации."
|
||||
ErrLDAPSyncConfigSave: "Не удалось сохранить настройки синхронизации LDAP."
|
||||
ErrLDAPSyncSchedule: "Не удалось обновить расписание синхронизации LDAP."
|
||||
ErrLDAPSyncCronInvalid: "Введите корректное пятикомпонентное выражение Cron."
|
||||
ErrLDAPSyncWeekdayInvalid: "Выберите корректный день недели."
|
||||
ErrLDAPSyncCronRequired: "Введите выражение Cron."
|
||||
ErrLDAPSyncScheduleTypeInvalid: "Выберите корректный тип расписания синхронизации."
|
||||
ErrLDAPSyncTimeInvalid: "Введите корректное время выполнения."
|
||||
ErrLDAPSyncRunning: "Задача синхронизации LDAP уже выполняется."
|
||||
ErrLDAPSyncDirectoryIncomplete: "LDAP вернул неполный результат полного запроса. Статусы пользователей не были изменены."
|
||||
ErrLDAPSyncFailed: "Не удалось синхронизировать пользователей LDAP."
|
||||
LDAPSyncSuccess: "Синхронизация пользователей LDAP успешно завершена."
|
||||
|
||||
@@ -424,3 +424,51 @@ ErrExpiredToken: 'Token süresi dolmuş, lütfen sıfırlayın ve tekrar tarayı
|
||||
# komut dışa aktarma
|
||||
Name: "Ad"
|
||||
Command: "Komut"
|
||||
|
||||
# LDAP
|
||||
ErrLDAPConnectionTest: "LDAP bağlantı testi başarısız oldu. Sunucu adresini, bağlama hesabını ve ağ ayarlarını kontrol edin."
|
||||
LDAPConnectionTestSuccess: "LDAP bağlantı testi başarılı oldu."
|
||||
ErrLDAPDirectorySearch: "LDAP kullanıcıları okunamadı. Bağlantı ve arama ayarlarını kontrol edin."
|
||||
ErrLDAPConfigLoad: "LDAP yapılandırması yüklenemedi."
|
||||
ErrLDAPConfigSave: "LDAP yapılandırması kaydedilemedi."
|
||||
ErrLDAPURLInvalid: "LDAP sunucu adresi ldap:// veya ldaps:// kullanmalı ve geçerli bir ana bilgisayar içermelidir."
|
||||
ErrLDAPBindDNRequired: "Bağlama DN'i gereklidir."
|
||||
ErrLDAPBindPasswordRequired: "Bağlama parolası gereklidir."
|
||||
ErrLDAPUserOURequired: "Kullanıcı OU'su gereklidir."
|
||||
ErrLDAPConnectTimeoutRange: "Bağlantı zaman aşımı 1 ile 120 saniye arasında olmalıdır."
|
||||
ErrLDAPSearchPageSizeRange: "LDAP sorgu sayfası boyutu 1 ile 10000 arasında olmalıdır."
|
||||
ErrLDAPResultPageSizeRange: "Sonuç sayfası boyutu 200'ü aşamaz."
|
||||
ErrLDAPAttributeMapOnlyName: "Öznitelik eşlemesi yalnızca name alanını destekler."
|
||||
ErrLDAPNameAttributeRequired: "name alanına eşlenen LDAP özniteliği gereklidir."
|
||||
ErrLDAPAttributeNameInvalid: "Öznitelik eşlemesi geçersiz bir LDAP öznitelik adı içeriyor."
|
||||
ErrLDAPUserFilterRequired: "Kullanıcı filtresi gereklidir."
|
||||
ErrLDAPUserFilterInvalid: "Kullanıcı filtresi geçerli bir LDAP filtresi değildir."
|
||||
ErrLDAPAttributeMapObject: "Öznitelik eşlemesi geçerli bir JSON nesnesi olmalıdır."
|
||||
ErrLDAPImportModeInvalid: "İçe aktarma modu seçili kullanıcılar veya tüm kullanıcılar olmalıdır."
|
||||
ErrLDAPImportSelectionRequired: "İçe aktarmak için en az bir LDAP kullanıcısı seçin."
|
||||
ErrLDAPImportSelectionInvalid: "Seçilen LDAP kullanıcıları geçersiz veya artık mevcut değil. Dizini yeniden okuyun."
|
||||
ErrLDAPConfigChanged: "LDAP yapılandırması değişti. Dizini yeniden okuyun ve içe aktarmayı tekrar önizleyin."
|
||||
ErrLDAPRoleRequired: "Yeni LDAP kullanıcıları için bir rol seçin."
|
||||
ErrLDAPImportPlanIncomplete: "Tamamlanmamış bir LDAP içe aktarma planı çalıştırılamaz."
|
||||
ErrLDAPQueryTokenInvalid: "LDAP sorgu sonucunun süresi doldu. Dizini yeniden okuyun."
|
||||
ErrLDAPPlanTokenInvalid: "LDAP içe aktarma önizlemesinin süresi doldu. Yeniden önizleyin."
|
||||
ErrLDAPOperationFailed: "LDAP işlemi başarısız oldu. Tekrar deneyin."
|
||||
ErrLDAPEntryIdentityMissing: "LDAP girdisinde kararlı bir kimlik veya kullanıcı adı eksik."
|
||||
ErrLDAPDuplicateExternalID: "LDAP yinelenen kullanıcı kimlikleri döndürdü."
|
||||
ErrLDAPUsernameConflict: "Kullanıcı adı başka bir kullanıcı tarafından zaten kullanılıyor."
|
||||
ErrLDAPUsernameSourceConflict: "Kullanıcı adı yerel bir kullanıcı veya başka bir kimlik doğrulama kaynağı tarafından zaten kullanılıyor."
|
||||
ErrLDAPUsernameConcurrentConflict: "İçe aktarma sırasında kullanıcı adı başka bir kullanıcı tarafından alındı."
|
||||
ErrLDAPLocalCredentialsReadonly: "LDAP kullanıcı adları ve parolaları LDAP tarafından yönetilir ve yerel olarak değiştirilemez."
|
||||
ErrLDAPPasswordExpirationUnsupported: "LDAP kullanıcıları yerel parola sona erme politikasını kullanmaz."
|
||||
ErrLDAPSyncSourceDisabled: "Senkronizasyonu etkinleştirmeden veya çalıştırmadan önce AD/LDAP'yi etkinleştirin."
|
||||
ErrLDAPSyncConfigSave: "LDAP senkronizasyon ayarları kaydedilemedi."
|
||||
ErrLDAPSyncSchedule: "LDAP senkronizasyon zamanlaması güncellenemedi."
|
||||
ErrLDAPSyncCronInvalid: "Geçerli, beş alanlı bir Cron ifadesi girin."
|
||||
ErrLDAPSyncWeekdayInvalid: "Geçerli bir hafta günü seçin."
|
||||
ErrLDAPSyncCronRequired: "Bir Cron ifadesi girin."
|
||||
ErrLDAPSyncScheduleTypeInvalid: "Geçerli bir senkronizasyon zamanlama türü seçin."
|
||||
ErrLDAPSyncTimeInvalid: "Geçerli bir çalıştırma saati girin."
|
||||
ErrLDAPSyncRunning: "Bir LDAP senkronizasyon görevi zaten çalışıyor."
|
||||
ErrLDAPSyncDirectoryIncomplete: "LDAP eksik bir tam sorgu sonucu döndürdü. Hiçbir kullanıcının durumu değiştirilmedi."
|
||||
ErrLDAPSyncFailed: "LDAP kullanıcı senkronizasyonu başarısız oldu."
|
||||
LDAPSyncSuccess: "LDAP kullanıcı senkronizasyonu başarıyla tamamlandı."
|
||||
|
||||
@@ -424,3 +424,51 @@ ErrExpiredToken: '令牌過期,請重設後再次掃碼'
|
||||
# 命令匯出
|
||||
Name: "名稱"
|
||||
Command: "指令"
|
||||
|
||||
# LDAP
|
||||
ErrLDAPConnectionTest: "LDAP 連線測試失敗,請檢查服務位址、綁定帳號和網路設定。"
|
||||
LDAPConnectionTestSuccess: "LDAP 連線測試成功。"
|
||||
ErrLDAPDirectorySearch: "讀取 LDAP 使用者失敗,請檢查連線和搜尋設定。"
|
||||
ErrLDAPConfigLoad: "載入 LDAP 設定失敗。"
|
||||
ErrLDAPConfigSave: "儲存 LDAP 設定失敗。"
|
||||
ErrLDAPURLInvalid: "LDAP 服務位址必須使用 ldap:// 或 ldaps://,並包含有效的主機位址。"
|
||||
ErrLDAPBindDNRequired: "請輸入綁定 DN。"
|
||||
ErrLDAPBindPasswordRequired: "請輸入綁定密碼。"
|
||||
ErrLDAPUserOURequired: "請輸入使用者 OU。"
|
||||
ErrLDAPConnectTimeoutRange: "連線逾時時間必須介於 1 到 120 秒。"
|
||||
ErrLDAPSearchPageSizeRange: "LDAP 查詢分頁大小必須介於 1 到 10000。"
|
||||
ErrLDAPResultPageSizeRange: "結果分頁大小不能超過 200。"
|
||||
ErrLDAPAttributeMapOnlyName: "屬性對應僅支援 name 欄位。"
|
||||
ErrLDAPNameAttributeRequired: "請輸入對應到 name 的 LDAP 屬性。"
|
||||
ErrLDAPAttributeNameInvalid: "屬性對應中包含無效的 LDAP 屬性名稱。"
|
||||
ErrLDAPUserFilterRequired: "請輸入使用者篩選器。"
|
||||
ErrLDAPUserFilterInvalid: "使用者篩選器不是有效的 LDAP 篩選器。"
|
||||
ErrLDAPAttributeMapObject: "屬性對應必須是有效的 JSON 物件。"
|
||||
ErrLDAPImportModeInvalid: "匯入模式必須為匯入選取使用者或匯入全部使用者。"
|
||||
ErrLDAPImportSelectionRequired: "請至少選取一個要匯入的 LDAP 使用者。"
|
||||
ErrLDAPImportSelectionInvalid: "選取的 LDAP 使用者無效或已不存在,請重新讀取目錄。"
|
||||
ErrLDAPConfigChanged: "LDAP 設定已變更,請重新讀取目錄並預覽匯入。"
|
||||
ErrLDAPRoleRequired: "請選取新 LDAP 使用者的角色。"
|
||||
ErrLDAPImportPlanIncomplete: "無法執行不完整的 LDAP 匯入計畫。"
|
||||
ErrLDAPQueryTokenInvalid: "LDAP 查詢結果已過期,請重新讀取目錄。"
|
||||
ErrLDAPPlanTokenInvalid: "LDAP 匯入預覽已過期,請重新預覽。"
|
||||
ErrLDAPOperationFailed: "LDAP 操作失敗,請重試。"
|
||||
ErrLDAPEntryIdentityMissing: "LDAP 項目缺少穩定 ID 或使用者名稱。"
|
||||
ErrLDAPDuplicateExternalID: "LDAP 傳回了重複的使用者 ID。"
|
||||
ErrLDAPUsernameConflict: "此使用者名稱已被其他使用者使用。"
|
||||
ErrLDAPUsernameSourceConflict: "此使用者名稱已被本機使用者或其他驗證來源使用。"
|
||||
ErrLDAPUsernameConcurrentConflict: "匯入期間此使用者名稱已被其他使用者占用。"
|
||||
ErrLDAPLocalCredentialsReadonly: "LDAP 使用者名稱和密碼由 LDAP 管理,無法在本機修改。"
|
||||
ErrLDAPPasswordExpirationUnsupported: "LDAP 使用者不使用本機密碼到期原則。"
|
||||
ErrLDAPSyncSourceDisabled: "請先啟用 AD/LDAP,再開啟或執行同步。"
|
||||
ErrLDAPSyncConfigSave: "儲存 LDAP 同步設定失敗。"
|
||||
ErrLDAPSyncSchedule: "更新 LDAP 同步排程失敗。"
|
||||
ErrLDAPSyncCronInvalid: "請輸入有效的五段式 Cron 運算式。"
|
||||
ErrLDAPSyncWeekdayInvalid: "請選擇有效的星期。"
|
||||
ErrLDAPSyncCronRequired: "請輸入 Cron 運算式。"
|
||||
ErrLDAPSyncScheduleTypeInvalid: "請選擇有效的同步執行週期。"
|
||||
ErrLDAPSyncTimeInvalid: "請輸入有效的執行時間。"
|
||||
ErrLDAPSyncRunning: "已有 LDAP 同步工作正在執行。"
|
||||
ErrLDAPSyncDirectoryIncomplete: "LDAP 全量查詢結果不完整,本次未變更任何使用者狀態。"
|
||||
ErrLDAPSyncFailed: "LDAP 使用者同步失敗。"
|
||||
LDAPSyncSuccess: "LDAP 使用者同步成功。"
|
||||
|
||||
@@ -424,3 +424,51 @@ ErrExpiredToken: '令牌过期,请重置后再次扫码'
|
||||
# 命令导出
|
||||
Name: "名称"
|
||||
Command: "命令"
|
||||
|
||||
# LDAP
|
||||
ErrLDAPConnectionTest: "LDAP 连接测试失败,请检查服务地址、绑定账号和网络设置。"
|
||||
LDAPConnectionTestSuccess: "LDAP 连接测试成功。"
|
||||
ErrLDAPDirectorySearch: "读取 LDAP 用户失败,请检查连接和搜索设置。"
|
||||
ErrLDAPConfigLoad: "加载 LDAP 配置失败。"
|
||||
ErrLDAPConfigSave: "保存 LDAP 配置失败。"
|
||||
ErrLDAPURLInvalid: "LDAP 服务地址必须使用 ldap:// 或 ldaps://,并包含有效的主机地址。"
|
||||
ErrLDAPBindDNRequired: "请输入绑定 DN。"
|
||||
ErrLDAPBindPasswordRequired: "请输入绑定密码。"
|
||||
ErrLDAPUserOURequired: "请输入用户 OU。"
|
||||
ErrLDAPConnectTimeoutRange: "连接超时时间必须在 1 到 120 秒之间。"
|
||||
ErrLDAPSearchPageSizeRange: "LDAP 查询分页大小必须在 1 到 10000 之间。"
|
||||
ErrLDAPResultPageSizeRange: "结果分页大小不能超过 200。"
|
||||
ErrLDAPAttributeMapOnlyName: "属性映射仅支持 name 字段。"
|
||||
ErrLDAPNameAttributeRequired: "请输入映射到 name 的 LDAP 属性。"
|
||||
ErrLDAPAttributeNameInvalid: "属性映射中包含无效的 LDAP 属性名。"
|
||||
ErrLDAPUserFilterRequired: "请输入用户过滤器。"
|
||||
ErrLDAPUserFilterInvalid: "用户过滤器不是有效的 LDAP 过滤器。"
|
||||
ErrLDAPAttributeMapObject: "属性映射必须是有效的 JSON 对象。"
|
||||
ErrLDAPImportModeInvalid: "导入模式必须为导入选中用户或导入全部用户。"
|
||||
ErrLDAPImportSelectionRequired: "请至少选择一个要导入的 LDAP 用户。"
|
||||
ErrLDAPImportSelectionInvalid: "选中的 LDAP 用户无效或已不存在,请重新读取目录。"
|
||||
ErrLDAPConfigChanged: "LDAP 配置已变更,请重新读取目录并预览导入。"
|
||||
ErrLDAPRoleRequired: "请选择新 LDAP 用户的角色。"
|
||||
ErrLDAPImportPlanIncomplete: "不能执行不完整的 LDAP 导入计划。"
|
||||
ErrLDAPQueryTokenInvalid: "LDAP 查询结果已过期,请重新读取目录。"
|
||||
ErrLDAPPlanTokenInvalid: "LDAP 导入预览已过期,请重新预览。"
|
||||
ErrLDAPOperationFailed: "LDAP 操作失败,请重试。"
|
||||
ErrLDAPEntryIdentityMissing: "LDAP 条目缺少稳定 ID 或用户名。"
|
||||
ErrLDAPDuplicateExternalID: "LDAP 返回了重复的用户 ID。"
|
||||
ErrLDAPUsernameConflict: "该用户名已被其他用户使用。"
|
||||
ErrLDAPUsernameSourceConflict: "该用户名已被本地用户或其他认证源使用。"
|
||||
ErrLDAPUsernameConcurrentConflict: "导入期间该用户名已被其他用户占用。"
|
||||
ErrLDAPLocalCredentialsReadonly: "LDAP 用户名和密码由 LDAP 管理,不能在本地修改。"
|
||||
ErrLDAPPasswordExpirationUnsupported: "LDAP 用户不使用本地密码过期策略。"
|
||||
ErrLDAPSyncSourceDisabled: "请先启用 AD/LDAP,再开启或执行同步。"
|
||||
ErrLDAPSyncConfigSave: "保存 LDAP 同步设置失败。"
|
||||
ErrLDAPSyncSchedule: "更新 LDAP 同步计划失败。"
|
||||
ErrLDAPSyncCronInvalid: "请输入有效的五段式 Cron 表达式。"
|
||||
ErrLDAPSyncWeekdayInvalid: "请选择有效的星期。"
|
||||
ErrLDAPSyncCronRequired: "请输入 Cron 表达式。"
|
||||
ErrLDAPSyncScheduleTypeInvalid: "请选择有效的同步执行周期。"
|
||||
ErrLDAPSyncTimeInvalid: "请输入有效的执行时间。"
|
||||
ErrLDAPSyncRunning: "已有 LDAP 同步任务正在执行。"
|
||||
ErrLDAPSyncDirectoryIncomplete: "LDAP 全量查询结果不完整,本次未改变任何用户状态。"
|
||||
ErrLDAPSyncFailed: "LDAP 用户同步失败。"
|
||||
LDAPSyncSuccess: "LDAP 用户同步成功。"
|
||||
|
||||
@@ -74,6 +74,15 @@ func PasswordExpired() gin.HandlerFunc {
|
||||
c.Next()
|
||||
return
|
||||
}
|
||||
shouldCheck, err := xpack.AuthProvider.ShouldCheckPasswordExpiration(c)
|
||||
if err != nil {
|
||||
helper.ErrorWithDetail(c, http.StatusInternalServerError, "ErrPasswordExpired", err)
|
||||
return
|
||||
}
|
||||
if !shouldCheck {
|
||||
c.Next()
|
||||
return
|
||||
}
|
||||
expirationTime, err := xpack.AuthProvider.LoadPasswordExpirationTime(c)
|
||||
if err != nil {
|
||||
helper.ErrorWithDetail(c, http.StatusInternalServerError, "ErrPasswordExpired", err)
|
||||
|
||||
@@ -76,6 +76,9 @@ func (a *authHelper) UpdateApiConfig(c *gin.Context, req baseDto.ApiInterfaceCon
|
||||
func (a *authHelper) GetCurrentUserInfo(_ *gin.Context) (*baseDto.CurrentUserInfo, error) {
|
||||
return auth.GetCurrentUserInfo()
|
||||
}
|
||||
func (a *authHelper) ShouldCheckPasswordExpiration(_ *gin.Context) (bool, error) {
|
||||
return true, nil
|
||||
}
|
||||
func (a *authHelper) LoadPasswordExpirationTime(c *gin.Context) (string, error) {
|
||||
return auth.LoadPasswordExpirationTime(c)
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ type AuthProvider interface {
|
||||
ClearPasskeys() error
|
||||
|
||||
GetCurrentUserInfo(c *gin.Context) (*dto.CurrentUserInfo, error)
|
||||
ShouldCheckPasswordExpiration(c *gin.Context) (bool, error)
|
||||
LoadPasswordExpirationTime(c *gin.Context) (string, error)
|
||||
SyncPasswordExpirationTime(expirationDays string) error
|
||||
UpdateCurrentUserInfo(c *gin.Context, req dto.CurrentUserUpdate) error
|
||||
|
||||
@@ -55,6 +55,8 @@ export namespace Login {
|
||||
permissions: string[];
|
||||
masterOnlyPermissions?: string[];
|
||||
nodeRoles: Array<{ nodeId: number; nodeName: string; roleId: number; roleName: string }>;
|
||||
authSource: string;
|
||||
authSourceStatus: string;
|
||||
|
||||
apiInterfaceStatus: string;
|
||||
apiKey: string;
|
||||
|
||||
@@ -4218,6 +4218,69 @@ const message = {
|
||||
noFail: 'Mount failure does not affect system startup',
|
||||
},
|
||||
xpack: {
|
||||
ldap: {
|
||||
source: 'Source',
|
||||
directoryMissing: 'Not found in LDAP',
|
||||
localCredentialsManaged: 'Username and password are managed by LDAP and cannot be changed locally.',
|
||||
sources: {
|
||||
local: 'Local',
|
||||
ldap: 'LDAP',
|
||||
},
|
||||
importUsers: 'Import AD/LDAP users',
|
||||
searchUsersPlaceholder: 'Search username',
|
||||
readFromLDAP: 'Read from LDAP',
|
||||
selectedUsers: '{0} selected',
|
||||
queriedAt: 'Read at',
|
||||
cachedResult: 'Cached result',
|
||||
roleForNewUsers: 'Role for new users',
|
||||
selectRole: 'Select a role',
|
||||
roleOnlyForNewUsers: 'A role is required only when the import creates users.',
|
||||
roleRequiredForNewUsers: 'Select a role for new LDAP users.',
|
||||
changedFields: 'Changed fields',
|
||||
importSelected: 'Import selected',
|
||||
importAll: 'Import all',
|
||||
importPreview: 'AD/LDAP import preview',
|
||||
importCompleted: 'AD/LDAP import completed',
|
||||
incompletePreview: 'The LDAP directory read was incomplete. Read from LDAP again.',
|
||||
missingUsersWarning: 'Users missing from LDAP will be disabled by strict synchronization.',
|
||||
missingUsersWarningDetail: '{0} local LDAP user(s) will no longer be able to sign in.',
|
||||
action: 'Action',
|
||||
reason: 'Reason',
|
||||
noImportChanges: 'No import changes',
|
||||
confirmImport: 'Confirm import',
|
||||
created: 'Create',
|
||||
updated: 'Update',
|
||||
reactivated: 'Reactivate',
|
||||
unchanged: 'Unchanged',
|
||||
conflicts: 'Conflicts',
|
||||
missing: 'Missing',
|
||||
missingUsersConfirm: '{0} user(s) missing from LDAP will be disabled and signed out. Continue?',
|
||||
strictSyncConfirm: 'Confirm strict synchronization',
|
||||
status: {
|
||||
importable: 'New user',
|
||||
update_available: 'Update available',
|
||||
up_to_date: 'Up to date',
|
||||
conflict: 'Conflict',
|
||||
},
|
||||
fields: {
|
||||
name: 'Username',
|
||||
externalDN: 'Directory DN',
|
||||
externalID: 'External ID',
|
||||
authSourceStatus: 'Authentication status',
|
||||
},
|
||||
actions: {
|
||||
created: 'Create',
|
||||
updated: 'Update',
|
||||
reactivated: 'Reactivate',
|
||||
unchanged: 'Unchanged',
|
||||
skipped: 'Skipped',
|
||||
conflicts: 'Conflict',
|
||||
conflict: 'Conflict',
|
||||
missing: 'Disable',
|
||||
errors: 'Error',
|
||||
error: 'Error',
|
||||
},
|
||||
},
|
||||
expiresEnterpriseAlert:
|
||||
'Friendly reminder: Your Enterprise Edition license will expire in {0} days, and all Enterprise Edition features will no longer be accessible. Please renew promptly to ensure continued usage.',
|
||||
expiresProAlert:
|
||||
@@ -4778,6 +4841,219 @@ const message = {
|
||||
masterOnlyPermissionHelper: 'This permission only takes effect on the master node.',
|
||||
view: 'View',
|
||||
manage: 'Manage',
|
||||
authManage: 'Authentication',
|
||||
auth: {
|
||||
providerNavigation: 'Authentication providers',
|
||||
providers: {
|
||||
ldap: 'AD/LDAP',
|
||||
passkey: 'Passkey',
|
||||
radius: 'Radius',
|
||||
oidc: 'OIDC',
|
||||
saml2: 'SAML2',
|
||||
cas: 'CAS',
|
||||
oauth2: 'OAuth2',
|
||||
dingtalk: 'DingTalk',
|
||||
feishu: 'Feishu',
|
||||
wecom: 'WeCom',
|
||||
},
|
||||
providerDescriptions: {
|
||||
ldap: 'Compatible with Active Directory, OpenLDAP, and other LDAP services',
|
||||
passkey: 'Use device credentials for passwordless sign-in',
|
||||
radius: 'Authenticate network access through a Radius service',
|
||||
oidc: 'Connect enterprise single sign-on with OpenID Connect',
|
||||
saml2: 'Use SAML2 for enterprise identity federation',
|
||||
cas: 'Connect a centralized authentication service for single sign-on',
|
||||
oauth2: 'Connect a compatible OAuth2 identity service',
|
||||
dingtalk: 'Use DingTalk organization identity and QR sign-in',
|
||||
feishu: 'Use Feishu organization identity and account synchronization',
|
||||
wecom: 'Authenticate with WeCom member identity',
|
||||
},
|
||||
planned: 'Planned',
|
||||
plannedTitle: '{0} authentication settings',
|
||||
plannedDesc: 'This authentication provider is planned and is not available yet.',
|
||||
ldap: {
|
||||
enable: 'Enable',
|
||||
enabled: 'Enabled',
|
||||
disabled: 'Disabled',
|
||||
connection: 'Basic connection',
|
||||
connectionDesc: 'Configure the directory service and the bind account used to search for users.',
|
||||
serverURL: 'Server URL',
|
||||
serverURLHelper: 'Supports ldap:// and ldaps:// URLs.',
|
||||
userBaseDN: 'User Base DN',
|
||||
userBaseDNHelper: 'Starting DN for LDAP user searches; it can be an OU, CN, or domain root DN.',
|
||||
bindDN: 'Bind DN',
|
||||
bindPassword: 'Password',
|
||||
passwordSaved: 'Leave blank to keep the saved password',
|
||||
userSearch: 'User search',
|
||||
userSearchDesc:
|
||||
'Set the user search base and filter, then map the LDAP attribute used as the 1Panel name.',
|
||||
userFilter: 'User filter',
|
||||
userFilterTooltip:
|
||||
'Replace %(user)s with the escaped username, or with * for a full directory read.',
|
||||
userFilterHelper: 'Usernames are escaped before they are inserted into the LDAP filter.',
|
||||
attributeMap: 'Attribute mapping',
|
||||
attributeMapTooltip: 'JSON mapping from the 1Panel name field to an LDAP attribute.',
|
||||
attributeMapHelper: 'Set the LDAP attribute mapped to the 1Panel name field.',
|
||||
advanced: 'Advanced settings',
|
||||
advancedDesc: 'Configure TLS and LDAP query paging.',
|
||||
strictSync: 'Strict synchronization',
|
||||
strictSyncTooltip:
|
||||
'After a complete full import, users missing from this LDAP source are disabled but not deleted.',
|
||||
strictSyncHelper:
|
||||
'Only applies to a complete full import. Importing selected users never disables other users.',
|
||||
skipTLSVerify: 'Skip TLS verification',
|
||||
skipTLSVerifyTooltip: 'Disable certificate verification for LDAPS connections.',
|
||||
skipTLSVerifyHelper:
|
||||
'Use only with a trusted self-signed certificate. This setting is independent of strict synchronization.',
|
||||
connectTimeout: 'Connection timeout (seconds)',
|
||||
searchPageSize: 'LDAP query page size',
|
||||
restore: 'Restore',
|
||||
testConnection: 'Test connection',
|
||||
testLogin: 'Test login',
|
||||
userImport: 'Import users',
|
||||
saveBeforeImport: 'Save the current AD/LDAP settings before importing users.',
|
||||
format: 'Format',
|
||||
restoreExample: 'Restore example',
|
||||
mappingValid: 'Valid JSON; name is configured.',
|
||||
mappingInvalid: 'Enter valid JSON.',
|
||||
mappingObject: 'The attribute mapping must be a JSON object.',
|
||||
mappingOnlyName: 'Only the name mapping is supported.',
|
||||
mappingStringValues: 'Every mapped attribute must be a string.',
|
||||
mappingNameRequired: 'name must be a non-empty string.',
|
||||
restored: 'The last saved settings were restored.',
|
||||
connectionTestSuccess: 'LDAP connection test succeeded.',
|
||||
recentTestSuccess: 'Last test succeeded: {0}',
|
||||
recentTestFailed: 'Last test failed: {0}',
|
||||
serverURLRequired: 'Enter the LDAP server URL.',
|
||||
serverURLInvalid: 'Use a valid ldap:// or ldaps:// URL.',
|
||||
userBaseDNRequired: 'Enter the User Base DN.',
|
||||
bindDNRequired: 'Enter the Bind DN.',
|
||||
passwordRequired: 'Enter the password.',
|
||||
userFilterRequired: 'Enter the user filter.',
|
||||
connectTimeoutRequired: 'Enter the connection timeout.',
|
||||
searchPageSizeRequired: 'Enter the LDAP query page size.',
|
||||
sync: {
|
||||
title: 'Scheduled sync',
|
||||
description:
|
||||
'Read the full LDAP directory on a schedule and maintain imported LDAP users in 1Panel.',
|
||||
enable: 'Enable schedule',
|
||||
enableHelper:
|
||||
'When disabled, automatic execution stops; manual synchronization remains available.',
|
||||
schedule: 'Schedule',
|
||||
daily: 'Daily',
|
||||
weekly: 'Weekly',
|
||||
customCron: 'Custom Cron',
|
||||
preview: 'Preview',
|
||||
previewTitle: 'Next 5 runs',
|
||||
previewEmpty: 'No execution time available',
|
||||
cronHelper: 'Use a standard five-field Cron expression: minute, hour, day, month, weekday.',
|
||||
autoImport: 'Import new users',
|
||||
autoImportHelper:
|
||||
'When disabled, only directory identifiers and status are maintained for imported LDAP users; no new users are created.',
|
||||
defaultRole: 'New user role',
|
||||
defaultRolePlaceholder: 'Select a role',
|
||||
defaultRoleHelper: 'Only applies to users created by scheduled synchronization.',
|
||||
defaultRoleRequired: 'Select a role for new LDAP users.',
|
||||
strictSyncHelper:
|
||||
'Users missing from a complete full query are disabled and their sessions are cleared; users, roles, and permissions are not deleted.',
|
||||
safetyTitle: 'Missing users are processed only after a complete LDAP full query',
|
||||
safetyDescription:
|
||||
'A failed query, timeout, or incomplete paged result never changes user status. The synchronization scope follows the User Base DN, filter, and attribute mapping.',
|
||||
runNow: 'Sync now',
|
||||
lastRunSuccess: 'Last sync succeeded: {0}',
|
||||
lastRunFailed: 'Last sync failed: {0}',
|
||||
lastRunRunning: 'Sync started: {0}',
|
||||
sourceDisabled: 'Enable and save AD/LDAP before running synchronization.',
|
||||
cronRequired: 'Enter a Cron expression.',
|
||||
saveBeforeRun: 'Save the synchronization settings before running the task.',
|
||||
runConfirmTitle: 'Run strict synchronization',
|
||||
runConfirmDescription:
|
||||
'LDAP users missing from a complete full query will be disabled and their active sessions cleared. Continue?',
|
||||
runSuccess: 'LDAP synchronization completed.',
|
||||
weekdays: {
|
||||
0: 'Sunday',
|
||||
1: 'Monday',
|
||||
2: 'Tuesday',
|
||||
3: 'Wednesday',
|
||||
4: 'Thursday',
|
||||
5: 'Friday',
|
||||
6: 'Saturday',
|
||||
},
|
||||
},
|
||||
syncLogs: {
|
||||
title: 'Sync logs',
|
||||
description: 'Review scheduled and manual LDAP synchronization results.',
|
||||
startedAt: 'Start time',
|
||||
trigger: 'Trigger',
|
||||
manual: 'Manual',
|
||||
scheduled: 'Scheduled',
|
||||
success: 'Success',
|
||||
failed: 'Failed',
|
||||
running: 'Running',
|
||||
result: 'Result',
|
||||
resultSummary: 'Created {0}, updated {1}, missing {2}',
|
||||
duration: 'Duration',
|
||||
action: 'Action',
|
||||
},
|
||||
testLoginTitle: 'Test AD/LDAP login',
|
||||
testLoginDesc:
|
||||
'Bind with an AD/LDAP user credential to test authentication only. No 1Panel session is created.',
|
||||
ldapUsername: 'LDAP username',
|
||||
usernameRequired: 'Enter the LDAP username.',
|
||||
startTest: 'Start test',
|
||||
testLoginSuccess: 'Authentication succeeded.',
|
||||
testLoginSuccessWithDN: 'Authentication succeeded. User DN: {0}',
|
||||
import: {
|
||||
title: 'Import AD/LDAP users',
|
||||
source: 'Data source: AD/LDAP directory',
|
||||
lastRead: 'Last read: {0}',
|
||||
cacheHit: 'Cached result',
|
||||
keywordPlaceholder: 'Search username',
|
||||
search: 'Search',
|
||||
refresh: 'Read from LDAP',
|
||||
refreshTip: 'Ignore the short-term cache and read the LDAP directory again.',
|
||||
loadFailed: 'Failed to read the LDAP directory.',
|
||||
retry: 'Retry',
|
||||
noData: 'No directory users found.',
|
||||
username: 'Username',
|
||||
status: 'Status',
|
||||
changes: 'Changes',
|
||||
noChanges: 'No changes',
|
||||
importable: 'Ready to import',
|
||||
updateAvailable: 'Update available',
|
||||
upToDate: 'Up to date',
|
||||
conflict: 'Name conflict',
|
||||
selectedCount: '{0} selected',
|
||||
totalCount: '{0} users',
|
||||
newUserRole: 'New user role',
|
||||
newUserRoleRequired: 'Select a role for new users.',
|
||||
noNewUsers: 'There are no new users in this operation.',
|
||||
roleOnlyForNewUsers: 'The selected role is applied only to newly created users.',
|
||||
strictOff: 'Strict synchronization is disabled. A full import will not disable users.',
|
||||
importSelected: 'Import/update selected ({0})',
|
||||
importAll: 'Import/update all ({0})',
|
||||
previewTitle: 'Confirm full import',
|
||||
previewDesc:
|
||||
'The complete LDAP directory was read. The search keyword does not limit this operation.',
|
||||
created: 'Create',
|
||||
updated: 'Update',
|
||||
unchanged: 'Unchanged',
|
||||
conflicts: 'Conflicts',
|
||||
missing: 'Disable',
|
||||
reactivated: 'Reactivate',
|
||||
strictWarning:
|
||||
'Strict synchronization is enabled. Users missing from LDAP cannot sign in, but their records, roles, and permissions are retained.',
|
||||
missingUsers: 'Users missing from LDAP',
|
||||
missingScope: 'Only this LDAP source is affected.',
|
||||
willDisable: 'Will be disabled',
|
||||
confirmAll: 'Confirm import',
|
||||
confirmAllWithMissing: 'Confirm import and disable {0} users',
|
||||
executeSuccess: 'LDAP users were processed successfully.',
|
||||
queryExpired: 'The directory result expired. Read from LDAP again.',
|
||||
planIncomplete: 'The full directory read is incomplete and cannot be executed.',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
app: {
|
||||
app: 'APP',
|
||||
|
||||
@@ -4266,6 +4266,72 @@ const message = {
|
||||
noFail: 'El fallo de montaje no afecta al inicio del sistema',
|
||||
},
|
||||
xpack: {
|
||||
ldap: {
|
||||
source: 'Origen',
|
||||
directoryMissing: 'No existe en LDAP',
|
||||
localCredentialsManaged:
|
||||
'El nombre de usuario y la contraseña se administran mediante LDAP y no pueden modificarse localmente.',
|
||||
sources: {
|
||||
local: 'Local',
|
||||
ldap: 'LDAP',
|
||||
},
|
||||
importUsers: 'Importar usuarios de AD/LDAP',
|
||||
searchUsersPlaceholder: 'Buscar nombre de usuario',
|
||||
readFromLDAP: 'Leer de LDAP',
|
||||
selectedUsers: '{0} seleccionados',
|
||||
queriedAt: 'Leído el',
|
||||
cachedResult: 'Resultado almacenado en caché',
|
||||
roleForNewUsers: 'Rol para nuevos usuarios',
|
||||
selectRole: 'Seleccione un rol',
|
||||
roleOnlyForNewUsers: 'Solo se requiere un rol cuando la importación crea usuarios.',
|
||||
roleRequiredForNewUsers: 'Seleccione un rol para los nuevos usuarios de LDAP.',
|
||||
changedFields: 'Campos modificados',
|
||||
importSelected: 'Importar seleccionado',
|
||||
importAll: 'Importar todo',
|
||||
importPreview: 'Vista previa de importación de AD/LDAP',
|
||||
importCompleted: 'Importación de AD/LDAP completada',
|
||||
incompletePreview: 'La lectura del directorio LDAP estuvo incompleta. Lea de LDAP nuevamente.',
|
||||
missingUsersWarning:
|
||||
'Los usuarios que falten en LDAP serán deshabilitados mediante sincronización estricta.',
|
||||
missingUsersWarningDetail: '{0} usuarios LDAP locales ya no podrán iniciar sesión.',
|
||||
action: 'Acción',
|
||||
reason: 'Razón',
|
||||
noImportChanges: 'Sin cambios de importación',
|
||||
confirmImport: 'Confirmar importación',
|
||||
created: 'Crear',
|
||||
updated: 'Actualizar',
|
||||
reactivated: 'Reactivar',
|
||||
unchanged: 'Sin cambios',
|
||||
conflicts: 'Conflictos',
|
||||
missing: 'Ausentes',
|
||||
missingUsersConfirm:
|
||||
'{0} usuarios ausentes en LDAP serán deshabilitados y se cerrarán sus sesiones. ¿Continuar?',
|
||||
strictSyncConfirm: 'Confirmar sincronización estricta',
|
||||
status: {
|
||||
importable: 'Nuevo usuario',
|
||||
update_available: 'Actualización disponible',
|
||||
up_to_date: 'Actualizado',
|
||||
conflict: 'Conflicto',
|
||||
},
|
||||
fields: {
|
||||
name: 'Nombre de usuario',
|
||||
externalDN: 'Directorio DN',
|
||||
externalID: 'Identificación externa',
|
||||
authSourceStatus: 'Estado de autenticación',
|
||||
},
|
||||
actions: {
|
||||
created: 'Crear',
|
||||
updated: 'Actualizar',
|
||||
reactivated: 'Reactivar',
|
||||
unchanged: 'Sin cambios',
|
||||
skipped: 'Saltado',
|
||||
conflicts: 'Conflicto',
|
||||
conflict: 'Conflicto',
|
||||
missing: 'Desactivar',
|
||||
errors: 'Error',
|
||||
error: 'Error',
|
||||
},
|
||||
},
|
||||
expiresEnterpriseAlert:
|
||||
'Aviso: Tu licencia de Enterprise Edition expirará en {0} días y todas las funciones de Enterprise Edition dejarán de estar disponibles. Renueva pronto para asegurar el uso continuo.',
|
||||
expiresProAlert:
|
||||
@@ -4832,6 +4898,224 @@ const message = {
|
||||
masterOnlyPermissionHelper: 'Este permiso solo tiene efecto en el nodo principal.',
|
||||
view: 'Ver',
|
||||
manage: 'Gestionar',
|
||||
authManage: 'Gestión de autenticación',
|
||||
auth: {
|
||||
providerNavigation: 'Proveedores de autenticación',
|
||||
providers: {
|
||||
ldap: 'AD/LDAP',
|
||||
passkey: 'Passkey',
|
||||
radius: 'Radius',
|
||||
oidc: 'OIDC',
|
||||
saml2: 'SAML2',
|
||||
cas: 'CAS',
|
||||
oauth2: 'OAuth2',
|
||||
dingtalk: 'DingTalk',
|
||||
feishu: 'Feishu',
|
||||
wecom: 'WeCom',
|
||||
},
|
||||
providerDescriptions: {
|
||||
ldap: 'Compatible con Active Directory, OpenLDAP y otros servicios LDAP',
|
||||
passkey: 'Utilice las credenciales del dispositivo para iniciar sesión sin contraseña',
|
||||
radius: 'Autenticar el acceso a la red a través de un servicio Radius',
|
||||
oidc: 'Conecte el inicio de sesión único empresarial con OpenID Connect',
|
||||
saml2: 'Utilice SAML2 para la federación de identidades empresariales',
|
||||
cas: 'Conecte un servicio de autenticación centralizado para inicio de sesión único',
|
||||
oauth2: 'Conecte un servicio de identidad OAuth2 compatible',
|
||||
dingtalk: 'Utilice la identidad de la organización DingTalk y el inicio de sesión QR',
|
||||
feishu: 'Utilice la identidad de la organización Feishu y la sincronización de cuentas',
|
||||
wecom: 'Autenticar con identidad de miembro de WeCom',
|
||||
},
|
||||
planned: 'Planificado',
|
||||
plannedTitle: 'Configuración de autenticación {0}',
|
||||
plannedDesc: 'Este proveedor de autenticación está planificado y aún no está disponible.',
|
||||
ldap: {
|
||||
enable: 'Habilitar',
|
||||
enabled: 'Habilitado',
|
||||
disabled: 'Deshabilitado',
|
||||
connection: 'Conexión básica',
|
||||
connectionDesc:
|
||||
'Configure el servicio de directorio y la cuenta de vinculación utilizada para buscar usuarios.',
|
||||
serverURL: 'URL del servidor',
|
||||
serverURLHelper: 'Admite URL ldap:// y ldaps://.',
|
||||
userBaseDN: 'Base DN de usuario',
|
||||
userBaseDNHelper:
|
||||
'DN inicial para las búsquedas de usuarios LDAP; puede ser una OU, un CN o el DN raíz del dominio.',
|
||||
bindDN: 'DN de enlace',
|
||||
bindPassword: 'Contraseña',
|
||||
passwordSaved: 'Déjelo en blanco para conservar la contraseña guardada.',
|
||||
userSearch: 'Búsqueda de usuarios',
|
||||
userSearchDesc:
|
||||
'Configure la base y el filtro de búsqueda, y asigne el atributo LDAP al campo name de 1Panel.',
|
||||
userFilter: 'Filtro de usuario',
|
||||
userFilterTooltip:
|
||||
'Reemplace %(user)s con el nombre de usuario con carácter de escape o con * para leer el directorio completo.',
|
||||
userFilterHelper:
|
||||
'Los nombres de usuario tienen caracteres de escape antes de insertarlos en el filtro LDAP.',
|
||||
attributeMap: 'Mapeo de atributos',
|
||||
attributeMapTooltip: 'Mapeo JSON del campo name de 1Panel a un atributo LDAP.',
|
||||
attributeMapHelper: 'Configure el atributo LDAP asignado al campo name de 1Panel.',
|
||||
advanced: 'Configuraciones avanzadas',
|
||||
advancedDesc: 'Configure la paginación de consultas TLS y LDAP.',
|
||||
strictSync: 'Sincronización estricta',
|
||||
strictSyncTooltip:
|
||||
'Después de una importación completa, los usuarios que faltan en esta fuente LDAP se deshabilitan pero no se eliminan.',
|
||||
strictSyncHelper:
|
||||
'Solo se aplica a una importación completa. Importar usuarios seleccionados nunca deshabilita a otros usuarios.',
|
||||
skipTLSVerify: 'Saltar la verificación TLS',
|
||||
skipTLSVerifyTooltip: 'Deshabilite la verificación de certificados para conexiones LDAPS.',
|
||||
skipTLSVerifyHelper:
|
||||
'Úselo únicamente con un certificado autofirmado confiable. Esta configuración es independiente de la sincronización estricta.',
|
||||
connectTimeout: 'Tiempo de espera de conexión (segundos)',
|
||||
searchPageSize: 'Tamaño de página de consulta LDAP',
|
||||
restore: 'Restaurar',
|
||||
testConnection: 'Probar conexión',
|
||||
testLogin: 'Probar inicio de sesión',
|
||||
userImport: 'Importar usuarios',
|
||||
saveBeforeImport: 'Guarde la configuración actual de AD/LDAP antes de importar usuarios.',
|
||||
format: 'Formato',
|
||||
restoreExample: 'Ejemplo de restauración',
|
||||
mappingValid: 'JSON válido; el campo name está configurado.',
|
||||
mappingInvalid: 'Introduzca un JSON válido.',
|
||||
mappingObject: 'La asignación de atributos debe ser un objeto JSON.',
|
||||
mappingOnlyName: 'Solo se admite la asignación name.',
|
||||
mappingStringValues: 'Cada atributo asignado debe ser una cadena.',
|
||||
mappingNameRequired: 'name debe ser una cadena que no esté vacía.',
|
||||
restored: 'Se restauraron las últimas configuraciones guardadas.',
|
||||
connectionTestSuccess: 'La prueba de conexión LDAP fue exitosa.',
|
||||
recentTestSuccess: 'Última prueba exitosa: {0}',
|
||||
recentTestFailed: 'Última prueba fallida: {0}',
|
||||
serverURLRequired: 'Ingrese la URL del servidor LDAP.',
|
||||
serverURLInvalid: 'Utilice una URL ldap:// o ldaps:// válida.',
|
||||
userBaseDNRequired: 'Ingrese la Base DN de usuario.',
|
||||
bindDNRequired: 'Ingrese el DN de enlace.',
|
||||
passwordRequired: 'Ingrese la contraseña.',
|
||||
userFilterRequired: 'Ingrese el filtro de usuario.',
|
||||
connectTimeoutRequired: 'Introduzca el tiempo de espera de la conexión.',
|
||||
searchPageSizeRequired: 'Ingrese el tamaño de la página de consulta LDAP.',
|
||||
sync: {
|
||||
title: 'Sincronización programada',
|
||||
description:
|
||||
'Lea el directorio LDAP completo de forma programada y mantenga los usuarios LDAP importados en 1Panel.',
|
||||
enable: 'Habilitar horario',
|
||||
enableHelper:
|
||||
'Cuando está deshabilitado, la ejecución automática se detiene; la sincronización manual permanece disponible.',
|
||||
schedule: 'Horario',
|
||||
daily: 'Diariamente',
|
||||
weekly: 'Semanal',
|
||||
customCron: 'Personalizado Cron',
|
||||
preview: 'Vista previa',
|
||||
previewTitle: 'Próximas 5 ejecuciones',
|
||||
previewEmpty: 'No hay tiempo de ejecución disponible',
|
||||
cronHelper:
|
||||
'Utilice una expresión Cron estándar de cinco campos: minuto, hora, día, mes y día de la semana.',
|
||||
autoImport: 'Importar nuevos usuarios',
|
||||
autoImportHelper:
|
||||
'Cuando está deshabilitado, solo se mantienen los identificadores y el estado del directorio para los usuarios LDAP importados; no se crean nuevos usuarios.',
|
||||
defaultRole: 'Nuevo rol de usuario',
|
||||
defaultRolePlaceholder: 'Seleccione un rol',
|
||||
defaultRoleHelper: 'Solo se aplica a usuarios creados mediante sincronización programada.',
|
||||
defaultRoleRequired: 'Seleccione un rol para los nuevos usuarios de LDAP.',
|
||||
strictSyncHelper:
|
||||
'Los usuarios que faltan en una consulta completa se deshabilitan y sus sesiones se borran; Los usuarios, roles y permisos no se eliminan.',
|
||||
safetyTitle: 'Los usuarios faltantes se procesan solo después de una consulta completa LDAP',
|
||||
safetyDescription:
|
||||
'Una consulta fallida, un tiempo de espera o un resultado paginado incompleto nunca cambian el estado del usuario. El alcance de la sincronización sigue el usuario Base DN, el filtro y la asignación de atributos.',
|
||||
runNow: 'Sincronizar ahora',
|
||||
lastRunSuccess: 'Última sincronización exitosa: {0}',
|
||||
lastRunFailed: 'La última sincronización falló: {0}',
|
||||
lastRunRunning: 'Sincronización iniciada: {0}',
|
||||
sourceDisabled: 'Habilite y guarde AD/LDAP antes de ejecutar la sincronización.',
|
||||
cronRequired: 'Introduzca una expresión Cron.',
|
||||
saveBeforeRun: 'Guarde la configuración de sincronización antes de ejecutar la tarea.',
|
||||
runConfirmTitle: 'Ejecutar sincronización estricta',
|
||||
runConfirmDescription:
|
||||
'Los usuarios de LDAP que falten en una consulta completa serán deshabilitados y sus sesiones activas se borrarán. ¿Continuar?',
|
||||
runSuccess: 'Sincronización LDAP completada.',
|
||||
weekdays: {
|
||||
0: 'domingo',
|
||||
1: 'lunes',
|
||||
2: 'martes',
|
||||
3: 'miércoles',
|
||||
4: 'jueves',
|
||||
5: 'viernes',
|
||||
6: 'sábado',
|
||||
},
|
||||
},
|
||||
syncLogs: {
|
||||
title: 'Registros de sincronización',
|
||||
description: 'Revise los resultados de la sincronización manual y programada de LDAP.',
|
||||
startedAt: 'Hora de inicio',
|
||||
trigger: 'Tipo de ejecución',
|
||||
manual: 'Manual',
|
||||
scheduled: 'Programado',
|
||||
success: 'Éxito',
|
||||
failed: 'Fallido',
|
||||
running: 'En ejecución',
|
||||
result: 'Resultado',
|
||||
resultSummary: 'Creados {0}, actualizados {1}, ausentes {2}',
|
||||
duration: 'Duración',
|
||||
action: 'acción',
|
||||
},
|
||||
testLoginTitle: 'Probar inicio de sesión AD/LDAP',
|
||||
testLoginDesc:
|
||||
'Vincule con una credencial de usuario AD/LDAP para probar solo la autenticación. No se crea ninguna sesión 1Panel.',
|
||||
ldapUsername: 'nombre de usuario LDAP',
|
||||
usernameRequired: 'Ingrese el nombre de usuario LDAP.',
|
||||
startTest: 'Iniciar prueba',
|
||||
testLoginSuccess: 'La autenticación fue exitosa.',
|
||||
testLoginSuccessWithDN: 'La autenticación fue exitosa. Usuario DN: {0}',
|
||||
import: {
|
||||
title: 'Importar usuarios de AD/LDAP',
|
||||
source: 'Fuente de datos: directorio AD/LDAP',
|
||||
lastRead: 'Última lectura: {0}',
|
||||
cacheHit: 'Resultado almacenado en caché',
|
||||
keywordPlaceholder: 'Buscar nombre de usuario',
|
||||
search: 'Buscar',
|
||||
refresh: 'Leer de LDAP',
|
||||
refreshTip: 'Ignore el caché a corto plazo y vuelva a leer el directorio LDAP.',
|
||||
loadFailed: 'No se pudo leer el directorio LDAP.',
|
||||
retry: 'Reintentar',
|
||||
noData: 'No se encontraron usuarios del directorio.',
|
||||
username: 'Nombre de usuario',
|
||||
status: 'Estado',
|
||||
changes: 'Cambios',
|
||||
noChanges: 'Sin cambios',
|
||||
importable: 'Listo para importar',
|
||||
updateAvailable: 'Actualización disponible',
|
||||
upToDate: 'actualizado',
|
||||
conflict: 'Conflicto de nombres',
|
||||
selectedCount: '{0} seleccionado',
|
||||
totalCount: '{0} usuarios',
|
||||
newUserRole: 'Nuevo rol de usuario',
|
||||
newUserRoleRequired: 'Seleccione un rol para nuevos usuarios.',
|
||||
noNewUsers: 'No hay nuevos usuarios en esta operación.',
|
||||
roleOnlyForNewUsers: 'El rol seleccionado se aplica solo a los usuarios recién creados.',
|
||||
strictOff:
|
||||
'La sincronización estricta está deshabilitada. Una importación completa no deshabilitará a los usuarios.',
|
||||
importSelected: 'Importar/actualizar seleccionado ({0})',
|
||||
importAll: 'Importar/actualizar todo ({0})',
|
||||
previewTitle: 'Confirmar importación completa',
|
||||
previewDesc:
|
||||
'Se leyó el directorio LDAP completo. La palabra clave de búsqueda no limita esta operación.',
|
||||
created: 'crear',
|
||||
updated: 'Actualizar',
|
||||
unchanged: 'Sin cambios',
|
||||
conflicts: 'Conflictos',
|
||||
missing: 'Desactivar',
|
||||
reactivated: 'Reactivar',
|
||||
strictWarning:
|
||||
'La sincronización estricta está habilitada. Los usuarios que faltan en LDAP no pueden iniciar sesión, pero se conservan sus registros, roles y permisos.',
|
||||
missingUsers: 'Usuarios que faltan en LDAP',
|
||||
missingScope: 'Sólo esta fuente LDAP se ve afectada.',
|
||||
willDisable: 'Estará deshabilitado',
|
||||
confirmAll: 'Confirmar importación',
|
||||
confirmAllWithMissing: 'Confirmar importación y deshabilitar {0} usuarios',
|
||||
executeSuccess: 'Los usuarios de LDAP se procesaron exitosamente.',
|
||||
queryExpired: 'El resultado del directorio expiró. Lea de LDAP nuevamente.',
|
||||
planIncomplete: 'La lectura completa del directorio está incompleta y no se puede ejecutar.',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
app: {
|
||||
app: 'APP',
|
||||
|
||||
@@ -4187,6 +4187,70 @@ const message = {
|
||||
noFail: 'شکست اتصال بر راهاندازی سیستم تأثیری نمیگذارد',
|
||||
},
|
||||
xpack: {
|
||||
ldap: {
|
||||
source: 'منبع',
|
||||
directoryMissing: 'در LDAP یافت نشد',
|
||||
localCredentialsManaged: 'نام کاربری و رمز عبور توسط LDAP مدیریت میشوند و بهصورت محلی قابل تغییر نیستند.',
|
||||
sources: {
|
||||
local: 'محلی',
|
||||
ldap: 'LDAP',
|
||||
},
|
||||
importUsers: 'وارد کردن کاربران AD/LDAP',
|
||||
searchUsersPlaceholder: 'جستجوی نام کاربری',
|
||||
readFromLDAP: 'از LDAP بخوانید',
|
||||
selectedUsers: '{0} انتخاب شد',
|
||||
queriedAt: 'زمان خواندن',
|
||||
cachedResult: 'نتیجه ذخیره شده',
|
||||
roleForNewUsers: 'نقش برای کاربران جدید',
|
||||
selectRole: 'یک نقش را انتخاب کنید',
|
||||
roleOnlyForNewUsers: 'یک نقش تنها زمانی مورد نیاز است که وارد کردن کاربران ایجاد کند.',
|
||||
roleRequiredForNewUsers: 'نقشی را برای کاربران جدید LDAP انتخاب کنید.',
|
||||
changedFields: 'فیلدها را تغییر داد',
|
||||
importSelected: 'واردات انتخاب شد',
|
||||
importAll: 'همه را وارد کنید',
|
||||
importPreview: 'پیشنمایش وارد کردن AD/LDAP',
|
||||
importCompleted: 'وارد کردن AD/LDAP تکمیل شد',
|
||||
incompletePreview: 'دایرکتوری LDAP خوانده شده ناقص بود. دوباره از LDAP بخوانید.',
|
||||
missingUsersWarning: 'کاربرانی که از LDAP غایب هستند با همگام سازی دقیق غیرفعال می شوند.',
|
||||
missingUsersWarningDetail: '{0} کاربر محلی LDAP دیگر نمیتوانند وارد سیستم شوند.',
|
||||
action: 'اقدام',
|
||||
reason: 'دلیل',
|
||||
noImportChanges: 'بدون تغییر واردات',
|
||||
confirmImport: 'واردات را تایید کنید',
|
||||
created: 'ایجاد کنید',
|
||||
updated: 'به روز رسانی',
|
||||
reactivated: 'دوباره فعال کنید',
|
||||
unchanged: 'بدون تغییر',
|
||||
conflicts: 'درگیری ها',
|
||||
missing: 'گم شده',
|
||||
missingUsersConfirm:
|
||||
'کاربر(های) {0} که از LDAP مفقود شده اند غیرفعال می شوند و از سیستم خارج می شوند. ادامه دهید؟',
|
||||
strictSyncConfirm: 'همگام سازی دقیق را تأیید کنید',
|
||||
status: {
|
||||
importable: 'کاربر جدید',
|
||||
update_available: 'به روز رسانی موجود است',
|
||||
up_to_date: 'به روز',
|
||||
conflict: 'درگیری',
|
||||
},
|
||||
fields: {
|
||||
name: 'نام کاربری',
|
||||
externalDN: 'دایرکتوری DN',
|
||||
externalID: 'شناسه خارجی',
|
||||
authSourceStatus: 'وضعیت احراز هویت',
|
||||
},
|
||||
actions: {
|
||||
created: 'ایجاد کنید',
|
||||
updated: 'به روز رسانی',
|
||||
reactivated: 'دوباره فعال کنید',
|
||||
unchanged: 'بدون تغییر',
|
||||
skipped: 'رد شد',
|
||||
conflicts: 'درگیری',
|
||||
conflict: 'درگیری',
|
||||
missing: 'غیر فعال کردن',
|
||||
errors: 'خطا',
|
||||
error: 'خطا',
|
||||
},
|
||||
},
|
||||
expiresEnterpriseAlert:
|
||||
'یادآوری دوستانه: مجوز نسخه سازمانی شما در {0} روز منقضی میشود و همه ویژگیهای نسخه سازمانی دیگر قابل دسترسی نخواهند بود. لطفاً به موقع تمدید کنید تا استفاده ادامه یابد.',
|
||||
expiresProAlert:
|
||||
@@ -4745,6 +4809,218 @@ const message = {
|
||||
masterOnlyPermissionHelper: 'این مجوز فقط در گره اصلی اعمال میشود.',
|
||||
view: 'مشاهده',
|
||||
manage: 'مدیریت',
|
||||
authManage: 'مدیریت احراز هویت',
|
||||
auth: {
|
||||
providerNavigation: 'ارائه دهندگان احراز هویت',
|
||||
providers: {
|
||||
ldap: 'AD/LDAP',
|
||||
passkey: 'Passkey',
|
||||
radius: 'Radius',
|
||||
oidc: 'OIDC',
|
||||
saml2: 'SAML2',
|
||||
cas: 'CAS',
|
||||
oauth2: 'OAuth2',
|
||||
dingtalk: 'دینگ تاک',
|
||||
feishu: 'فیشو',
|
||||
wecom: 'WeCom',
|
||||
},
|
||||
providerDescriptions: {
|
||||
ldap: 'سازگار با Active Directory، OpenLDAP و سایر خدمات LDAP',
|
||||
passkey: 'از اعتبار دستگاه برای ورود بدون رمز عبور استفاده کنید',
|
||||
radius: 'دسترسی به شبکه را از طریق سرویس Radius تأیید اعتبار کنید',
|
||||
oidc: 'با OpenID Connect به یک ورود به سیستم سازمانی متصل شوید',
|
||||
saml2: 'از SAML2 برای فدراسیون هویت سازمانی استفاده کنید',
|
||||
cas: 'یک سرویس احراز هویت متمرکز را برای یک ورود به سیستم متصل کنید',
|
||||
oauth2: 'یک سرویس هویت سازگار OAuth2 را وصل کنید',
|
||||
dingtalk: 'از هویت سازمانی DingTalk و ورود به سیستم QR استفاده کنید',
|
||||
feishu: 'از هویت سازمانی فیشو و همگام سازی حساب استفاده کنید',
|
||||
wecom: 'با هویت عضو WeCom احراز هویت کنید',
|
||||
},
|
||||
planned: 'برنامه ریزی شده است',
|
||||
plannedTitle: 'تنظیمات احراز هویت {0}',
|
||||
plannedDesc: 'این ارائه دهنده احراز هویت برنامه ریزی شده است و هنوز در دسترس نیست.',
|
||||
ldap: {
|
||||
enable: 'فعال کردن',
|
||||
enabled: 'فعال شد',
|
||||
disabled: 'غیرفعال',
|
||||
connection: 'اتصال اولیه',
|
||||
connectionDesc: 'سرویس دایرکتوری و حساب bind مورد استفاده برای جستجوی کاربران را پیکربندی کنید.',
|
||||
serverURL: 'آدرس سرور',
|
||||
serverURLHelper: 'از URL های ldap:// و ldaps:// پشتیبانی می کند.',
|
||||
userBaseDN: 'کاربر Base DN',
|
||||
userBaseDNHelper: 'شروع DN برای جستجوهای کاربر LDAP. این می تواند یک OU، CN یا ریشه دامنه DN باشد.',
|
||||
bindDN: 'DN را ببندید',
|
||||
bindPassword: 'رمز عبور',
|
||||
passwordSaved: 'برای حفظ رمز عبور ذخیره شده خالی بگذارید',
|
||||
userSearch: 'جستجوی کاربر',
|
||||
userSearchDesc:
|
||||
'پایه و فیلتر جستجوی کاربر را تنظیم کنید، سپس ویژگی LDAP مورد استفاده به عنوان 1Panel name را ترسیم کنید.',
|
||||
userFilter: 'فیلتر کاربر',
|
||||
userFilterTooltip:
|
||||
'%(user)s را با نام کاربری فرار شده جایگزین کنید، یا برای خواندن فهرست کامل، با * استفاده کنید.',
|
||||
userFilterHelper: 'نامهای کاربری قبل از درج در فیلتر LDAP حذف میشوند.',
|
||||
attributeMap: 'نگاشت صفت',
|
||||
attributeMapTooltip: 'نقشه برداری JSON از فیلد 1Panel name به ویژگی LDAP.',
|
||||
attributeMapHelper: 'ویژگی LDAP نگاشت شده را روی فیلد 1Panel name تنظیم کنید.',
|
||||
advanced: 'تنظیمات پیشرفته',
|
||||
advancedDesc: 'صفحه بندی پرس و جو TLS و LDAP را پیکربندی کنید.',
|
||||
strictSync: 'همگام سازی دقیق',
|
||||
strictSyncTooltip:
|
||||
'پس از وارد کردن کامل، کاربرانی که از این منبع LDAP غایب هستند غیرفعال می شوند اما حذف نمی شوند.',
|
||||
strictSyncHelper:
|
||||
'فقط برای یک واردات کامل کامل اعمال می شود. وارد کردن کاربران انتخابی هرگز سایر کاربران را غیرفعال نمی کند.',
|
||||
skipTLSVerify: 'رد شدن از تأیید TLS',
|
||||
skipTLSVerifyTooltip: 'تأیید گواهی را برای اتصالات LDAPS غیرفعال کنید.',
|
||||
skipTLSVerifyHelper:
|
||||
'فقط با یک گواهی خودامضا مورد اعتماد استفاده کنید. این تنظیم مستقل از همگام سازی دقیق است.',
|
||||
connectTimeout: 'پایان زمان اتصال (ثانیه)',
|
||||
searchPageSize: 'اندازه صفحه پرس و جو LDAP',
|
||||
restore: 'بازیابی کنید',
|
||||
testConnection: 'تست اتصال',
|
||||
testLogin: 'تست ورود',
|
||||
userImport: 'کاربران را وارد کنید',
|
||||
saveBeforeImport: 'تنظیمات فعلی AD/LDAP را قبل از وارد کردن کاربران ذخیره کنید.',
|
||||
format: 'قالب',
|
||||
restoreExample: 'نمونه را بازیابی کنید',
|
||||
mappingValid: 'معتبر JSON; name پیکربندی شده است.',
|
||||
mappingInvalid: 'JSON معتبر وارد کنید.',
|
||||
mappingObject: 'نگاشت ویژگی باید یک شی JSON باشد.',
|
||||
mappingOnlyName: 'فقط نقشه برداری name پشتیبانی می شود.',
|
||||
mappingStringValues: 'هر ویژگی نگاشت شده باید یک رشته باشد.',
|
||||
mappingNameRequired: 'name باید یک رشته غیر خالی باشد.',
|
||||
restored: 'آخرین تنظیمات ذخیره شده بازیابی شدند.',
|
||||
connectionTestSuccess: 'تست اتصال LDAP با موفقیت انجام شد.',
|
||||
recentTestSuccess: 'آخرین آزمایش موفق: {0}',
|
||||
recentTestFailed: 'آخرین آزمایش ناموفق: {0}',
|
||||
serverURLRequired: 'آدرس سرور LDAP را وارد کنید.',
|
||||
serverURLInvalid: 'از یک URL معتبر ldap:// یا ldaps:// استفاده کنید.',
|
||||
userBaseDNRequired: 'کاربر Base DN را وارد کنید.',
|
||||
bindDNRequired: 'Bind DN را وارد کنید.',
|
||||
passwordRequired: 'رمز عبور را وارد کنید.',
|
||||
userFilterRequired: 'فیلتر کاربر را وارد کنید.',
|
||||
connectTimeoutRequired: 'زمان اتصال را وارد کنید.',
|
||||
searchPageSizeRequired: 'اندازه صفحه پرس و جو LDAP را وارد کنید.',
|
||||
sync: {
|
||||
title: 'همگام سازی برنامه ریزی شده',
|
||||
description:
|
||||
'فهرست کامل LDAP را بر اساس یک برنامه زمان بندی بخوانید و کاربران LDAP وارد شده را در 1Panel حفظ کنید.',
|
||||
enable: 'زمانبندی را فعال کنید',
|
||||
enableHelper:
|
||||
'در صورت غیرفعال شدن، اجرای خودکار متوقف می شود. همگام سازی دستی در دسترس باقی می ماند.',
|
||||
schedule: 'برنامه ریزی کنید',
|
||||
daily: 'روزانه',
|
||||
weekly: 'هفتگی',
|
||||
customCron: 'سفارشی Cron',
|
||||
preview: 'پیش نمایش',
|
||||
previewTitle: '5 اجرا بعدی',
|
||||
previewEmpty: 'زمان اجرا در دسترس نیست',
|
||||
cronHelper: 'از عبارت استاندارد پنج فیلدی Cron استفاده کنید: دقیقه، ساعت، روز، ماه، روز هفته.',
|
||||
autoImport: 'وارد کردن کاربران جدید',
|
||||
autoImportHelper:
|
||||
'وقتی غیرفعال است، فقط شناسههای دایرکتوری و وضعیت برای کاربران وارداتی LDAP حفظ میشود. کاربر جدیدی ایجاد نمی شود',
|
||||
defaultRole: 'نقش کاربر جدید',
|
||||
defaultRolePlaceholder: 'یک نقش را انتخاب کنید',
|
||||
defaultRoleHelper: 'فقط برای کاربران ایجاد شده توسط همگام سازی برنامه ریزی شده اعمال می شود.',
|
||||
defaultRoleRequired: 'نقشی را برای کاربران جدید LDAP انتخاب کنید.',
|
||||
strictSyncHelper:
|
||||
'کاربرانی که از یک پرس و جو کامل کامل غایب هستند غیرفعال می شوند و جلسات آنها پاک می شود. کاربران، نقشها و مجوزها حذف نمیشوند.',
|
||||
safetyTitle: 'کاربران گمشده فقط پس از یک پرس و جو کامل LDAP پردازش می شوند',
|
||||
safetyDescription:
|
||||
'پرس و جو ناموفق، مهلت زمانی، یا نتیجه صفحه ناقص هرگز وضعیت کاربر را تغییر نمی دهد. محدوده همگام سازی از نگاشت کاربر Base DN، فیلتر و ویژگی پیروی می کند.',
|
||||
runNow: 'اکنون همگام سازی کنید',
|
||||
lastRunSuccess: 'آخرین همگام سازی موفقیت آمیز: {0}',
|
||||
lastRunFailed: 'آخرین همگام سازی ناموفق بود: {0}',
|
||||
lastRunRunning: 'همگام سازی شروع شد: {0}',
|
||||
sourceDisabled: 'قبل از اجرای همگام سازی، AD/LDAP را فعال و ذخیره کنید.',
|
||||
cronRequired: 'عبارت Cron را وارد کنید.',
|
||||
saveBeforeRun: 'قبل از اجرای کار، تنظیمات همگام سازی را ذخیره کنید.',
|
||||
runConfirmTitle: 'همگام سازی دقیق را اجرا کنید',
|
||||
runConfirmDescription:
|
||||
'کاربران LDAP که یک پرس و جو کامل کامل ندارند غیرفعال می شوند و جلسات فعال آنها پاک می شود. ادامه دهید؟',
|
||||
runSuccess: 'همگام سازی LDAP تکمیل شد.',
|
||||
weekdays: {
|
||||
0: 'یکشنبه',
|
||||
1: 'دوشنبه',
|
||||
2: 'سه شنبه',
|
||||
3: 'چهارشنبه',
|
||||
4: 'پنج شنبه',
|
||||
5: 'جمعه',
|
||||
6: 'شنبه',
|
||||
},
|
||||
},
|
||||
syncLogs: {
|
||||
title: 'همگام سازی گزارش ها',
|
||||
description: 'نتایج همگام سازی زمان بندی شده و دستی LDAP را مرور کنید.',
|
||||
startedAt: 'زمان شروع',
|
||||
trigger: 'نوع اجرا',
|
||||
manual: 'دستی',
|
||||
scheduled: 'برنامه ریزی شده است',
|
||||
success: 'موفقیت',
|
||||
failed: 'شکست خورد',
|
||||
running: 'در حال اجرا',
|
||||
result: 'نتیجه',
|
||||
resultSummary: '{0} ایجاد شد، {1} بهروزرسانی شد، {2} موجود نیست',
|
||||
duration: 'مدت زمان',
|
||||
action: 'اقدام',
|
||||
},
|
||||
testLoginTitle: 'آزمایش ورود AD/LDAP',
|
||||
testLoginDesc:
|
||||
'فقط برای آزمایش احراز هویت، با یک اعتبار کاربری AD/LDAP متصل شوید. هیچ جلسه 1Panel ایجاد نشده است.',
|
||||
ldapUsername: 'نام کاربری LDAP',
|
||||
usernameRequired: 'نام کاربری LDAP را وارد کنید.',
|
||||
startTest: 'شروع تست',
|
||||
testLoginSuccess: 'احراز هویت با موفقیت انجام شد.',
|
||||
testLoginSuccessWithDN: 'احراز هویت با موفقیت انجام شد. کاربر DN: {0}',
|
||||
import: {
|
||||
title: 'وارد کردن کاربران AD/LDAP',
|
||||
source: 'منبع داده: دایرکتوری AD/LDAP',
|
||||
lastRead: 'آخرین خوانده شده: {0}',
|
||||
cacheHit: 'نتیجه ذخیره شده',
|
||||
keywordPlaceholder: 'جستجوی نام کاربری',
|
||||
search: 'جستجو کنید',
|
||||
refresh: 'از LDAP بخوانید',
|
||||
refreshTip: 'کش کوتاه مدت را نادیده بگیرید و فهرست LDAP را دوباره بخوانید.',
|
||||
loadFailed: 'دایرکتوری LDAP خوانده نشد.',
|
||||
retry: 'دوباره امتحان کنید',
|
||||
noData: 'هیچ کاربر دایرکتوری پیدا نشد.',
|
||||
username: 'نام کاربری',
|
||||
status: 'وضعیت',
|
||||
changes: 'تغییرات',
|
||||
noChanges: 'بدون تغییر',
|
||||
importable: 'آماده واردات',
|
||||
updateAvailable: 'به روز رسانی موجود است',
|
||||
upToDate: 'به روز',
|
||||
conflict: 'تضاد نام',
|
||||
selectedCount: '{0} انتخاب شد',
|
||||
totalCount: '{0} کاربر',
|
||||
newUserRole: 'نقش کاربر جدید',
|
||||
newUserRoleRequired: 'نقشی را برای کاربران جدید انتخاب کنید.',
|
||||
noNewUsers: 'هیچ کاربر جدیدی در این عملیات وجود ندارد.',
|
||||
roleOnlyForNewUsers: 'نقش انتخاب شده فقط برای کاربران تازه ایجاد شده اعمال می شود.',
|
||||
strictOff: 'همگام سازی دقیق غیرفعال است. وارد کردن کامل کاربران را غیرفعال نمی کند.',
|
||||
importSelected: 'وارد کردن/بهروزرسانی انتخاب شد ({0})',
|
||||
importAll: 'وارد کردن/بهروزرسانی همه ({0})',
|
||||
previewTitle: 'واردات کامل را تأیید کنید',
|
||||
previewDesc: 'فهرست کامل LDAP خوانده شد. کلمه کلیدی جستجو این عملیات را محدود نمی کند.',
|
||||
created: 'ایجاد کنید',
|
||||
updated: 'به روز رسانی',
|
||||
unchanged: 'بدون تغییر',
|
||||
conflicts: 'درگیری ها',
|
||||
missing: 'غیر فعال کردن',
|
||||
reactivated: 'دوباره فعال کنید',
|
||||
strictWarning:
|
||||
'همگام سازی دقیق فعال است. کاربرانی که در LDAP گم شده اند نمی توانند وارد سیستم شوند، اما سوابق، نقش ها و مجوزهای آنها حفظ می شود.',
|
||||
missingUsers: 'کاربرانی که از LDAP غایب هستند',
|
||||
missingScope: 'فقط این منبع LDAP تحت تأثیر قرار می گیرد.',
|
||||
willDisable: 'غیر فعال خواهد شد',
|
||||
confirmAll: 'واردات را تایید کنید',
|
||||
confirmAllWithMissing: 'درونریزی را تأیید و {0} کاربر را غیرفعال کنید',
|
||||
executeSuccess: 'کاربران LDAP با موفقیت پردازش شدند.',
|
||||
queryExpired: 'نتیجه دایرکتوری منقضی شد. دوباره از LDAP بخوانید.',
|
||||
planIncomplete: 'دایرکتوری کامل خوانده شده ناقص است و قابل اجرا نیست.',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
app: {
|
||||
app: 'برنامه',
|
||||
|
||||
@@ -4235,6 +4235,70 @@ const message = {
|
||||
noFail: 'マウント失敗はシステム起動に影響しません',
|
||||
},
|
||||
xpack: {
|
||||
ldap: {
|
||||
source: 'ソース',
|
||||
directoryMissing: 'LDAP に存在しません',
|
||||
localCredentialsManaged:
|
||||
'このユーザーのユーザー名とパスワードは LDAP で管理されているため、ローカルでは変更できません。',
|
||||
sources: {
|
||||
local: 'ローカル',
|
||||
ldap: 'LDAP',
|
||||
},
|
||||
importUsers: 'AD/LDAP ユーザーをインポート',
|
||||
searchUsersPlaceholder: 'ユーザー名を検索',
|
||||
readFromLDAP: 'LDAP から読み取る',
|
||||
selectedUsers: '{0} が選択されました',
|
||||
queriedAt: '読み取り時刻',
|
||||
cachedResult: 'キャッシュされた結果',
|
||||
roleForNewUsers: '新規ユーザーの役割',
|
||||
selectRole: '役割を選択してください',
|
||||
roleOnlyForNewUsers: 'ロールは、インポートによってユーザーが作成される場合にのみ必要です。',
|
||||
roleRequiredForNewUsers: '新しい LDAP ユーザーのロールを選択します。',
|
||||
changedFields: '変更されたフィールド',
|
||||
importSelected: '選択したインポート',
|
||||
importAll: 'すべてインポート',
|
||||
importPreview: 'AD/LDAP インポートプレビュー',
|
||||
importCompleted: 'AD/LDAP インポート完了',
|
||||
incompletePreview: 'LDAP ディレクトリの読み取りが不完全でした。再び LDAP から読み取ります。',
|
||||
missingUsersWarning: 'LDAP にないユーザーは、厳密な同期によって無効になります。',
|
||||
missingUsersWarningDetail: 'ローカル LDAP ユーザー {0} 人がサインインできなくなります。',
|
||||
action: 'アクション',
|
||||
reason: '理由',
|
||||
noImportChanges: 'インポートの変更はありません',
|
||||
confirmImport: 'インポートの確認',
|
||||
created: '作成',
|
||||
updated: '更新',
|
||||
reactivated: '再有効化',
|
||||
unchanged: '変更なし',
|
||||
conflicts: '競合',
|
||||
missing: '欠落',
|
||||
missingUsersConfirm: 'LDAP に存在しない {0} 人のユーザーを無効化し、セッションを終了します。続行しますか?',
|
||||
strictSyncConfirm: '厳密な同期を確認する',
|
||||
status: {
|
||||
importable: '新規ユーザー',
|
||||
update_available: '利用可能なアップデート',
|
||||
up_to_date: '最新の状態',
|
||||
conflict: '競合',
|
||||
},
|
||||
fields: {
|
||||
name: 'ユーザー名',
|
||||
externalDN: 'ディレクトリ DN',
|
||||
externalID: '外部ID',
|
||||
authSourceStatus: '認証状態',
|
||||
},
|
||||
actions: {
|
||||
created: '作成',
|
||||
updated: '更新',
|
||||
reactivated: '再有効化',
|
||||
unchanged: '変更なし',
|
||||
skipped: 'スキップされました',
|
||||
conflicts: '競合',
|
||||
conflict: '競合',
|
||||
missing: '無効にする',
|
||||
errors: 'エラー',
|
||||
error: 'エラー',
|
||||
},
|
||||
},
|
||||
expiresEnterpriseAlert:
|
||||
'ご注意: あなたのEnterprise Editionライセンスは{0}日後に終了し、すべてのEnterprise Edition機能が使用できなくなります。継続的な使用のために速やかに更新してください。',
|
||||
expiresProAlert:
|
||||
@@ -4792,6 +4856,219 @@ const message = {
|
||||
masterOnlyPermissionHelper: 'この権限はマスターノードでのみ有効です。',
|
||||
view: '表示',
|
||||
manage: '管理',
|
||||
authManage: '認証管理',
|
||||
auth: {
|
||||
providerNavigation: '認証プロバイダー',
|
||||
providers: {
|
||||
ldap: 'AD/LDAP',
|
||||
passkey: 'Passkey',
|
||||
radius: 'Radius',
|
||||
oidc: 'OIDC',
|
||||
saml2: 'SAML2',
|
||||
cas: 'CAS',
|
||||
oauth2: 'OAuth2',
|
||||
dingtalk: 'DingTalk',
|
||||
feishu: 'Feishu',
|
||||
wecom: 'WeCom',
|
||||
},
|
||||
providerDescriptions: {
|
||||
ldap: 'Active Directory、OpenLDAP、およびその他の LDAP サービスと互換性があります',
|
||||
passkey: 'パスワードなしのサインインにデバイス資格情報を使用する',
|
||||
radius: 'Radius サービスを介したネットワーク アクセスの認証',
|
||||
oidc: 'OpenID Connect を使用してエンタープライズ シングル サインオンを接続する',
|
||||
saml2: 'エンタープライズ ID フェデレーションに SAML2 を使用する',
|
||||
cas: 'シングル サインオンのための集中認証サービスに接続する',
|
||||
oauth2: '互換性のある OAuth2 ID サービスに接続する',
|
||||
dingtalk: 'DingTalk 組織 ID と QR サインインを使用する',
|
||||
feishu: 'Feishu 組織 ID とアカウント同期を使用する',
|
||||
wecom: 'WeCom メンバー ID で認証する',
|
||||
},
|
||||
planned: '計画済み',
|
||||
plannedTitle: '{0} 認証設定',
|
||||
plannedDesc: 'この認証プロバイダーは計画されており、まだ利用できません。',
|
||||
ldap: {
|
||||
enable: '有効にする',
|
||||
enabled: '有効',
|
||||
disabled: '無効',
|
||||
connection: '基本接続',
|
||||
connectionDesc: 'ユーザーの検索に使用するディレクトリ サービスとバインド アカウントを構成します。',
|
||||
serverURL: 'サーバーURL',
|
||||
serverURLHelper: 'ldap:// および ldaps:// URL をサポートします。',
|
||||
userBaseDN: 'ユーザー Base DN',
|
||||
userBaseDNHelper:
|
||||
'LDAP ユーザー検索のために DN を開始します。 OU、CN、またはドメイン ルート DN にすることができます。',
|
||||
bindDN: 'バインド DN',
|
||||
bindPassword: 'パスワード',
|
||||
passwordSaved: '保存したパスワードを保持するには空白のままにしてください',
|
||||
userSearch: 'ユーザー検索',
|
||||
userSearchDesc:
|
||||
'ユーザー検索ベースとフィルターを設定し、1Panel name として使用される LDAP 属性をマップします。',
|
||||
userFilter: 'ユーザーフィルター',
|
||||
userFilterTooltip:
|
||||
'%(user)s をエスケープされたユーザー名に置き換えるか、ディレクトリ全体を読み取る場合は * に置き換えます。',
|
||||
userFilterHelper: 'ユーザー名は、LDAP フィルターに挿入される前にエスケープされます。',
|
||||
attributeMap: '属性マッピング',
|
||||
attributeMapTooltip: '1Panel name フィールドから LDAP 属性への JSON マッピング。',
|
||||
attributeMapHelper: '1Panel name フィールドにマップされる LDAP 属性を設定します。',
|
||||
advanced: '詳細設定',
|
||||
advancedDesc: 'TLS および LDAP クエリ ページングを構成します。',
|
||||
strictSync: '厳密な同期',
|
||||
strictSyncTooltip:
|
||||
'完全なインポートが完了すると、この LDAP ソースから欠落しているユーザーは無効になりますが、削除されません。',
|
||||
strictSyncHelper:
|
||||
'完全な全件インポートにのみ適用されます。選択したユーザーのインポートでは、他のユーザーは無効化されません。',
|
||||
skipTLSVerify: 'TLS検証をスキップする',
|
||||
skipTLSVerifyTooltip: 'LDAPS 接続の証明書検証を無効にします。',
|
||||
skipTLSVerifyHelper:
|
||||
'信頼できる自己署名証明書のみを使用してください。この設定は厳密な同期とは独立しています。',
|
||||
connectTimeout: '接続タイムアウト (秒)',
|
||||
searchPageSize: 'LDAP クエリ ページ サイズ',
|
||||
restore: '復元',
|
||||
testConnection: '接続テスト',
|
||||
testLogin: 'ログインテスト',
|
||||
userImport: 'ユーザーをインポートする',
|
||||
saveBeforeImport: 'ユーザーをインポートする前に、現在の AD/LDAP 設定を保存します。',
|
||||
format: 'フォーマット',
|
||||
restoreExample: '復元の例',
|
||||
mappingValid: '有効なJSON; name が設定されています。',
|
||||
mappingInvalid: '有効な JSON を入力してください。',
|
||||
mappingObject: '属性マッピングは JSON オブジェクトである必要があります。',
|
||||
mappingOnlyName: 'name マッピングのみがサポートされます。',
|
||||
mappingStringValues: 'マッピングされたすべての属性は文字列である必要があります。',
|
||||
mappingNameRequired: 'name は空ではない文字列である必要があります。',
|
||||
restored: '最後に保存された設定が復元されました。',
|
||||
connectionTestSuccess: 'LDAP 接続テストに成功しました。',
|
||||
recentTestSuccess: '最後のテストが成功しました: {0}',
|
||||
recentTestFailed: '最後のテストが失敗しました: {0}',
|
||||
serverURLRequired: 'LDAP サーバーの URL を入力します。',
|
||||
serverURLInvalid: '有効な ldap:// または ldaps:// URL を使用してください。',
|
||||
userBaseDNRequired: 'ユーザー Base DN を入力します。',
|
||||
bindDNRequired: 'バインド DN を入力してください。',
|
||||
passwordRequired: 'パスワードを入力します。',
|
||||
userFilterRequired: 'ユーザーフィルターを入力します。',
|
||||
connectTimeoutRequired: '接続タイムアウトを入力します。',
|
||||
searchPageSizeRequired: 'LDAP クエリのページ サイズを入力します。',
|
||||
sync: {
|
||||
title: 'スケジュールされた同期',
|
||||
description:
|
||||
'スケジュールに従って完全な LDAP ディレクトリを読み取り、インポートされた LDAP ユーザーを 1Panel に維持します。',
|
||||
enable: 'スケジュールを有効にする',
|
||||
enableHelper: '無効にすると、自動実行が停止します。手動同期は引き続き利用可能です。',
|
||||
schedule: 'スケジュール',
|
||||
daily: '毎日',
|
||||
weekly: '毎週',
|
||||
customCron: 'カスタムCron',
|
||||
preview: 'プレビュー',
|
||||
previewTitle: '次の 5 回の実行',
|
||||
previewEmpty: '利用可能な実行時間がありません',
|
||||
cronHelper: '標準の 5 フィールド Cron 式 (分、時、日、月、曜日) を使用します。',
|
||||
autoImport: '新しいユーザーをインポートする',
|
||||
autoImportHelper:
|
||||
'無効にすると、インポートされた LDAP ユーザーのディレクトリ識別子とステータスのみが維持されます。新しいユーザーは作成されません。',
|
||||
defaultRole: '新しいユーザーの役割',
|
||||
defaultRolePlaceholder: '役割を選択してください',
|
||||
defaultRoleHelper: 'スケジュールされた同期によって作成されたユーザーにのみ適用されます。',
|
||||
defaultRoleRequired: '新しい LDAP ユーザーのロールを選択します。',
|
||||
strictSyncHelper:
|
||||
'完全な全件クエリで見つからないユーザーは無効化され、セッションが終了します。ユーザー、ロール、権限は削除されません。',
|
||||
safetyTitle: 'LDAP の全件クエリが正常に完了した場合のみ、欠落ユーザーを処理します。',
|
||||
safetyDescription:
|
||||
'クエリの失敗、タイムアウト、または不完全なページング結果によっても、ユーザーのステータスは変更されません。同期スコープは、ユーザー Base DN、フィルター、および属性マッピングに従います。',
|
||||
runNow: '今すぐ同期する',
|
||||
lastRunSuccess: '最後に成功した同期: {0}',
|
||||
lastRunFailed: '前回の同期失敗: {0}',
|
||||
lastRunRunning: '同期が開始されました: {0}',
|
||||
sourceDisabled: '同期を実行する前に、AD/LDAP を有効にして保存します。',
|
||||
cronRequired: 'Cron 式を入力します。',
|
||||
saveBeforeRun: 'タスクを実行する前に同期設定を保存します。',
|
||||
runConfirmTitle: '厳密な同期を実行する',
|
||||
runConfirmDescription:
|
||||
'LDAP の全件クエリで見つからないユーザーを無効化し、アクティブなセッションを終了します。続行しますか?',
|
||||
runSuccess: 'LDAP の同期が完了しました。',
|
||||
weekdays: {
|
||||
0: '日曜日',
|
||||
1: '月曜日',
|
||||
2: '火曜日',
|
||||
3: '水曜日',
|
||||
4: '木曜日',
|
||||
5: '金曜日',
|
||||
6: '土曜日',
|
||||
},
|
||||
},
|
||||
syncLogs: {
|
||||
title: 'ログを同期する',
|
||||
description: 'スケジュールされたおよび手動の LDAP 同期結果を確認します。',
|
||||
startedAt: '開始時間',
|
||||
trigger: '実行方式',
|
||||
manual: '手動',
|
||||
scheduled: '予定されている',
|
||||
success: '成功',
|
||||
failed: '失敗しました',
|
||||
running: '実行中',
|
||||
result: '結果',
|
||||
resultSummary: '作成 {0}、更新 {1}、欠落 {2}',
|
||||
duration: '所要時間',
|
||||
action: 'アクション',
|
||||
},
|
||||
testLoginTitle: 'AD/LDAP ログインテスト',
|
||||
testLoginDesc:
|
||||
'認証のみをテストするために、AD/LDAP ユーザー資格情報をバインドします。 1Panel セッションは作成されません。',
|
||||
ldapUsername: 'LDAP ユーザー名',
|
||||
usernameRequired: 'LDAP ユーザー名を入力します。',
|
||||
startTest: 'テストの開始',
|
||||
testLoginSuccess: '認証に成功しました。',
|
||||
testLoginSuccessWithDN: '認証に成功しました。ユーザー DN: {0}',
|
||||
import: {
|
||||
title: 'AD/LDAP ユーザーをインポート',
|
||||
source: 'データソース: AD/LDAP ディレクトリ',
|
||||
lastRead: '最終読み取り: {0}',
|
||||
cacheHit: 'キャッシュされた結果',
|
||||
keywordPlaceholder: 'ユーザー名を検索',
|
||||
search: '検索',
|
||||
refresh: 'LDAP から読み取る',
|
||||
refreshTip: '短期キャッシュを無視して、LDAP ディレクトリを再度読み取ります。',
|
||||
loadFailed: 'LDAP ディレクトリの読み取りに失敗しました。',
|
||||
retry: '再試行',
|
||||
noData: 'ディレクトリ ユーザーが見つかりません。',
|
||||
username: 'ユーザー名',
|
||||
status: 'ステータス',
|
||||
changes: '変更点',
|
||||
noChanges: '変更なし',
|
||||
importable: 'インポートの準備ができました',
|
||||
updateAvailable: '利用可能なアップデート',
|
||||
upToDate: '最新の状態',
|
||||
conflict: '名前の競合',
|
||||
selectedCount: '{0} が選択されました',
|
||||
totalCount: '{0} 人のユーザー',
|
||||
newUserRole: '新しいユーザーの役割',
|
||||
newUserRoleRequired: '新しいユーザーの役割を選択します。',
|
||||
noNewUsers: 'この操作には新規ユーザーはいません。',
|
||||
roleOnlyForNewUsers: '選択したロールは、新しく作成されたユーザーにのみ適用されます。',
|
||||
strictOff: '厳密な同期は無効になっています。完全インポートではユーザーは無効になりません。',
|
||||
importSelected: '選択されたインポート/更新 ({0})',
|
||||
importAll: 'すべてインポート/更新 ({0})',
|
||||
previewTitle: '完全なインポートを確認する',
|
||||
previewDesc:
|
||||
'完全な LDAP ディレクトリが読み取られました。検索キーワードによる制限はありません。',
|
||||
created: '作成',
|
||||
updated: 'アップデート',
|
||||
unchanged: '変わらない',
|
||||
conflicts: '紛争',
|
||||
missing: '無効にする',
|
||||
reactivated: '再アクティブ化',
|
||||
strictWarning:
|
||||
'厳密な同期が有効になっています。 LDAP にいないユーザーはサインインできませんが、レコード、ロール、権限は保持されます。',
|
||||
missingUsers: 'LDAP からユーザーが欠落しています',
|
||||
missingScope: 'この LDAP ソースのみが影響を受けます。',
|
||||
willDisable: '無効になります',
|
||||
confirmAll: 'インポートの確認',
|
||||
confirmAllWithMissing: 'インポートを確認し、{0} 人のユーザーを無効化する',
|
||||
executeSuccess: 'LDAP ユーザーは正常に処理されました。',
|
||||
queryExpired: 'ディレクトリ結果の有効期限が切れました。再び LDAP から読み取ります。',
|
||||
planIncomplete: 'ディレクトリ全体の読み取りは不完全であるため、実行できません。',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
app: {
|
||||
app: 'APP',
|
||||
|
||||
@@ -4148,6 +4148,70 @@ const message = {
|
||||
noFail: '마운트 실패는 시스템 시작에 영향을 미치지 않습니다',
|
||||
},
|
||||
xpack: {
|
||||
ldap: {
|
||||
source: '소스',
|
||||
directoryMissing: 'LDAP에 없음',
|
||||
localCredentialsManaged:
|
||||
'이 사용자의 사용자 이름과 비밀번호는 LDAP에서 관리되므로 로컬에서 변경할 수 없습니다.',
|
||||
sources: {
|
||||
local: '로컬',
|
||||
ldap: 'LDAP',
|
||||
},
|
||||
importUsers: 'AD/LDAP 사용자 가져오기',
|
||||
searchUsersPlaceholder: '사용자 이름 검색',
|
||||
readFromLDAP: 'LDAP에서 읽기',
|
||||
selectedUsers: '{0} 선택됨',
|
||||
queriedAt: '읽기 시간',
|
||||
cachedResult: '캐시된 결과',
|
||||
roleForNewUsers: '신규 사용자의 역할',
|
||||
selectRole: '역할 선택',
|
||||
roleOnlyForNewUsers: '가져오기를 통해 사용자가 생성되는 경우에만 역할이 필요합니다.',
|
||||
roleRequiredForNewUsers: '새로운 LDAP 사용자의 역할을 선택합니다.',
|
||||
changedFields: '변경된 필드',
|
||||
importSelected: '선택 항목 가져오기',
|
||||
importAll: '모두 가져오기',
|
||||
importPreview: 'AD/LDAP 가져오기 미리보기',
|
||||
importCompleted: 'AD/LDAP 가져오기 완료',
|
||||
incompletePreview: 'LDAP 디렉터리 읽기가 완료되지 않았습니다. LDAP에서 다시 읽어보세요.',
|
||||
missingUsersWarning: 'LDAP에서 누락된 사용자는 엄격한 동기화로 인해 비활성화됩니다.',
|
||||
missingUsersWarningDetail: '{0} 로컬 LDAP 사용자는 더 이상 로그인할 수 없습니다.',
|
||||
action: '액션',
|
||||
reason: '이유',
|
||||
noImportChanges: '가져오기 변경사항 없음',
|
||||
confirmImport: '가져오기 확인',
|
||||
created: '만들기',
|
||||
updated: '업데이트',
|
||||
reactivated: '재활성화',
|
||||
unchanged: '변경되지 않음',
|
||||
conflicts: '충돌',
|
||||
missing: '누락',
|
||||
missingUsersConfirm: 'LDAP에서 누락된 {0}명의 사용자를 비활성화하고 로그아웃합니다. 계속하시겠습니까?',
|
||||
strictSyncConfirm: '엄격한 동기화 확인',
|
||||
status: {
|
||||
importable: '신규 사용자',
|
||||
update_available: '업데이트 가능',
|
||||
up_to_date: '최신',
|
||||
conflict: '충돌',
|
||||
},
|
||||
fields: {
|
||||
name: '사용자 이름',
|
||||
externalDN: '디렉토리 DN',
|
||||
externalID: '외부 ID',
|
||||
authSourceStatus: '인증 상태',
|
||||
},
|
||||
actions: {
|
||||
created: '만들기',
|
||||
updated: '업데이트',
|
||||
reactivated: '재활성화',
|
||||
unchanged: '변경되지 않음',
|
||||
skipped: '건너뛰었습니다.',
|
||||
conflicts: '충돌',
|
||||
conflict: '충돌',
|
||||
missing: '비활성화',
|
||||
errors: '오류',
|
||||
error: '오류',
|
||||
},
|
||||
},
|
||||
expiresEnterpriseAlert:
|
||||
'친절한 알림: 귀하의 Enterprise Edition 라이선스가 {0}일 후 만료되며, 모든 Enterprise Edition 기능에 더 이상 접근할 수 없습니다. 지속적인 사용을 위해 신속하게 갱신하시기 바랍니다.',
|
||||
expiresProAlert:
|
||||
@@ -4699,6 +4763,217 @@ const message = {
|
||||
masterOnlyPermissionHelper: '이 권한은 마스터 노드에서만 적용됩니다.',
|
||||
view: '보기',
|
||||
manage: '관리',
|
||||
authManage: '인증 관리',
|
||||
auth: {
|
||||
providerNavigation: '인증 공급자',
|
||||
providers: {
|
||||
ldap: 'AD/LDAP',
|
||||
passkey: 'Passkey',
|
||||
radius: 'Radius',
|
||||
oidc: 'OIDC',
|
||||
saml2: 'SAML2',
|
||||
cas: 'CAS',
|
||||
oauth2: 'OAuth2',
|
||||
dingtalk: 'DingTalk',
|
||||
feishu: 'Feishu',
|
||||
wecom: 'WeCom',
|
||||
},
|
||||
providerDescriptions: {
|
||||
ldap: 'Active Directory, OpenLDAP 및 기타 LDAP 서비스와 호환 가능',
|
||||
passkey: '비밀번호 없는 로그인을 위해 장치 자격 증명 사용',
|
||||
radius: 'Radius 서비스를 통해 네트워크 액세스 인증',
|
||||
oidc: 'OpenID Connect로 엔터프라이즈 Single Sign-On 연결',
|
||||
saml2: '기업 ID 연동을 위해 SAML2 사용',
|
||||
cas: 'Single Sign-On을 위한 중앙 집중식 인증 서비스 연결',
|
||||
oauth2: '호환 가능한 OAuth2 ID 서비스 연결',
|
||||
dingtalk: 'DingTalk 조직 ID 및 QR 로그인 사용',
|
||||
feishu: 'Feishu 조직 ID 및 계정 동기화 사용',
|
||||
wecom: 'WeCom 회원 본인 인증',
|
||||
},
|
||||
planned: '예정',
|
||||
plannedTitle: '{0} 인증 설정',
|
||||
plannedDesc: '이 인증 공급자는 계획되어 있으며 아직 사용할 수 없습니다.',
|
||||
ldap: {
|
||||
enable: '활성화',
|
||||
enabled: '활성화됨',
|
||||
disabled: '비활성화됨',
|
||||
connection: '기본 연결',
|
||||
connectionDesc: '사용자 검색에 사용되는 디렉터리 서비스와 바인딩 계정을 구성합니다.',
|
||||
serverURL: '서버 URL',
|
||||
serverURLHelper: 'ldap:// 및 ldaps:// URL을 지원합니다.',
|
||||
userBaseDN: '사용자 Base DN',
|
||||
userBaseDNHelper: 'LDAP 사용자 검색을 위해 DN 시작 OU, CN 또는 도메인 루트 DN일 수 있습니다.',
|
||||
bindDN: 'DN 바인딩',
|
||||
bindPassword: '비밀번호',
|
||||
passwordSaved: '저장된 비밀번호를 유지하려면 비워두세요.',
|
||||
userSearch: '사용자 검색',
|
||||
userSearchDesc:
|
||||
'사용자 검색 기반 및 필터를 설정한 다음 1Panel name로 사용되는 LDAP 속성을 매핑합니다.',
|
||||
userFilter: '사용자 필터',
|
||||
userFilterTooltip:
|
||||
'%(user)s를 이스케이프된 사용자 이름으로 바꾸거나 전체 디렉터리 읽기를 위해 *로 바꿉니다.',
|
||||
userFilterHelper: '사용자 이름은 LDAP 필터에 삽입되기 전에 이스케이프됩니다.',
|
||||
attributeMap: '속성 매핑',
|
||||
attributeMapTooltip: '1Panel name 필드에서 LDAP 속성으로 매핑되는 JSON.',
|
||||
attributeMapHelper: '1Panel name 필드에 매핑된 LDAP 속성을 설정합니다.',
|
||||
advanced: '고급 설정',
|
||||
advancedDesc: 'TLS 및 LDAP 쿼리 페이징을 구성합니다.',
|
||||
strictSync: '엄격한 동기화',
|
||||
strictSyncTooltip:
|
||||
'전체 가져오기가 완료된 후 이 LDAP 소스에서 누락된 사용자는 비활성화되지만 삭제되지는 않습니다.',
|
||||
strictSyncHelper:
|
||||
'완전한 전체 가져오기에만 적용됩니다. 선택한 사용자를 가져와도 다른 사용자는 비활성화되지 않습니다.',
|
||||
skipTLSVerify: 'TLS 확인 건너뛰기',
|
||||
skipTLSVerifyTooltip: 'LDAPS 연결에 대한 인증서 확인을 비활성화합니다.',
|
||||
skipTLSVerifyHelper:
|
||||
'신뢰할 수 있는 자체 서명된 인증서에만 사용하세요. 이 설정은 엄격한 동기화와 무관합니다.',
|
||||
connectTimeout: '연결 시간 초과(초)',
|
||||
searchPageSize: 'LDAP 쿼리 페이지 크기',
|
||||
restore: '복원',
|
||||
testConnection: '연결 테스트',
|
||||
testLogin: '로그인 테스트',
|
||||
userImport: '사용자 가져오기',
|
||||
saveBeforeImport: '사용자를 가져오기 전에 현재 AD/LDAP 설정을 저장하십시오.',
|
||||
format: '형식',
|
||||
restoreExample: '복원 예시',
|
||||
mappingValid: '유효한 JSON; name가 구성되었습니다.',
|
||||
mappingInvalid: '유효한 JSON를 입력하세요.',
|
||||
mappingObject: '속성 매핑은 JSON 개체여야 합니다.',
|
||||
mappingOnlyName: 'name 매핑만 지원됩니다.',
|
||||
mappingStringValues: '매핑된 모든 속성은 문자열이어야 합니다.',
|
||||
mappingNameRequired: 'name는 비어 있지 않은 문자열이어야 합니다.',
|
||||
restored: '마지막으로 저장된 설정이 복원되었습니다.',
|
||||
connectionTestSuccess: 'LDAP 연결 테스트에 성공했습니다.',
|
||||
recentTestSuccess: '마지막 테스트 성공: {0}',
|
||||
recentTestFailed: '마지막 테스트 실패: {0}',
|
||||
serverURLRequired: 'LDAP 서버 URL을 입력하세요.',
|
||||
serverURLInvalid: '유효한 ldap:// 또는 ldaps:// URL을 사용하세요.',
|
||||
userBaseDNRequired: '사용자 Base DN를 입력합니다.',
|
||||
bindDNRequired: '바인딩 DN를 입력합니다.',
|
||||
passwordRequired: '비밀번호를 입력하세요.',
|
||||
userFilterRequired: '사용자 필터를 입력하세요.',
|
||||
connectTimeoutRequired: '연결 시간 초과를 입력합니다.',
|
||||
searchPageSizeRequired: 'LDAP 쿼리 페이지 크기를 입력합니다.',
|
||||
sync: {
|
||||
title: '예약된 동기화',
|
||||
description: '일정에 따라 전체 LDAP 디렉터리를 읽고 가져온 LDAP 사용자를 1Panel에 유지합니다.',
|
||||
enable: '일정 활성화',
|
||||
enableHelper: '비활성화되면 자동 실행이 중지됩니다. 수동 동기화는 계속 사용할 수 있습니다.',
|
||||
schedule: '일정',
|
||||
daily: '매일',
|
||||
weekly: '주간',
|
||||
customCron: '커스텀 Cron',
|
||||
preview: '미리보기',
|
||||
previewTitle: '다음 5회 실행',
|
||||
previewEmpty: '사용 가능한 실행 시간이 없습니다.',
|
||||
cronHelper: '표준 5개 필드 Cron 표현식(분, 시, 일, 월, 요일)을 사용합니다.',
|
||||
autoImport: '새 사용자 가져오기',
|
||||
autoImportHelper:
|
||||
'비활성화되면 가져온 LDAP 사용자에 대해 디렉터리 식별자와 상태만 유지됩니다. 새로운 사용자가 생성되지 않습니다.',
|
||||
defaultRole: '새로운 사용자 역할',
|
||||
defaultRolePlaceholder: '역할 선택',
|
||||
defaultRoleHelper: '예약된 동기화로 생성된 사용자에게만 적용됩니다.',
|
||||
defaultRoleRequired: '새로운 LDAP 사용자의 역할을 선택합니다.',
|
||||
strictSyncHelper:
|
||||
'완전한 전체 쿼리에서 누락된 사용자는 비활성화되고 해당 세션이 지워집니다. 사용자, 역할 및 권한은 삭제되지 않습니다.',
|
||||
safetyTitle: '누락된 사용자는 완전한 LDAP 전체 쿼리 후에만 처리됩니다.',
|
||||
safetyDescription:
|
||||
'실패한 쿼리, 시간 초과 또는 불완전한 페이징 결과는 사용자 상태를 변경하지 않습니다. 동기화 범위는 사용자 Base DN, 필터 및 특성 매핑을 따릅니다.',
|
||||
runNow: '지금 동기화',
|
||||
lastRunSuccess: '마지막 동기화 성공: {0}',
|
||||
lastRunFailed: '마지막 동기화 실패: {0}',
|
||||
lastRunRunning: '동기화 시작됨: {0}',
|
||||
sourceDisabled: '동기화를 실행하기 전에 AD/LDAP를 활성화하고 저장하세요.',
|
||||
cronRequired: 'Cron 표현식을 입력하세요.',
|
||||
saveBeforeRun: '작업을 실행하기 전에 동기화 설정을 저장하십시오.',
|
||||
runConfirmTitle: '엄격한 동기화 실행',
|
||||
runConfirmDescription:
|
||||
'완전한 전체 쿼리에서 누락된 LDAP 사용자를 비활성화하고 활성 세션을 종료합니다. 계속하시겠습니까?',
|
||||
runSuccess: 'LDAP 동기화가 완료되었습니다.',
|
||||
weekdays: {
|
||||
0: '일요일',
|
||||
1: '월요일',
|
||||
2: '화요일',
|
||||
3: '수요일',
|
||||
4: '목요일',
|
||||
5: '금요일',
|
||||
6: '토요일',
|
||||
},
|
||||
},
|
||||
syncLogs: {
|
||||
title: '동기화 로그',
|
||||
description: '예약된 및 수동 LDAP 동기화 결과를 검토합니다.',
|
||||
startedAt: '시작 시간',
|
||||
trigger: '실행 방식',
|
||||
manual: '수동',
|
||||
scheduled: '예정됨',
|
||||
success: '성공',
|
||||
failed: '실패',
|
||||
running: '실행 중',
|
||||
result: '결과',
|
||||
resultSummary: '{0} 생성, {1} 업데이트, {2} 누락',
|
||||
duration: '기간',
|
||||
action: '액션',
|
||||
},
|
||||
testLoginTitle: 'AD/LDAP 로그인 테스트',
|
||||
testLoginDesc:
|
||||
'인증을 테스트하기 위해 AD/LDAP 사용자 자격 증명으로 바인딩합니다. 1Panel 세션이 생성되지 않습니다.',
|
||||
ldapUsername: 'LDAP 사용자 이름',
|
||||
usernameRequired: 'LDAP 사용자 이름을 입력하세요.',
|
||||
startTest: '테스트 시작',
|
||||
testLoginSuccess: '인증에 성공했습니다.',
|
||||
testLoginSuccessWithDN: '인증에 성공했습니다. 사용자 DN: {0}',
|
||||
import: {
|
||||
title: 'AD/LDAP 사용자 가져오기',
|
||||
source: '데이터 소스: AD/LDAP 디렉토리',
|
||||
lastRead: '마지막으로 읽은 날짜: {0}',
|
||||
cacheHit: '캐시된 결과',
|
||||
keywordPlaceholder: '사용자 이름 검색',
|
||||
search: '검색',
|
||||
refresh: 'LDAP에서 읽기',
|
||||
refreshTip: '단기 캐시를 무시하고 LDAP 디렉토리를 다시 읽으십시오.',
|
||||
loadFailed: 'LDAP 디렉터리를 읽지 못했습니다.',
|
||||
retry: '재시도',
|
||||
noData: '디렉터리 사용자를 찾을 수 없습니다.',
|
||||
username: '사용자 이름',
|
||||
status: '상태',
|
||||
changes: '변경 사항',
|
||||
noChanges: '변경사항 없음',
|
||||
importable: '가져올 준비가 되었습니다.',
|
||||
updateAvailable: '업데이트 가능',
|
||||
upToDate: '최신',
|
||||
conflict: '이름 충돌',
|
||||
selectedCount: '{0} 선택됨',
|
||||
totalCount: '{0}명',
|
||||
newUserRole: '새로운 사용자 역할',
|
||||
newUserRoleRequired: '새 사용자의 역할을 선택합니다.',
|
||||
noNewUsers: '이 작업에는 새로운 사용자가 없습니다.',
|
||||
roleOnlyForNewUsers: '선택한 역할은 새로 생성된 사용자에게만 적용됩니다.',
|
||||
strictOff:
|
||||
'엄격한 동기화가 비활성화되었습니다. 전체 가져오기는 사용자를 비활성화하지 않습니다.',
|
||||
importSelected: '가져오기/업데이트 선택됨({0})',
|
||||
importAll: '모두 가져오기/업데이트({0})',
|
||||
previewTitle: '전체 가져오기 확인',
|
||||
previewDesc: '전체 LDAP 디렉토리를 읽었습니다. 검색 키워드는 이 작업을 제한하지 않습니다.',
|
||||
created: '만들기',
|
||||
updated: '업데이트',
|
||||
unchanged: '변경되지 않음',
|
||||
conflicts: '충돌',
|
||||
missing: '비활성화',
|
||||
reactivated: '재활성화',
|
||||
strictWarning:
|
||||
'엄격한 동기화가 활성화되었습니다. LDAP에서 누락된 사용자는 로그인할 수 없지만 해당 기록, 역할 및 권한은 유지됩니다.',
|
||||
missingUsers: 'LDAP에서 누락된 사용자',
|
||||
missingScope: '이 LDAP 소스만 영향을 받습니다.',
|
||||
willDisable: '비활성화됩니다',
|
||||
confirmAll: '가져오기 확인',
|
||||
confirmAllWithMissing: '가져오기를 확인하고 {0}명의 사용자 비활성화',
|
||||
executeSuccess: 'LDAP 사용자가 성공적으로 처리되었습니다.',
|
||||
queryExpired: '디렉터리 결과가 만료되었습니다. LDAP에서 다시 읽어보세요.',
|
||||
planIncomplete: '전체 디렉터리 읽기가 불완전하여 실행할 수 없습니다.',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
app: {
|
||||
app: 'APP',
|
||||
|
||||
@@ -4112,6 +4112,69 @@ const message = {
|
||||
noFail: 'ຄວາມລົ້ມເຫຼວໃນການ Mount ຈະບໍ່ມີຜົນຕໍ່ການເລີ່ມຕົ້ນລະບົບ',
|
||||
},
|
||||
xpack: {
|
||||
ldap: {
|
||||
source: 'ທີ່ມາ',
|
||||
directoryMissing: 'ບໍ່ພົບໃນ LDAP',
|
||||
localCredentialsManaged: 'ຊື່ຜູ້ໃຊ້ ແລະລະຫັດຜ່ານຖືກຈັດການໂດຍ LDAP ແລະບໍ່ສາມາດປ່ຽນຢູ່ໃນທ້ອງຖິ່ນໄດ້.',
|
||||
sources: {
|
||||
local: 'ທ້ອງຖິ່ນ',
|
||||
ldap: 'LDAP',
|
||||
},
|
||||
importUsers: 'ນໍາເຂົ້າຜູ້ໃຊ້ AD/LDAP',
|
||||
searchUsersPlaceholder: 'ຊອກຫາຊື່ຜູ້ໃຊ້',
|
||||
readFromLDAP: 'ອ່ານຈາກ LDAP',
|
||||
selectedUsers: 'ເລືອກ {0} ແລ້ວ',
|
||||
queriedAt: 'ເວລາອ່ານ',
|
||||
cachedResult: 'ຜົນໄດ້ຮັບຈາກຖານຄວາມຈໍາ',
|
||||
roleForNewUsers: 'ບົດບາດສໍາລັບຜູ້ໃຊ້ໃຫມ່',
|
||||
selectRole: 'ເລືອກບົດບາດ',
|
||||
roleOnlyForNewUsers: 'ພາລະບົດບາດແມ່ນຕ້ອງການພຽງແຕ່ໃນເວລາທີ່ການນໍາເຂົ້າສ້າງຜູ້ໃຊ້.',
|
||||
roleRequiredForNewUsers: 'ເລືອກບົດບາດສຳລັບຜູ້ໃຊ້ LDAP ໃໝ່.',
|
||||
changedFields: 'ຊ່ອງຂໍ້ມູນທີ່ມີການປ່ຽນແປງ',
|
||||
importSelected: 'ເລືອກການນໍາເຂົ້າ',
|
||||
importAll: 'ນຳເຂົ້າທັງໝົດ',
|
||||
importPreview: 'ຕົວຢ່າງການນໍາເຂົ້າ AD/LDAP',
|
||||
importCompleted: 'ການນໍາເຂົ້າ AD/LDAP ສໍາເລັດ',
|
||||
incompletePreview: 'ໄດເຣັກທໍຣີ LDAP ອ່ານບໍ່ຄົບຖ້ວນ. ອ່ານຈາກ LDAP ອີກເທື່ອຫນຶ່ງ.',
|
||||
missingUsersWarning: 'ຜູ້ໃຊ້ທີ່ຂາດຫາຍໄປຈາກ LDAP ຈະຖືກປິດໃຊ້ງານໂດຍການຊິ້ງຂໍ້ມູນຢ່າງເຂັ້ມງວດ.',
|
||||
missingUsersWarningDetail: 'ຜູ້ໃຊ້ LDAP ທ້ອງຖິ່ນ {0} ຄົນຈະບໍ່ສາມາດເຂົ້າລະບົບໄດ້.',
|
||||
action: 'ການປະຕິບັດ',
|
||||
reason: 'ເຫດຜົນ',
|
||||
noImportChanges: 'ບໍ່ມີການປ່ຽນແປງການນໍາເຂົ້າ',
|
||||
confirmImport: 'ຢືນຢັນການນໍາເຂົ້າ',
|
||||
created: 'ສ້າງ',
|
||||
updated: 'ອັບເດດ',
|
||||
reactivated: 'ເປີດໃຊ້ຄືນໃໝ່',
|
||||
unchanged: 'ບໍ່ປ່ຽນແປງ',
|
||||
conflicts: 'ຂໍ້ຂັດແຍ່ງ',
|
||||
missing: 'ຫາຍໄປ',
|
||||
missingUsersConfirm: 'ຜູ້ໃຊ້ {0} ຫາຍໄປຈາກ LDAP ຈະຖືກປິດການນຳໃຊ້ ແລະອອກຈາກລະບົບ. ສືບຕໍ່?',
|
||||
strictSyncConfirm: 'ຢືນຢັນການ synchronization ທີ່ເຄັ່ງຄັດ',
|
||||
status: {
|
||||
importable: 'ຜູ້ໃຊ້ໃຫມ່',
|
||||
update_available: 'ມີອັບເດດ',
|
||||
up_to_date: 'ເຖິງວັນທີ',
|
||||
conflict: 'ການຂັດແຍ້ງ',
|
||||
},
|
||||
fields: {
|
||||
name: 'ຊື່ຜູ້ໃຊ້',
|
||||
externalDN: 'ໄດເລກະທໍລີ DN',
|
||||
externalID: 'ID ພາຍນອກ',
|
||||
authSourceStatus: 'ສະຖານະການກວດສອບ',
|
||||
},
|
||||
actions: {
|
||||
created: 'ສ້າງ',
|
||||
updated: 'ອັບເດດ',
|
||||
reactivated: 'ເປີດໃຊ້ຄືນໃໝ່',
|
||||
unchanged: 'ບໍ່ປ່ຽນແປງ',
|
||||
skipped: 'ຂ້າມ',
|
||||
conflicts: 'ການຂັດແຍ້ງ',
|
||||
conflict: 'ການຂັດແຍ້ງ',
|
||||
missing: 'ປິດໃຊ້ງານ',
|
||||
errors: 'ຜິດພາດ',
|
||||
error: 'ຜິດພາດ',
|
||||
},
|
||||
},
|
||||
expiresEnterpriseAlert:
|
||||
'ຄຳເຕືອນ: ໃບອະນຸຍາດເວີຊັນ Enterprise ຂອງທ່ານຈະໝົດອາຍຸໃນອີກ {0} ວັນ, ຟີເຈີທັງໝົດຂອງເວີຊັນ Enterprise ຈະບໍ່ສາມາດໃຊ້ໄດ້. ກະລຸນາຕໍ່ອາຍຸໃຫ້ທັນເວລາ.',
|
||||
expiresProAlert:
|
||||
@@ -4664,6 +4727,218 @@ const message = {
|
||||
masterOnlyPermissionHelper: 'ສິດນີ້ມີຜົນສະເພາະຢູ່ໃນໂນດຫຼັກເທົ່ານັ້ນ.',
|
||||
view: 'ເບິ່ງ',
|
||||
manage: 'ຈັດການ',
|
||||
authManage: 'ການຢືນຢັນ',
|
||||
auth: {
|
||||
providerNavigation: 'ຜູ້ໃຫ້ບໍລິການຢັ້ງຢືນ',
|
||||
providers: {
|
||||
ldap: 'AD/LDAP',
|
||||
passkey: 'Passkey',
|
||||
radius: 'Radius',
|
||||
oidc: 'OIDC',
|
||||
saml2: 'SAML2',
|
||||
cas: 'CAS',
|
||||
oauth2: 'OAuth2',
|
||||
dingtalk: 'DingTalk',
|
||||
feishu: 'Feishu',
|
||||
wecom: 'WeCom',
|
||||
},
|
||||
providerDescriptions: {
|
||||
ldap: 'ເຂົ້າກັນໄດ້ກັບ Active Directory, OpenLDAP, ແລະບໍລິການ LDAP ອື່ນໆ',
|
||||
passkey: 'ໃຊ້ຂໍ້ມູນປະຈຳຕົວຂອງອຸປະກອນສຳລັບການເຂົ້າສູ່ລະບົບແບບບໍ່ມີລະຫັດຜ່ານ',
|
||||
radius: 'ກວດສອບການເຂົ້າເຖິງເຄືອຂ່າຍຜ່ານບໍລິການ Radius',
|
||||
oidc: 'ເຊື່ອມຕໍ່ວິສາຫະກິດດຽວເຂົ້າສູ່ລະບົບດ້ວຍ OpenID Connect',
|
||||
saml2: 'ໃຊ້ SAML2 ສໍາລັບສະຫະພັນເອກກະລັກວິສາຫະກິດ',
|
||||
cas: 'ເຊື່ອມຕໍ່ການບໍລິການການພິສູດຢືນຢັນແບບສູນກາງສໍາລັບການເຂົ້າສູ່ລະບົບດຽວ',
|
||||
oauth2: 'ເຊື່ອມຕໍ່ການບໍລິການຕົວຕົນ OAuth2 ທີ່ເຂົ້າກັນໄດ້',
|
||||
dingtalk: 'ໃຊ້ຕົວຕົນຂອງອົງການ DingTalk ແລະການເຂົ້າສູ່ລະບົບ QR',
|
||||
feishu: 'ໃຊ້ຕົວຕົນຂອງອົງການ Feishu ແລະ synchronization ບັນຊີ',
|
||||
wecom: 'ພິສູດຢືນຢັນຕົວຕົນຂອງສະມາຊິກ WeCom',
|
||||
},
|
||||
planned: 'ວາງແຜນ',
|
||||
plannedTitle: 'ການຕັ້ງຄ່າການພິສູດຢືນຢັນ {0}',
|
||||
plannedDesc: 'ຜູ້ໃຫ້ບໍລິການການພິສູດຢືນຢັນນີ້ຖືກວາງແຜນໄວ້ ແລະຍັງບໍ່ສາມາດໃຊ້ໄດ້ເທື່ອ.',
|
||||
ldap: {
|
||||
enable: 'ເປີດໃຊ້',
|
||||
enabled: 'ເປີດໃຊ້ແລ້ວ',
|
||||
disabled: 'ປິດໃຊ້ງານ',
|
||||
connection: 'ການເຊື່ອມຕໍ່ພື້ນຖານ',
|
||||
connectionDesc: 'ຕັ້ງຄ່າບໍລິການໄດເລກະທໍລີ ແລະບັນຊີຜູກມັດທີ່ໃຊ້ເພື່ອຊອກຫາຜູ້ໃຊ້.',
|
||||
serverURL: 'URL ເຊີບເວີ',
|
||||
serverURLHelper: 'ຮອງຮັບ ldap:// ແລະ ldaps:// URLs.',
|
||||
userBaseDN: 'ຜູ້ໃຊ້ Base DN',
|
||||
userBaseDNHelper:
|
||||
'ເລີ່ມຕົ້ນ DN ສໍາລັບການຄົ້ນຫາຂອງຜູ້ໃຊ້ LDAP; ມັນສາມາດເປັນ OU, CN, ຫຼືຮາກໂດເມນ DN.',
|
||||
bindDN: 'ຜູກມັດ DN',
|
||||
bindPassword: 'ລະຫັດຜ່ານ',
|
||||
passwordSaved: 'ປ່ອຍຫວ່າງໄວ້ເພື່ອຮັກສາລະຫັດຜ່ານທີ່ບັນທຶກໄວ້',
|
||||
userSearch: 'ຄົ້ນຫາຜູ້ໃຊ້',
|
||||
userSearchDesc:
|
||||
'ກໍານົດຖານຄົ້ນຫາຂອງຜູ້ໃຊ້ແລະການກັ່ນຕອງ, ຫຼັງຈາກນັ້ນສ້າງແຜນທີ່ຄຸນລັກສະນະ LDAP ທີ່ໃຊ້ເປັນ 1Panel name.',
|
||||
userFilter: 'ຕົວກອງຜູ້ໃຊ້',
|
||||
userFilterTooltip: 'ແທນທີ່ %(user)s ດ້ວຍຊື່ຜູ້ໃຊ້ທີ່ໜີໄປ, ຫຼືດ້ວຍ * ສໍາລັບການອ່ານໄດເລກະທໍລີເຕັມ.',
|
||||
userFilterHelper: 'ຊື່ຜູ້ໃຊ້ຖືກຫລົບຫນີກ່ອນທີ່ພວກມັນຈະຖືກໃສ່ເຂົ້າໄປໃນຕົວກອງ LDAP.',
|
||||
attributeMap: 'ການສ້າງແຜນທີ່ຄຸນສົມບັດ',
|
||||
attributeMapTooltip: 'ການສ້າງແຜນທີ່ JSON ຈາກຊ່ອງຂໍ້ມູນ 1Panel name ໄປຫາຄຸນສົມບັດ LDAP.',
|
||||
attributeMapHelper: 'ຕັ້ງຄຸນສົມບັດ LDAP ແຜນທີ່ໃສ່ກັບຊ່ອງຂໍ້ມູນ 1Panel name.',
|
||||
advanced: 'ການຕັ້ງຄ່າຂັ້ນສູງ',
|
||||
advancedDesc: 'ຕັ້ງຄ່າ TLS ແລະ LDAP query paging.',
|
||||
strictSync: 'synchronization ຢ່າງເຂັ້ມງວດ',
|
||||
strictSyncTooltip:
|
||||
'ຫຼັງຈາກການນໍາເຂົ້າຄົບຖ້ວນສົມບູນ, ຜູ້ໃຊ້ທີ່ຂາດຫາຍໄປຈາກແຫຼ່ງ LDAP ນີ້ຖືກປິດໃຊ້ງານແຕ່ບໍ່ໄດ້ຖືກລຶບຖິ້ມ.',
|
||||
strictSyncHelper:
|
||||
'ນຳໃຊ້ກັບການນຳເຂົ້າເຕັມຮູບແບບເທົ່ານັ້ນ. ການນໍາເຂົ້າຜູ້ໃຊ້ທີ່ເລືອກບໍ່ເຄີຍປິດຜູ້ໃຊ້ອື່ນ.',
|
||||
skipTLSVerify: 'ຂ້າມການຢັ້ງຢືນ TLS',
|
||||
skipTLSVerifyTooltip: 'ປິດການໃຊ້ງານການຢັ້ງຢືນໃບຢັ້ງຢືນສໍາລັບການເຊື່ອມຕໍ່ LDAPS.',
|
||||
skipTLSVerifyHelper:
|
||||
'ໃຊ້ພຽງແຕ່ມີໃບຢັ້ງຢືນການເຊັນດ້ວຍຕົນເອງທີ່ເຊື່ອຖືໄດ້. ການຕັ້ງຄ່ານີ້ແມ່ນເປັນເອກະລາດຂອງການ synchronization ທີ່ເຄັ່ງຄັດ.',
|
||||
connectTimeout: 'ໝົດເວລາການເຊື່ອມຕໍ່ (ວິນາທີ)',
|
||||
searchPageSize: 'LDAP ຂະໜາດໜ້າສອບຖາມ',
|
||||
restore: 'ຟື້ນຟູ',
|
||||
testConnection: 'ທົດສອບການເຊື່ອມຕໍ່',
|
||||
testLogin: 'ທົດສອບການເຂົ້າສູ່ລະບົບ',
|
||||
userImport: 'ນໍາເຂົ້າຜູ້ໃຊ້',
|
||||
saveBeforeImport: 'ບັນທຶກການຕັ້ງຄ່າ AD/LDAP ໃນປັດຈຸບັນກ່ອນທີ່ຈະນໍາເຂົ້າຜູ້ໃຊ້.',
|
||||
format: 'ຮູບແບບ',
|
||||
restoreExample: 'ຟື້ນຟູຕົວຢ່າງ',
|
||||
mappingValid: 'ຖືກຕ້ອງ JSON; name ຖືກຕັ້ງຄ່າ.',
|
||||
mappingInvalid: 'ໃສ່ JSON ທີ່ຖືກຕ້ອງ.',
|
||||
mappingObject: 'ການສ້າງແຜນທີ່ຄຸນລັກສະນະຕ້ອງເປັນວັດຖຸ JSON.',
|
||||
mappingOnlyName: 'ຮອງຮັບພຽງແຕ່ການສ້າງແຜນທີ່ name.',
|
||||
mappingStringValues: 'ທຸກໆຄຸນລັກສະນະທີ່ເຮັດແຜນທີ່ຕ້ອງເປັນສະຕຣິງ.',
|
||||
mappingNameRequired: 'name ຕ້ອງເປັນສະຕຣິງທີ່ບໍ່ຫວ່າງເປົ່າ.',
|
||||
restored: 'ການຕັ້ງຄ່າທີ່ບັນທຶກໄວ້ຫຼ້າສຸດໄດ້ຖືກຟື້ນຟູຄືນມາ.',
|
||||
connectionTestSuccess: 'ການທົດສອບການເຊື່ອມຕໍ່ LDAP ສຳເລັດແລ້ວ.',
|
||||
recentTestSuccess: 'ການທົດສອບຄັ້ງສຸດທ້າຍປະສົບຜົນສໍາເລັດ: {0}',
|
||||
recentTestFailed: 'ການທົດສອບຄັ້ງສຸດທ້າຍລົ້ມເຫລວ: {0}',
|
||||
serverURLRequired: 'ໃສ່ URL ເຊີບເວີ LDAP.',
|
||||
serverURLInvalid: 'ໃຊ້ ldap:// ຫຼື ldaps:// URL ທີ່ຖືກຕ້ອງ.',
|
||||
userBaseDNRequired: 'ໃສ່ຜູ້ໃຊ້ Base DN.',
|
||||
bindDNRequired: 'ໃສ່ Bind DN.',
|
||||
passwordRequired: 'ໃສ່ລະຫັດຜ່ານ.',
|
||||
userFilterRequired: 'ໃສ່ຕົວກອງຜູ້ໃຊ້.',
|
||||
connectTimeoutRequired: 'ກະລຸນາໃສ່ການໝົດເວລາການເຊື່ອມຕໍ່.',
|
||||
searchPageSizeRequired: 'ໃສ່ຂະໜາດຂອງໜ້າສອບຖາມ LDAP.',
|
||||
sync: {
|
||||
title: 'ການຊິງຄ໌ທີ່ກໍານົດເວລາ',
|
||||
description: 'ອ່ານລາຍຊື່ LDAP ເຕັມໃນຕາຕະລາງແລະຮັກສາຜູ້ໃຊ້ LDAP ທີ່ນໍາເຂົ້າໃນ 1Panel.',
|
||||
enable: 'ເປີດໃຊ້ຕາຕະລາງ',
|
||||
enableHelper:
|
||||
'ເມື່ອປິດການໃຊ້ງານ, ການປະຕິບັດອັດຕະໂນມັດຢຸດເຊົາ; ການ synchronization ຄູ່ມືຍັງມີຢູ່.',
|
||||
schedule: 'ຕາຕະລາງ',
|
||||
daily: 'ປະຈໍາວັນ',
|
||||
weekly: 'ອາທິດ',
|
||||
customCron: 'Cron ແບບກຳນົດເອງ',
|
||||
preview: 'ເບິ່ງຕົວຢ່າງ',
|
||||
previewTitle: 'ການດຳເນີນການ 5 ຄັ້ງຕໍ່ໄປ',
|
||||
previewEmpty: 'ບໍ່ມີເວລາປະຕິບັດ',
|
||||
cronHelper: 'ໃຊ້ການສະແດງອອກ Cron ຫ້າຊ່ອງມາດຕະຖານ: ນາທີ, ຊົ່ວໂມງ, ມື້, ເດືອນ, ມື້ເຮັດວຽກ.',
|
||||
autoImport: 'ນໍາເຂົ້າຜູ້ໃຊ້ໃຫມ່',
|
||||
autoImportHelper:
|
||||
'ເມື່ອປິດໃຊ້ງານ, ມີພຽງແຕ່ຕົວລະບຸໄດເລກະທໍລີ ແລະສະຖານະທີ່ຖືກຮັກສາໄວ້ສໍາລັບຜູ້ໃຊ້ LDAP ທີ່ນໍາເຂົ້າມາ; ບໍ່ມີຜູ້ໃຊ້ໃຫມ່ຖືກສ້າງຂຶ້ນ.',
|
||||
defaultRole: 'ບົດບາດຜູ້ໃຊ້ໃຫມ່',
|
||||
defaultRolePlaceholder: 'ເລືອກບົດບາດ',
|
||||
defaultRoleHelper: 'ນຳໃຊ້ກັບຜູ້ໃຊ້ທີ່ສ້າງຂຶ້ນໂດຍການຊິງໂຄຣໄນກຳນົດເວລາເທົ່ານັ້ນ.',
|
||||
defaultRoleRequired: 'ເລືອກບົດບາດສຳລັບຜູ້ໃຊ້ LDAP ໃໝ່.',
|
||||
strictSyncHelper:
|
||||
'ຜູ້ໃຊ້ທີ່ຂາດຫາຍໄປຈາກການສອບຖາມເຕັມທີ່ຖືກປິດໃຊ້ງານແລະເຊດຊັນຂອງພວກເຂົາຖືກລຶບລ້າງ; ຜູ້ໃຊ້, ພາລະບົດບາດ, ແລະການອະນຸຍາດບໍ່ໄດ້ຖືກລຶບ.',
|
||||
safetyTitle:
|
||||
'ຜູ້ໃຊ້ທີ່ຂາດໄປແມ່ນໄດ້ຮັບການປະຕິບັດພຽງແຕ່ຫຼັງຈາກການສອບຖາມເຕັມ LDAP ທີ່ສົມບູນ',
|
||||
safetyDescription:
|
||||
'ການສອບຖາມທີ່ລົ້ມເຫລວ, ໝົດເວລາ, ຫຼືຜົນຂອງ paged ບໍ່ຄົບຖ້ວນບໍ່ເຄີຍປ່ຽນສະຖານະຜູ້ໃຊ້. ຂອບເຂດການຊິ້ງຂໍ້ມູນປະຕິບັດຕາມຜູ້ໃຊ້ Base DN, ການກັ່ນຕອງ, ແລະການສ້າງແຜນທີ່ຄຸນລັກສະນະ.',
|
||||
runNow: 'ຊິ້ງຂໍ້ມູນດຽວນີ້',
|
||||
lastRunSuccess: 'ການຊິ້ງຂໍ້ມູນຫຼ້າສຸດສຳເລັດແລ້ວ: {0}',
|
||||
lastRunFailed: 'ການຊິ້ງຂໍ້ມູນຫຼ້າສຸດລົ້ມເຫລວ: {0}',
|
||||
lastRunRunning: 'ເລີ່ມການຊິ້ງຂໍ້ມູນ: {0}',
|
||||
sourceDisabled: 'ເປີດໃຊ້ ແລະບັນທຶກ AD/LDAP ກ່ອນທີ່ຈະດໍາເນີນການ synchronization.',
|
||||
cronRequired: 'ໃສ່ການສະແດງອອກ Cron.',
|
||||
saveBeforeRun: 'ບັນທຶກການຕັ້ງຄ່າ synchronization ກ່ອນທີ່ຈະດໍາເນີນການວຽກງານ.',
|
||||
runConfirmTitle: 'ດໍາເນີນການ synchronization ທີ່ເຄັ່ງຄັດ',
|
||||
runConfirmDescription:
|
||||
'ຜູ້ໃຊ້ LDAP ຫາຍໄປຈາກການສອບຖາມເຕັມທີ່ຈະຖືກປິດໃຊ້ງານ ແລະເຊດຊັນທີ່ເຄື່ອນໄຫວຂອງເຂົາເຈົ້າຖືກລຶບລ້າງ. ສືບຕໍ່?',
|
||||
runSuccess: 'ການຊິ້ງຂໍ້ມູນ LDAP ສຳເລັດແລ້ວ.',
|
||||
weekdays: {
|
||||
0: 'ວັນອາທິດ',
|
||||
1: 'ວັນຈັນ',
|
||||
2: 'ວັນອັງຄານ',
|
||||
3: 'ວັນພຸດ',
|
||||
4: 'ວັນພະຫັດ',
|
||||
5: 'ວັນສຸກ',
|
||||
6: 'ວັນເສົາ',
|
||||
},
|
||||
},
|
||||
syncLogs: {
|
||||
title: 'ບັນທຶກການຊິ້ງຂໍ້ມູນ',
|
||||
description: 'ກວດເບິ່ງຜົນການຊິງຄ໌ LDAP ທີ່ກຳນົດເວລາ ແລະຄູ່ມື.',
|
||||
startedAt: 'ເວລາເລີ່ມຕົ້ນ',
|
||||
trigger: 'ວິທີເລີ່ມ',
|
||||
manual: 'ດ້ວຍຕົນເອງ',
|
||||
scheduled: 'ກຳນົດເວລາ',
|
||||
success: 'ສຳເລັດ',
|
||||
failed: 'ລົ້ມເຫລວ',
|
||||
running: 'ກຳລັງດຳເນີນການ',
|
||||
result: 'ຜົນໄດ້ຮັບ',
|
||||
resultSummary: 'ສ້າງ {0}, ອັບເດດ {1}, ຂາດ {2}',
|
||||
duration: 'ໄລຍະເວລາ',
|
||||
action: 'ການປະຕິບັດ',
|
||||
},
|
||||
testLoginTitle: 'ທົດສອບການເຂົ້າສູ່ລະບົບ AD/LDAP',
|
||||
testLoginDesc:
|
||||
'ຜູກມັດກັບຂໍ້ມູນປະຈຳຕົວຜູ້ໃຊ້ AD/LDAP ເພື່ອທົດສອບການພິສູດຢືນຢັນເທົ່ານັ້ນ. ບໍ່ມີເຊດຊັນ 1Panel ຖືກສ້າງຂຶ້ນ.',
|
||||
ldapUsername: 'ຊື່ຜູ້ໃຊ້ LDAP',
|
||||
usernameRequired: 'ໃສ່ຊື່ຜູ້ໃຊ້ LDAP.',
|
||||
startTest: 'ເລີ່ມການທົດສອບ',
|
||||
testLoginSuccess: 'ການພິສູດຢືນຢັນສຳເລັດແລ້ວ.',
|
||||
testLoginSuccessWithDN: 'ການພິສູດຢືນຢັນສຳເລັດແລ້ວ. ຜູ້ໃຊ້ DN: {0}',
|
||||
import: {
|
||||
title: 'ນໍາເຂົ້າຜູ້ໃຊ້ AD/LDAP',
|
||||
source: 'ແຫຼ່ງຂໍ້ມູນ: AD/LDAP directory',
|
||||
lastRead: 'ອ່ານຫຼ້າສຸດ: {0}',
|
||||
cacheHit: 'ຜົນໄດ້ຮັບຈາກຖານຄວາມຈໍາ',
|
||||
keywordPlaceholder: 'ຊອກຫາຊື່ຜູ້ໃຊ້',
|
||||
search: 'ຊອກຫາ',
|
||||
refresh: 'ອ່ານຈາກ LDAP',
|
||||
refreshTip: 'ບໍ່ສົນໃຈ cache ໄລຍະສັ້ນແລະອ່ານລາຍຊື່ LDAP ອີກເທື່ອຫນຶ່ງ.',
|
||||
loadFailed: 'ລົ້ມເຫລວໃນການອ່ານລາຍຊື່ LDAP.',
|
||||
retry: 'ລອງໃໝ່',
|
||||
noData: 'ບໍ່ພົບຜູ້ໃຊ້ໄດເລກະທໍລີ.',
|
||||
username: 'ຊື່ຜູ້ໃຊ້',
|
||||
status: 'ສະຖານະ',
|
||||
changes: 'ການປ່ຽນແປງ',
|
||||
noChanges: 'ບໍ່ມີການປ່ຽນແປງ',
|
||||
importable: 'ພ້ອມທີ່ຈະນໍາເຂົ້າ',
|
||||
updateAvailable: 'ມີອັບເດດ',
|
||||
upToDate: 'ເຖິງວັນທີ',
|
||||
conflict: 'ຊື່ຂັດກັນ',
|
||||
selectedCount: 'ເລືອກ {0} ແລ້ວ',
|
||||
totalCount: '{0} ຜູ້ໃຊ້',
|
||||
newUserRole: 'ບົດບາດຜູ້ໃຊ້ໃຫມ່',
|
||||
newUserRoleRequired: 'ເລືອກບົດບາດສຳລັບຜູ້ໃຊ້ໃໝ່.',
|
||||
noNewUsers: 'ບໍ່ມີຜູ້ໃຊ້ໃຫມ່ໃນການດໍາເນີນງານນີ້.',
|
||||
roleOnlyForNewUsers: 'ບົດບາດທີ່ເລືອກແມ່ນໃຊ້ກັບຜູ້ໃຊ້ທີ່ສ້າງຂຶ້ນໃໝ່ເທົ່ານັ້ນ.',
|
||||
strictOff: 'ການຊິ້ງຂໍ້ມູນຢ່າງເຂັ້ມງວດຖືກປິດໄວ້. ການນໍາເຂົ້າຢ່າງເຕັມທີ່ຈະບໍ່ປິດຜູ້ໃຊ້.',
|
||||
importSelected: 'ເລືອກການນຳເຂົ້າ/ອັບເດດ ({0})',
|
||||
importAll: 'ນຳເຂົ້າ/ອັບເດດທັງໝົດ ({0})',
|
||||
previewTitle: 'ຢືນຢັນການນໍາເຂົ້າເຕັມ',
|
||||
previewDesc: 'ລາຍຊື່ LDAP ຄົບຖ້ວນໄດ້ຖືກອ່ານແລ້ວ. ຄໍາຄົ້ນຫາບໍ່ຈໍາກັດການປະຕິບັດນີ້.',
|
||||
created: 'ສ້າງ',
|
||||
updated: 'ອັບເດດ',
|
||||
unchanged: 'ບໍ່ປ່ຽນແປງ',
|
||||
conflicts: 'ຂໍ້ຂັດແຍ່ງ',
|
||||
missing: 'ປິດໃຊ້ງານ',
|
||||
reactivated: 'ເປີດໃຊ້ຄືນໃໝ່',
|
||||
strictWarning:
|
||||
'ການຊິ້ງຂໍ້ມູນຢ່າງເຂັ້ມງວດຖືກເປີດໃຊ້ງານ. ຜູ້ໃຊ້ທີ່ຂາດຫາຍໄປຈາກ LDAP ບໍ່ສາມາດເຂົ້າສູ່ລະບົບໄດ້, ແຕ່ບັນທຶກ, ບົດບາດ, ແລະການອະນຸຍາດຂອງເຂົາເຈົ້າຖືກຮັກສາໄວ້.',
|
||||
missingUsers: 'ຜູ້ໃຊ້ຫາຍໄປຈາກ LDAP',
|
||||
missingScope: 'ພຽງແຕ່ແຫຼ່ງ LDAP ນີ້ໄດ້ຮັບຜົນກະທົບ.',
|
||||
willDisable: 'ຈະຖືກປິດໃຊ້ງານ',
|
||||
confirmAll: 'ຢືນຢັນການນໍາເຂົ້າ',
|
||||
confirmAllWithMissing: 'ຢືນຢັນການນຳເຂົ້າ ແລະປິດໃຊ້ງານຜູ້ໃຊ້ {0} ຄົນ',
|
||||
executeSuccess: 'ຜູ້ໃຊ້ LDAP ຖືກປະມວນຜົນສຳເລັດແລ້ວ.',
|
||||
queryExpired: 'ຜົນການຄົ້ນຫາໄດເລກະທໍລີຫມົດອາຍຸ. ອ່ານຈາກ LDAP ອີກເທື່ອຫນຶ່ງ.',
|
||||
planIncomplete: 'ການອ່ານໄດເລກະທໍລີເຕັມບໍ່ຄົບຖ້ວນ ແລະບໍ່ສາມາດດໍາເນີນການໄດ້.',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
app: {
|
||||
app: 'ແອັບ',
|
||||
|
||||
@@ -4298,6 +4298,70 @@ const message = {
|
||||
mountPoint: 'Titik lekap',
|
||||
},
|
||||
xpack: {
|
||||
ldap: {
|
||||
source: 'Sumber',
|
||||
directoryMissing: 'Tiada dalam LDAP',
|
||||
localCredentialsManaged:
|
||||
'Nama pengguna dan kata laluan diurus oleh LDAP dan tidak boleh diubah secara setempat.',
|
||||
sources: {
|
||||
local: 'Setempat',
|
||||
ldap: 'LDAP',
|
||||
},
|
||||
importUsers: 'Import pengguna AD/LDAP',
|
||||
searchUsersPlaceholder: 'Cari nama pengguna',
|
||||
readFromLDAP: 'Baca daripada LDAP',
|
||||
selectedUsers: '{0} dipilih',
|
||||
queriedAt: 'Masa dibaca',
|
||||
cachedResult: 'Hasil cache',
|
||||
roleForNewUsers: 'Peranan untuk pengguna baharu',
|
||||
selectRole: 'Pilih peranan',
|
||||
roleOnlyForNewUsers: 'Peranan diperlukan hanya apabila import mencipta pengguna.',
|
||||
roleRequiredForNewUsers: 'Pilih peranan untuk pengguna LDAP baharu.',
|
||||
changedFields: 'Medan ditukar',
|
||||
importSelected: 'Import dipilih',
|
||||
importAll: 'Import semua',
|
||||
importPreview: 'Pratonton import AD/LDAP',
|
||||
importCompleted: 'Import AD/LDAP selesai',
|
||||
incompletePreview: 'Direktori LDAP dibaca tidak lengkap. Baca dari LDAP sekali lagi.',
|
||||
missingUsersWarning: 'Pengguna yang hilang dari LDAP akan dilumpuhkan oleh penyegerakan yang ketat.',
|
||||
missingUsersWarningDetail: '{0} pengguna LDAP tempatan tidak akan dapat log masuk lagi.',
|
||||
action: 'Tindakan',
|
||||
reason: 'Sebab',
|
||||
noImportChanges: 'Tiada perubahan import',
|
||||
confirmImport: 'Sahkan import',
|
||||
created: 'Buat',
|
||||
updated: 'Kemas kini',
|
||||
reactivated: 'Aktifkan semula',
|
||||
unchanged: 'Tidak berubah',
|
||||
conflicts: 'Konflik',
|
||||
missing: 'hilang',
|
||||
missingUsersConfirm: '{0} pengguna yang tiada dalam LDAP akan dinyahdayakan dan dilog keluar. Teruskan?',
|
||||
strictSyncConfirm: 'Sahkan penyegerakan yang ketat',
|
||||
status: {
|
||||
importable: 'Pengguna baharu',
|
||||
update_available: 'Kemas kini tersedia',
|
||||
up_to_date: 'Terkini',
|
||||
conflict: 'Konflik',
|
||||
},
|
||||
fields: {
|
||||
name: 'Nama pengguna',
|
||||
externalDN: 'Direktori DN',
|
||||
externalID: 'ID Luaran',
|
||||
authSourceStatus: 'Status pengesahan',
|
||||
},
|
||||
actions: {
|
||||
created: 'Buat',
|
||||
updated: 'Kemas kini',
|
||||
reactivated: 'Aktifkan semula',
|
||||
unchanged: 'Tidak berubah',
|
||||
skipped: 'Dilangkau',
|
||||
conflicts: 'Konflik',
|
||||
conflict: 'Konflik',
|
||||
missing: 'Lumpuhkan',
|
||||
errors: 'ralat',
|
||||
error: 'ralat',
|
||||
},
|
||||
},
|
||||
expiresEnterpriseAlert:
|
||||
'Peringatan mesra: Lesen Enterprise Edition anda akan tamat dalam {0} hari, dan semua ciri Enterprise Edition tidak lagi dapat diakses. Sila perbaharui segera untuk memastikan penggunaan berterusan.',
|
||||
expiresProAlert:
|
||||
@@ -4855,6 +4919,221 @@ const message = {
|
||||
masterOnlyPermissionHelper: 'Kebenaran ini hanya berkuat kuasa pada nod utama.',
|
||||
view: 'Lihat',
|
||||
manage: 'Urus',
|
||||
authManage: 'Pengurusan pengesahan',
|
||||
auth: {
|
||||
providerNavigation: 'Pembekal pengesahan',
|
||||
providers: {
|
||||
ldap: 'AD/LDAP',
|
||||
passkey: 'Passkey',
|
||||
radius: 'Radius',
|
||||
oidc: 'OIDC',
|
||||
saml2: 'SAML2',
|
||||
cas: 'CAS',
|
||||
oauth2: 'OAuth2',
|
||||
dingtalk: 'DingTalk',
|
||||
feishu: 'Feishu',
|
||||
wecom: 'WeCom',
|
||||
},
|
||||
providerDescriptions: {
|
||||
ldap: 'Serasi dengan Active Directory, OpenLDAP dan perkhidmatan LDAP yang lain',
|
||||
passkey: 'Gunakan bukti kelayakan peranti untuk log masuk tanpa kata laluan',
|
||||
radius: 'Sahkan akses rangkaian melalui perkhidmatan Radius',
|
||||
oidc: 'Sambungkan log masuk tunggal perusahaan dengan OpenID Connect',
|
||||
saml2: 'Gunakan SAML2 untuk persekutuan identiti perusahaan',
|
||||
cas: 'Sambungkan perkhidmatan pengesahan berpusat untuk log masuk tunggal',
|
||||
oauth2: 'Sambungkan perkhidmatan identiti OAuth2 yang serasi',
|
||||
dingtalk: 'Gunakan identiti organisasi DingTalk dan log masuk QR',
|
||||
feishu: 'Gunakan identiti organisasi Feishu dan penyegerakan akaun',
|
||||
wecom: 'Sahkan dengan identiti ahli WeCom',
|
||||
},
|
||||
planned: 'Terancang',
|
||||
plannedTitle: 'Tetapan pengesahan {0}',
|
||||
plannedDesc: 'Pembekal pengesahan ini telah dirancang dan belum tersedia lagi.',
|
||||
ldap: {
|
||||
enable: 'Dayakan',
|
||||
enabled: 'Didayakan',
|
||||
disabled: 'Dilumpuhkan',
|
||||
connection: 'Sambungan asas',
|
||||
connectionDesc:
|
||||
'Konfigurasikan perkhidmatan direktori dan akaun bind yang digunakan untuk mencari pengguna.',
|
||||
serverURL: 'URL pelayan',
|
||||
serverURLHelper: 'Menyokong URL ldap:// dan ldaps://.',
|
||||
userBaseDN: 'Pengguna Base DN',
|
||||
userBaseDNHelper:
|
||||
'Memulakan DN untuk carian pengguna LDAP; ia boleh menjadi OU, CN atau akar domain DN.',
|
||||
bindDN: 'Ikat DN',
|
||||
bindPassword: 'Kata laluan',
|
||||
passwordSaved: 'Biarkan kosong untuk menyimpan kata laluan yang disimpan',
|
||||
userSearch: 'Carian pengguna',
|
||||
userSearchDesc:
|
||||
'Tetapkan pangkalan carian dan penapis pengguna, kemudian petakan atribut LDAP yang digunakan sebagai 1Panel name.',
|
||||
userFilter: 'Penapis pengguna',
|
||||
userFilterTooltip:
|
||||
'Gantikan %(user)s dengan nama pengguna yang dilepaskan, atau dengan * untuk membaca direktori penuh.',
|
||||
userFilterHelper: 'Nama pengguna dikeluarkan sebelum ia dimasukkan ke dalam penapis LDAP.',
|
||||
attributeMap: 'Pemetaan atribut',
|
||||
attributeMapTooltip: 'Pemetaan JSON daripada medan 1Panel name kepada atribut LDAP.',
|
||||
attributeMapHelper: 'Tetapkan atribut LDAP yang dipetakan ke medan 1Panel name.',
|
||||
advanced: 'Tetapan lanjutan',
|
||||
advancedDesc: 'Konfigurasikan halaman pertanyaan TLS dan LDAP.',
|
||||
strictSync: 'Penyegerakan yang ketat',
|
||||
strictSyncTooltip:
|
||||
'Selepas import penuh lengkap, pengguna yang tiada daripada sumber LDAP ini dilumpuhkan tetapi tidak dipadamkan.',
|
||||
strictSyncHelper:
|
||||
'Hanya digunakan untuk import penuh yang lengkap. Mengimport pengguna terpilih tidak sekali-kali melumpuhkan pengguna lain.',
|
||||
skipTLSVerify: 'Langkau pengesahan TLS',
|
||||
skipTLSVerifyTooltip: 'Lumpuhkan pengesahan sijil untuk sambungan LDAPS.',
|
||||
skipTLSVerifyHelper:
|
||||
'Gunakan hanya dengan sijil yang ditandatangani sendiri yang dipercayai. Tetapan ini bebas daripada penyegerakan yang ketat.',
|
||||
connectTimeout: 'Tamat masa sambungan (saat)',
|
||||
searchPageSize: 'LDAP saiz halaman pertanyaan',
|
||||
restore: 'Pulihkan',
|
||||
testConnection: 'Uji sambungan',
|
||||
testLogin: 'Uji log masuk',
|
||||
userImport: 'Import pengguna',
|
||||
saveBeforeImport: 'Simpan tetapan AD/LDAP semasa sebelum mengimport pengguna.',
|
||||
format: 'Format',
|
||||
restoreExample: 'Pulihkan contoh',
|
||||
mappingValid: 'JSON sah; name dikonfigurasikan.',
|
||||
mappingInvalid: 'Masukkan JSON yang sah.',
|
||||
mappingObject: 'Pemetaan atribut mestilah objek JSON.',
|
||||
mappingOnlyName: 'Hanya pemetaan name disokong.',
|
||||
mappingStringValues: 'Setiap atribut yang dipetakan mestilah rentetan.',
|
||||
mappingNameRequired: 'name mestilah rentetan bukan kosong.',
|
||||
restored: 'Tetapan terakhir yang disimpan telah dipulihkan.',
|
||||
connectionTestSuccess: 'Ujian sambungan LDAP berjaya.',
|
||||
recentTestSuccess: 'Ujian terakhir berjaya: {0}',
|
||||
recentTestFailed: 'Ujian terakhir gagal: {0}',
|
||||
serverURLRequired: 'Masukkan URL pelayan LDAP.',
|
||||
serverURLInvalid: 'Gunakan URL ldap:// atau ldaps:// yang sah.',
|
||||
userBaseDNRequired: 'Masukkan Pengguna Base DN.',
|
||||
bindDNRequired: 'Masukkan Bind DN.',
|
||||
passwordRequired: 'Masukkan kata laluan.',
|
||||
userFilterRequired: 'Masukkan penapis pengguna.',
|
||||
connectTimeoutRequired: 'Masukkan tamat masa sambungan.',
|
||||
searchPageSizeRequired: 'Masukkan saiz halaman pertanyaan LDAP.',
|
||||
sync: {
|
||||
title: 'Penyegerakan berjadual',
|
||||
description:
|
||||
'Baca direktori LDAP penuh mengikut jadual dan kekalkan pengguna LDAP yang diimport dalam 1Panel.',
|
||||
enable: 'Dayakan jadual',
|
||||
enableHelper:
|
||||
'Apabila dilumpuhkan, pelaksanaan automatik berhenti; penyegerakan manual masih tersedia.',
|
||||
schedule: 'Jadual',
|
||||
daily: 'Setiap hari',
|
||||
weekly: 'Mingguan',
|
||||
customCron: 'Cron tersuai',
|
||||
preview: 'Pratonton',
|
||||
previewTitle: '5 pelaksanaan seterusnya',
|
||||
previewEmpty: 'Tiada masa pelaksanaan tersedia',
|
||||
cronHelper: 'Gunakan ungkapan Cron lima medan standard: minit, jam, hari, bulan, hari bekerja.',
|
||||
autoImport: 'Import pengguna baharu',
|
||||
autoImportHelper:
|
||||
'Apabila dilumpuhkan, hanya pengecam dan status direktori dikekalkan untuk pengguna LDAP yang diimport; tiada pengguna baharu dibuat.',
|
||||
defaultRole: 'Peranan pengguna baharu',
|
||||
defaultRolePlaceholder: 'Pilih peranan',
|
||||
defaultRoleHelper: 'Hanya terpakai kepada pengguna yang dibuat melalui penyegerakan berjadual.',
|
||||
defaultRoleRequired: 'Pilih peranan untuk pengguna LDAP baharu.',
|
||||
strictSyncHelper:
|
||||
'Pengguna yang tiada daripada pertanyaan penuh lengkap dilumpuhkan dan sesi mereka dikosongkan; pengguna, peranan dan kebenaran tidak dipadamkan.',
|
||||
safetyTitle: 'Pengguna yang hilang diproses hanya selepas pertanyaan penuh LDAP lengkap',
|
||||
safetyDescription:
|
||||
'Pertanyaan yang gagal, tamat masa atau hasil halaman yang tidak lengkap tidak pernah mengubah status pengguna. Skop penyegerakan mengikut Base DN Pengguna, penapis dan pemetaan atribut.',
|
||||
runNow: 'Segerakkan sekarang',
|
||||
lastRunSuccess: 'Penyegerakan terakhir berjaya: {0}',
|
||||
lastRunFailed: 'Penyegerakan terakhir gagal: {0}',
|
||||
lastRunRunning: 'Penyegerakan dimulakan: {0}',
|
||||
sourceDisabled: 'Dayakan dan simpan AD/LDAP sebelum menjalankan penyegerakan.',
|
||||
cronRequired: 'Masukkan ungkapan Cron.',
|
||||
saveBeforeRun: 'Simpan tetapan penyegerakan sebelum menjalankan tugas.',
|
||||
runConfirmTitle: 'Jalankan penyegerakan yang ketat',
|
||||
runConfirmDescription:
|
||||
'Pengguna LDAP yang hilang daripada pertanyaan penuh yang lengkap akan dilumpuhkan dan sesi aktif mereka dikosongkan. teruskan?',
|
||||
runSuccess: 'Penyegerakan LDAP selesai.',
|
||||
weekdays: {
|
||||
0: 'Ahad',
|
||||
1: 'Isnin',
|
||||
2: 'Selasa',
|
||||
3: 'Rabu',
|
||||
4: 'Khamis',
|
||||
5: 'Jumaat',
|
||||
6: 'Sabtu',
|
||||
},
|
||||
},
|
||||
syncLogs: {
|
||||
title: 'Segerakkan log',
|
||||
description: 'Semak keputusan penyegerakan LDAP yang dijadualkan dan manual.',
|
||||
startedAt: 'Masa mula',
|
||||
trigger: 'Cara pelaksanaan',
|
||||
manual: 'Manual',
|
||||
scheduled: 'Dijadualkan',
|
||||
success: 'Kejayaan',
|
||||
failed: 'gagal',
|
||||
running: 'Sedang berjalan',
|
||||
result: 'Hasilnya',
|
||||
resultSummary: 'Dicipta {0}, dikemas kini {1}, tiada {2}',
|
||||
duration: 'Tempoh',
|
||||
action: 'Tindakan',
|
||||
},
|
||||
testLoginTitle: 'Uji log masuk AD/LDAP',
|
||||
testLoginDesc:
|
||||
'Ikat dengan bukti kelayakan pengguna AD/LDAP untuk menguji pengesahan sahaja. Tiada sesi 1Panel dibuat.',
|
||||
ldapUsername: 'Nama pengguna LDAP',
|
||||
usernameRequired: 'Masukkan nama pengguna LDAP.',
|
||||
startTest: 'Mulakan ujian',
|
||||
testLoginSuccess: 'Pengesahan berjaya.',
|
||||
testLoginSuccessWithDN: 'Pengesahan berjaya. Pengguna DN: {0}',
|
||||
import: {
|
||||
title: 'Import pengguna AD/LDAP',
|
||||
source: 'Sumber data: direktori AD/LDAP',
|
||||
lastRead: 'Bacaan terakhir: {0}',
|
||||
cacheHit: 'Hasil cache',
|
||||
keywordPlaceholder: 'Cari nama pengguna',
|
||||
search: 'Cari',
|
||||
refresh: 'Baca daripada LDAP',
|
||||
refreshTip: 'Abaikan cache jangka pendek dan baca direktori LDAP sekali lagi.',
|
||||
loadFailed: 'Gagal membaca direktori LDAP.',
|
||||
retry: 'Cuba semula',
|
||||
noData: 'Tiada pengguna direktori ditemui.',
|
||||
username: 'Nama pengguna',
|
||||
status: 'Status',
|
||||
changes: 'Perubahan',
|
||||
noChanges: 'Tiada perubahan',
|
||||
importable: 'Sedia untuk diimport',
|
||||
updateAvailable: 'Kemas kini tersedia',
|
||||
upToDate: 'Terkini',
|
||||
conflict: 'Konflik nama',
|
||||
selectedCount: '{0} dipilih',
|
||||
totalCount: '{0} pengguna',
|
||||
newUserRole: 'Peranan pengguna baharu',
|
||||
newUserRoleRequired: 'Pilih peranan untuk pengguna baharu.',
|
||||
noNewUsers: 'Tiada pengguna baharu dalam operasi ini.',
|
||||
roleOnlyForNewUsers: 'Peranan yang dipilih hanya digunakan kepada pengguna yang baru dibuat.',
|
||||
strictOff: 'Penyegerakan yang ketat dilumpuhkan. Import penuh tidak akan melumpuhkan pengguna.',
|
||||
importSelected: 'Import/kemas kini dipilih ({0})',
|
||||
importAll: 'Import/kemas kini semua ({0})',
|
||||
previewTitle: 'Sahkan import penuh',
|
||||
previewDesc:
|
||||
'Direktori LDAP lengkap telah dibaca. Kata kunci carian tidak mengehadkan operasi ini.',
|
||||
created: 'Buat',
|
||||
updated: 'Kemas kini',
|
||||
unchanged: 'Tidak berubah',
|
||||
conflicts: 'Konflik',
|
||||
missing: 'Lumpuhkan',
|
||||
reactivated: 'Aktifkan semula',
|
||||
strictWarning:
|
||||
'Penyegerakan yang ketat didayakan. Pengguna yang tiada dari LDAP tidak boleh log masuk, tetapi rekod, peranan dan kebenaran mereka dikekalkan.',
|
||||
missingUsers: 'Pengguna hilang dari LDAP',
|
||||
missingScope: 'Hanya sumber LDAP ini terjejas.',
|
||||
willDisable: 'Akan dilumpuhkan',
|
||||
confirmAll: 'Sahkan import',
|
||||
confirmAllWithMissing: 'Sahkan import dan nyahdayakan {0} pengguna',
|
||||
executeSuccess: 'Pengguna LDAP telah berjaya diproses.',
|
||||
queryExpired: 'Keputusan direktori telah tamat tempoh. Baca dari LDAP sekali lagi.',
|
||||
planIncomplete: 'Direktori penuh dibaca tidak lengkap dan tidak boleh dilaksanakan.',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
app: {
|
||||
app: 'APP',
|
||||
|
||||
@@ -4438,6 +4438,70 @@ const message = {
|
||||
noFail: 'Falha na montagem não afeta a inicialização do sistema',
|
||||
},
|
||||
xpack: {
|
||||
ldap: {
|
||||
source: 'Origem',
|
||||
directoryMissing: 'Não encontrado no LDAP',
|
||||
localCredentialsManaged:
|
||||
'O nome de usuário e a senha são gerenciados pelo LDAP e não podem ser alterados localmente.',
|
||||
sources: {
|
||||
local: 'Local',
|
||||
ldap: 'LDAP',
|
||||
},
|
||||
importUsers: 'Importar usuários AD/LDAP',
|
||||
searchUsersPlaceholder: 'Pesquisar nome de usuário',
|
||||
readFromLDAP: 'Leia de LDAP',
|
||||
selectedUsers: '{0} selecionado',
|
||||
queriedAt: 'Lido em',
|
||||
cachedResult: 'Resultado armazenado em cache',
|
||||
roleForNewUsers: 'Função para novos usuários',
|
||||
selectRole: 'Selecione uma função',
|
||||
roleOnlyForNewUsers: 'Uma função é necessária somente quando a importação cria usuários.',
|
||||
roleRequiredForNewUsers: 'Selecione uma função para novos usuários LDAP.',
|
||||
changedFields: 'Campos alterados',
|
||||
importSelected: 'Importação selecionada',
|
||||
importAll: 'Importar tudo',
|
||||
importPreview: 'Pré-visualização da importação AD/LDAP',
|
||||
importCompleted: 'Importação AD/LDAP concluída',
|
||||
incompletePreview: 'A leitura do diretório LDAP estava incompleta. Leia LDAP novamente.',
|
||||
missingUsersWarning: 'Os usuários ausentes de LDAP serão desabilitados pela sincronização estrita.',
|
||||
missingUsersWarningDetail: '{0} usuários LDAP locais não poderão mais fazer login.',
|
||||
action: 'Ação',
|
||||
reason: 'Razão',
|
||||
noImportChanges: 'Nenhuma alteração de importação',
|
||||
confirmImport: 'Confirmar importação',
|
||||
created: 'Criar',
|
||||
updated: 'Atualizar',
|
||||
reactivated: 'Reativar',
|
||||
unchanged: 'Inalterado',
|
||||
conflicts: 'Conflitos',
|
||||
missing: 'Desaparecido',
|
||||
missingUsersConfirm: 'Usuários {0} ausentes em LDAP serão desabilitados e desconectados. Continuar?',
|
||||
strictSyncConfirm: 'Confirme a sincronização estrita',
|
||||
status: {
|
||||
importable: 'Novo usuário',
|
||||
update_available: 'Atualização disponível',
|
||||
up_to_date: 'Atualizado',
|
||||
conflict: 'Conflito',
|
||||
},
|
||||
fields: {
|
||||
name: 'Nome de usuário',
|
||||
externalDN: 'Diretório DN',
|
||||
externalID: 'ID externo',
|
||||
authSourceStatus: 'Status de autenticação',
|
||||
},
|
||||
actions: {
|
||||
created: 'Criar',
|
||||
updated: 'Atualizar',
|
||||
reactivated: 'Reativar',
|
||||
unchanged: 'Inalterado',
|
||||
skipped: 'Ignorado',
|
||||
conflicts: 'Conflito',
|
||||
conflict: 'Conflito',
|
||||
missing: 'Desativar',
|
||||
errors: 'Erro',
|
||||
error: 'Erro',
|
||||
},
|
||||
},
|
||||
expiresEnterpriseAlert:
|
||||
'Lembrete: Sua licença da Enterprise Edition expira em {0} dias. Depois disso, todos os recursos da Enterprise Edition deixarão de ficar disponíveis. Renove a licença para manter o uso contínuo.',
|
||||
expiresProAlert:
|
||||
@@ -4996,6 +5060,223 @@ const message = {
|
||||
masterOnlyPermissionHelper: 'Esta permissão só tem efeito no nó principal.',
|
||||
view: 'Visualizar',
|
||||
manage: 'Gerenciar',
|
||||
authManage: 'Gerenciamento de autenticação',
|
||||
auth: {
|
||||
providerNavigation: 'Provedores de autenticação',
|
||||
providers: {
|
||||
ldap: 'AD/LDAP',
|
||||
passkey: 'Passkey',
|
||||
radius: 'Radius',
|
||||
oidc: 'OIDC',
|
||||
saml2: 'SAML2',
|
||||
cas: 'CAS',
|
||||
oauth2: 'OAuth2',
|
||||
dingtalk: 'DingTalk',
|
||||
feishu: 'Feishu',
|
||||
wecom: 'WeCom',
|
||||
},
|
||||
providerDescriptions: {
|
||||
ldap: 'Compatível com Active Directory, OpenLDAP e outros serviços LDAP',
|
||||
passkey: 'Use credenciais do dispositivo para login sem senha',
|
||||
radius: 'Autenticar o acesso à rede através de um serviço Radius',
|
||||
oidc: 'Conecte o logon único empresarial com OpenID Connect',
|
||||
saml2: 'Use SAML2 para federação de identidade corporativa',
|
||||
cas: 'Conecte um serviço de autenticação centralizado para logon único',
|
||||
oauth2: 'Conecte um serviço de identidade OAuth2 compatível',
|
||||
dingtalk: 'Use a identidade da organização DingTalk e login QR',
|
||||
feishu: 'Use a identidade da organização Feishu e a sincronização de contas',
|
||||
wecom: 'Autenticar com identidade de membro WeCom',
|
||||
},
|
||||
planned: 'Planejado',
|
||||
plannedTitle: 'Configurações de autenticação {0}',
|
||||
plannedDesc: 'Este provedor de autenticação está planejado e ainda não está disponível.',
|
||||
ldap: {
|
||||
enable: 'Habilitar',
|
||||
enabled: 'Habilitado',
|
||||
disabled: 'Desativado',
|
||||
connection: 'Conexão básica',
|
||||
connectionDesc:
|
||||
'Configure o serviço de diretório e a conta de ligação usada para procurar usuários.',
|
||||
serverURL: 'URL do servidor',
|
||||
serverURLHelper: 'Suporta URLs ldap:// e ldaps://.',
|
||||
userBaseDN: 'Base DN do usuário',
|
||||
userBaseDNHelper:
|
||||
'DN inicial para pesquisas de usuários LDAP; pode ser uma OU, um CN ou o DN raiz do domínio.',
|
||||
bindDN: 'DN de vínculo',
|
||||
bindPassword: 'Senha',
|
||||
passwordSaved: 'Deixe em branco para manter a senha salva',
|
||||
userSearch: 'Pesquisa de usuário',
|
||||
userSearchDesc:
|
||||
'Configure a base e o filtro de pesquisa e mapeie o atributo LDAP para o campo name do 1Panel.',
|
||||
userFilter: 'Filtro de usuário',
|
||||
userFilterTooltip:
|
||||
'Substitua %(user)s pelo nome de usuário com escape ou por * para uma leitura completa do diretório.',
|
||||
userFilterHelper: 'Os nomes de usuário têm escape antes de serem inseridos no filtro LDAP.',
|
||||
attributeMap: 'Mapeamento de atributos',
|
||||
attributeMapTooltip: 'Mapeamento JSON do campo name do 1Panel para um atributo LDAP.',
|
||||
attributeMapHelper: 'Configure o atributo LDAP mapeado para o campo name do 1Panel.',
|
||||
advanced: 'Configurações avançadas',
|
||||
advancedDesc: 'Configure a paginação de consulta TLS e LDAP.',
|
||||
strictSync: 'Sincronização estrita',
|
||||
strictSyncTooltip:
|
||||
'Após uma importação completa, os usuários ausentes nesta origem LDAP serão desativados, mas não excluídos.',
|
||||
strictSyncHelper:
|
||||
'Aplica-se apenas a uma importação completa. A importação de usuários selecionados nunca desabilita outros usuários.',
|
||||
skipTLSVerify: 'Ignorar verificação TLS',
|
||||
skipTLSVerifyTooltip: 'Desative a verificação de certificado para conexões LDAPS.',
|
||||
skipTLSVerifyHelper:
|
||||
'Use somente com um certificado autoassinado confiável. Esta configuração é independente da sincronização estrita.',
|
||||
connectTimeout: 'Tempo limite de conexão (segundos)',
|
||||
searchPageSize: 'Tamanho da página de consulta LDAP',
|
||||
restore: 'Restaurar',
|
||||
testConnection: 'Testar conexão',
|
||||
testLogin: 'Testar login',
|
||||
userImport: 'Importar usuários',
|
||||
saveBeforeImport: 'Salve as configurações AD/LDAP atuais antes de importar usuários.',
|
||||
format: 'Formato',
|
||||
restoreExample: 'Exemplo de restauração',
|
||||
mappingValid: 'JSON válido; name está configurado.',
|
||||
mappingInvalid: 'Insira JSON válido.',
|
||||
mappingObject: 'O mapeamento de atributos deve ser um objeto JSON.',
|
||||
mappingOnlyName: 'Somente o mapeamento name é suportado.',
|
||||
mappingStringValues: 'Cada atributo mapeado deve ser uma string.',
|
||||
mappingNameRequired: 'name deve ser uma sequência não vazia.',
|
||||
restored: 'As últimas configurações salvas foram restauradas.',
|
||||
connectionTestSuccess: 'O teste de conexão LDAP foi bem-sucedido.',
|
||||
recentTestSuccess: 'Último teste bem-sucedido: {0}',
|
||||
recentTestFailed: 'Último teste falhou: {0}',
|
||||
serverURLRequired: 'Insira a URL do servidor LDAP.',
|
||||
serverURLInvalid: 'Use um URL ldap:// ou ldaps:// válido.',
|
||||
userBaseDNRequired: 'Informe a Base DN do usuário.',
|
||||
bindDNRequired: 'Insira a ligação DN.',
|
||||
passwordRequired: 'Digite a senha.',
|
||||
userFilterRequired: 'Insira o filtro do usuário.',
|
||||
connectTimeoutRequired: 'Insira o tempo limite de conexão.',
|
||||
searchPageSizeRequired: 'Insira o tamanho da página de consulta LDAP.',
|
||||
sync: {
|
||||
title: 'Sincronização agendada',
|
||||
description:
|
||||
'Leia o diretório LDAP completo de acordo com uma programação e mantenha os usuários LDAP importados em 1Panel.',
|
||||
enable: 'Ativar agendamento',
|
||||
enableHelper:
|
||||
'Quando desativado, a execução automática é interrompida; a sincronização manual permanece disponível.',
|
||||
schedule: 'Cronograma',
|
||||
daily: 'Diariamente',
|
||||
weekly: 'Semanalmente',
|
||||
customCron: 'Cron personalizado',
|
||||
preview: 'Visualização',
|
||||
previewTitle: 'Próximas 5 execuções',
|
||||
previewEmpty: 'Não há tempo de execução disponível',
|
||||
cronHelper:
|
||||
'Use uma expressão Cron padrão de cinco campos: minuto, hora, dia, mês, dia da semana.',
|
||||
autoImport: 'Importar novos usuários',
|
||||
autoImportHelper:
|
||||
'Quando desativado, apenas os identificadores e o status do diretório são mantidos para usuários LDAP importados; nenhum novo usuário é criado.',
|
||||
defaultRole: 'Nova função de usuário',
|
||||
defaultRolePlaceholder: 'Selecione uma função',
|
||||
defaultRoleHelper: 'Aplica-se apenas a usuários criados por sincronização agendada.',
|
||||
defaultRoleRequired: 'Selecione uma função para novos usuários LDAP.',
|
||||
strictSyncHelper:
|
||||
'Os usuários ausentes em uma consulta completa são desabilitados e suas sessões são apagadas; usuários, funções e permissões não são excluídos.',
|
||||
safetyTitle: 'Usuários ausentes são processados somente após uma consulta completa LDAP',
|
||||
safetyDescription:
|
||||
'Uma consulta com falha, tempo limite ou resultado paginado incompleto nunca altera o status do usuário. O escopo de sincronização segue o usuário Base DN, filtro e mapeamento de atributos.',
|
||||
runNow: 'Sincronize agora',
|
||||
lastRunSuccess: 'Última sincronização bem-sucedida: {0}',
|
||||
lastRunFailed: 'Falha na última sincronização: {0}',
|
||||
lastRunRunning: 'Sincronização iniciada: {0}',
|
||||
sourceDisabled: 'Habilite e salve AD/LDAP antes de executar a sincronização.',
|
||||
cronRequired: 'Insira uma expressão Cron.',
|
||||
saveBeforeRun: 'Salve as configurações de sincronização antes de executar a tarefa.',
|
||||
runConfirmTitle: 'Execute a sincronização estrita',
|
||||
runConfirmDescription:
|
||||
'Os usuários LDAP ausentes em uma consulta completa serão desabilitados e suas sessões ativas serão apagadas. Continuar?',
|
||||
runSuccess: 'Sincronização LDAP concluída.',
|
||||
weekdays: {
|
||||
0: 'Domingo',
|
||||
1: 'Segunda-feira',
|
||||
2: 'Terça-feira',
|
||||
3: 'Quarta-feira',
|
||||
4: 'Quinta-feira',
|
||||
5: 'Sexta-feira',
|
||||
6: 'Sábado',
|
||||
},
|
||||
},
|
||||
syncLogs: {
|
||||
title: 'Sincronizar registros',
|
||||
description: 'Revise os resultados da sincronização LDAP programada e manual.',
|
||||
startedAt: 'Hora de início',
|
||||
trigger: 'Tipo de execução',
|
||||
manual: 'Manual',
|
||||
scheduled: 'Agendado',
|
||||
success: 'Sucesso',
|
||||
failed: 'Falha',
|
||||
running: 'Em execução',
|
||||
result: 'Resultado',
|
||||
resultSummary: 'Criados {0}, atualizados {1}, ausentes {2}',
|
||||
duration: 'Duração',
|
||||
action: 'Ação',
|
||||
},
|
||||
testLoginTitle: 'Testar login AD/LDAP',
|
||||
testLoginDesc:
|
||||
'Vincule com uma credencial de usuário AD/LDAP apenas para testar a autenticação. Nenhuma sessão 1Panel é criada.',
|
||||
ldapUsername: 'Nome de usuário LDAP',
|
||||
usernameRequired: 'Digite o nome de usuário LDAP.',
|
||||
startTest: 'Iniciar teste',
|
||||
testLoginSuccess: 'Autenticação bem-sucedida.',
|
||||
testLoginSuccessWithDN: 'Autenticação bem-sucedida. Usuário DN: {0}',
|
||||
import: {
|
||||
title: 'Importar usuários AD/LDAP',
|
||||
source: 'Fonte de dados: diretório AD/LDAP',
|
||||
lastRead: 'Última leitura: {0}',
|
||||
cacheHit: 'Resultado armazenado em cache',
|
||||
keywordPlaceholder: 'Pesquisar nome de usuário',
|
||||
search: 'Pesquisar',
|
||||
refresh: 'Leia de LDAP',
|
||||
refreshTip: 'Ignore o cache de curto prazo e leia o diretório LDAP novamente.',
|
||||
loadFailed: 'Falha ao ler o diretório LDAP.',
|
||||
retry: 'Tentar novamente',
|
||||
noData: 'Nenhum usuário do diretório encontrado.',
|
||||
username: 'Nome de usuário',
|
||||
status: 'Estado',
|
||||
changes: 'Mudanças',
|
||||
noChanges: 'Sem alterações',
|
||||
importable: 'Pronto para importar',
|
||||
updateAvailable: 'Atualização disponível',
|
||||
upToDate: 'Atualizado',
|
||||
conflict: 'Conflito de nome',
|
||||
selectedCount: '{0} selecionado',
|
||||
totalCount: '{0} usuários',
|
||||
newUserRole: 'Nova função de usuário',
|
||||
newUserRoleRequired: 'Selecione uma função para novos usuários.',
|
||||
noNewUsers: 'Não há novos usuários nesta operação.',
|
||||
roleOnlyForNewUsers: 'A função selecionada é aplicada somente aos usuários recém-criados.',
|
||||
strictOff:
|
||||
'A sincronização estrita está desativada. Uma importação completa não desativará os usuários.',
|
||||
importSelected: 'Importação/atualização selecionada ({0})',
|
||||
importAll: 'Importar/atualizar tudo ({0})',
|
||||
previewTitle: 'Confirme a importação completa',
|
||||
previewDesc:
|
||||
'O diretório LDAP completo foi lido. A palavra-chave de pesquisa não limita esta operação.',
|
||||
created: 'Criar',
|
||||
updated: 'Atualizar',
|
||||
unchanged: 'Inalterado',
|
||||
conflicts: 'Conflitos',
|
||||
missing: 'Desativar',
|
||||
reactivated: 'Reativar',
|
||||
strictWarning:
|
||||
'A sincronização estrita está habilitada. Os usuários ausentes de LDAP não podem fazer login, mas seus registros, funções e permissões são mantidos.',
|
||||
missingUsers: 'Usuários ausentes em LDAP',
|
||||
missingScope: 'Somente esta fonte LDAP é afetada.',
|
||||
willDisable: 'Será desativado',
|
||||
confirmAll: 'Confirmar importação',
|
||||
confirmAllWithMissing: 'Confirmar importação e desabilitar {0} usuários',
|
||||
executeSuccess: 'Os usuários LDAP foram processados com sucesso.',
|
||||
queryExpired: 'O resultado do diretório expirou. Leia LDAP novamente.',
|
||||
planIncomplete: 'A leitura completa do diretório está incompleta e não pode ser executada.',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
app: {
|
||||
app: 'APP',
|
||||
|
||||
@@ -4285,6 +4285,71 @@ const message = {
|
||||
noFail: 'Сбой монтирования не влияет на запуск системы',
|
||||
},
|
||||
xpack: {
|
||||
ldap: {
|
||||
source: 'Источник',
|
||||
directoryMissing: 'Отсутствует в LDAP',
|
||||
localCredentialsManaged: 'Имя пользователя и пароль управляются LDAP и не могут быть изменены локально.',
|
||||
sources: {
|
||||
local: 'Локальный',
|
||||
ldap: 'LDAP',
|
||||
},
|
||||
importUsers: 'Импорт пользователей AD/LDAP',
|
||||
searchUsersPlaceholder: 'Поиск имени пользователя',
|
||||
readFromLDAP: 'Читать из LDAP',
|
||||
selectedUsers: '{0} выбрано',
|
||||
queriedAt: 'Время чтения',
|
||||
cachedResult: 'Кэшированный результат',
|
||||
roleForNewUsers: 'Роль для новых пользователей',
|
||||
selectRole: 'Выберите роль',
|
||||
roleOnlyForNewUsers: 'Роль требуется только тогда, когда при импорте создаются пользователи.',
|
||||
roleRequiredForNewUsers: 'Выберите роль для новых пользователей LDAP.',
|
||||
changedFields: 'Измененные поля',
|
||||
importSelected: 'Импортировать выбранное',
|
||||
importAll: 'Импортировать все',
|
||||
importPreview: 'Предпросмотр импорта AD/LDAP',
|
||||
importCompleted: 'Импорт AD/LDAP завершён',
|
||||
incompletePreview: 'Чтение каталога LDAP было неполным. Прочтите еще раз LDAP.',
|
||||
missingUsersWarning:
|
||||
'Пользователи, отсутствующие в LDAP, будут отключены посредством строгой синхронизации.',
|
||||
missingUsersWarningDetail: '{0} локальных пользователей LDAP больше не смогут войти в систему.',
|
||||
action: 'Действие',
|
||||
reason: 'Причина',
|
||||
noImportChanges: 'Никаких изменений импорта',
|
||||
confirmImport: 'Подтвердить импорт',
|
||||
created: 'Создать',
|
||||
updated: 'Обновить',
|
||||
reactivated: 'Повторно активировать',
|
||||
unchanged: 'Без изменений',
|
||||
conflicts: 'Конфликты',
|
||||
missing: 'Отсутствует',
|
||||
missingUsersConfirm:
|
||||
'{0} пользователей, отсутствующих в LDAP, будут отключены, а их сеансы завершены. Продолжить?',
|
||||
strictSyncConfirm: 'Подтвердить строгую синхронизацию',
|
||||
status: {
|
||||
importable: 'Новый пользователь',
|
||||
update_available: 'Доступно обновление',
|
||||
up_to_date: 'Актуально',
|
||||
conflict: 'Конфликт',
|
||||
},
|
||||
fields: {
|
||||
name: 'Имя пользователя',
|
||||
externalDN: 'Каталог DN',
|
||||
externalID: 'Внешний идентификатор',
|
||||
authSourceStatus: 'Статус аутентификации',
|
||||
},
|
||||
actions: {
|
||||
created: 'Создать',
|
||||
updated: 'Обновить',
|
||||
reactivated: 'Повторно активировать',
|
||||
unchanged: 'Без изменений',
|
||||
skipped: 'Пропущено',
|
||||
conflicts: 'Конфликт',
|
||||
conflict: 'Конфликт',
|
||||
missing: 'Отключить',
|
||||
errors: 'Ошибка',
|
||||
error: 'Ошибка',
|
||||
},
|
||||
},
|
||||
expiresEnterpriseAlert:
|
||||
'Дружеское напоминание: ваша лицензия Enterprise Edition истечет через {0} дней, и все функции Enterprise Edition станут недоступны. Пожалуйста, продлите лицензию вовремя, чтобы обеспечить дальнейшее использование.',
|
||||
expiresProAlert:
|
||||
@@ -4843,6 +4908,223 @@ const message = {
|
||||
masterOnlyPermissionHelper: 'Это право действует только на главном узле.',
|
||||
view: 'Просмотр',
|
||||
manage: 'Управление',
|
||||
authManage: 'Управление аутентификацией',
|
||||
auth: {
|
||||
providerNavigation: 'Поставщики аутентификации',
|
||||
providers: {
|
||||
ldap: 'AD/LDAP',
|
||||
passkey: 'Passkey',
|
||||
radius: 'Radius',
|
||||
oidc: 'OIDC',
|
||||
saml2: 'SAML2',
|
||||
cas: 'CAS',
|
||||
oauth2: 'OAuth2',
|
||||
dingtalk: 'DingTalk',
|
||||
feishu: 'Feishu',
|
||||
wecom: 'WeCom',
|
||||
},
|
||||
providerDescriptions: {
|
||||
ldap: 'Совместимость с Active Directory, OpenLDAP и другими службами LDAP.',
|
||||
passkey: 'Используйте учетные данные устройства для входа без пароля',
|
||||
radius: 'Аутентификация доступа к сети через службу Radius',
|
||||
oidc: 'Подключите корпоративный единый вход с помощью OpenID Connect',
|
||||
saml2: 'Используйте SAML2 для федерации корпоративных удостоверений.',
|
||||
cas: 'Подключите централизованную службу аутентификации для единого входа',
|
||||
oauth2: 'Подключите совместимую службу идентификации OAuth2.',
|
||||
dingtalk: 'Используйте идентификатор организации DingTalk и вход с помощью QR',
|
||||
feishu: 'Используйте идентификацию организации Feishu и синхронизацию учетных записей.',
|
||||
wecom: 'Аутентификация с использованием удостоверения участника WeCom',
|
||||
},
|
||||
planned: 'Планируется',
|
||||
plannedTitle: 'Настройки аутентификации {0}',
|
||||
plannedDesc: 'Этот поставщик аутентификации запланирован и пока недоступен.',
|
||||
ldap: {
|
||||
enable: 'Включить',
|
||||
enabled: 'Включено',
|
||||
disabled: 'Отключено',
|
||||
connection: 'Базовое подключение',
|
||||
connectionDesc:
|
||||
'Настройте службу каталогов и учетную запись привязки, используемую для поиска пользователей.',
|
||||
serverURL: 'URL-адрес сервера',
|
||||
serverURLHelper: 'Поддерживает URL-адреса ldap:// и ldaps://.',
|
||||
userBaseDN: 'Пользователь Base DN',
|
||||
userBaseDNHelper:
|
||||
'Запуск DN для поиска пользователей LDAP; это может быть OU, CN или корень домена DN.',
|
||||
bindDN: 'Привязать DN',
|
||||
bindPassword: 'Пароль',
|
||||
passwordSaved: 'Оставьте поле пустым, чтобы сохранить сохраненный пароль.',
|
||||
userSearch: 'Поиск пользователей',
|
||||
userSearchDesc:
|
||||
'Установите базу поиска пользователей и фильтр, затем сопоставьте атрибут LDAP, используемый как 1Panel name.',
|
||||
userFilter: 'Пользовательский фильтр',
|
||||
userFilterTooltip:
|
||||
'Замените %(user)s экранированным именем пользователя или на * для полного чтения каталога.',
|
||||
userFilterHelper: 'Имена пользователей экранируются перед вставкой в фильтр LDAP.',
|
||||
attributeMap: 'Сопоставление атрибутов',
|
||||
attributeMapTooltip: 'Сопоставление JSON поля 1Panel name с атрибутом LDAP.',
|
||||
attributeMapHelper: 'Установите атрибут LDAP, сопоставленный с полем 1Panel name.',
|
||||
advanced: 'Расширенные настройки',
|
||||
advancedDesc: 'Настройте разбиение запросов TLS и LDAP.',
|
||||
strictSync: 'Строгая синхронизация',
|
||||
strictSyncTooltip:
|
||||
'После полного импорта пользователи, отсутствующие в этом источнике LDAP, отключаются, но не удаляются.',
|
||||
strictSyncHelper:
|
||||
'Применяется только к полному импорту. Импорт выбранных пользователей никогда не отключает других пользователей.',
|
||||
skipTLSVerify: 'Пропустить проверку TLS',
|
||||
skipTLSVerifyTooltip: 'Отключите проверку сертификата для соединений LDAPS.',
|
||||
skipTLSVerifyHelper:
|
||||
'Используйте только с доверенным самозаверяющим сертификатом. Этот параметр не зависит от строгой синхронизации.',
|
||||
connectTimeout: 'Таймаут соединения (секунды)',
|
||||
searchPageSize: 'Размер страницы запроса LDAP',
|
||||
restore: 'Восстановить',
|
||||
testConnection: 'Тестовое соединение',
|
||||
testLogin: 'Тестовый вход',
|
||||
userImport: 'Импортировать пользователей',
|
||||
saveBeforeImport: 'Сохраните текущие настройки AD/LDAP перед импортом пользователей.',
|
||||
format: 'Формат',
|
||||
restoreExample: 'Пример восстановления',
|
||||
mappingValid: 'Действителен JSON; name настроен.',
|
||||
mappingInvalid: 'Введите действительный JSON.',
|
||||
mappingObject: 'Сопоставление атрибутов должно быть объектом JSON.',
|
||||
mappingOnlyName: 'Поддерживается только сопоставление name.',
|
||||
mappingStringValues: 'Каждый сопоставленный атрибут должен быть строкой.',
|
||||
mappingNameRequired: 'name должен быть непустой строкой.',
|
||||
restored: 'Последние сохраненные настройки были восстановлены.',
|
||||
connectionTestSuccess: 'Проверка соединения LDAP прошла успешно.',
|
||||
recentTestSuccess: 'Последний тест прошел успешно: {0}',
|
||||
recentTestFailed: 'Последний тест не пройден: {0}',
|
||||
serverURLRequired: 'Введите URL-адрес сервера LDAP.',
|
||||
serverURLInvalid: 'Используйте действительный URL-адрес ldap:// или ldaps://.',
|
||||
userBaseDNRequired: 'Введите пользователя Base DN.',
|
||||
bindDNRequired: 'Введите привязку DN.',
|
||||
passwordRequired: 'Введите пароль.',
|
||||
userFilterRequired: 'Введите фильтр пользователей.',
|
||||
connectTimeoutRequired: 'Введите тайм-аут соединения.',
|
||||
searchPageSizeRequired: 'Введите размер страницы запроса LDAP.',
|
||||
sync: {
|
||||
title: 'Запланированная синхронизация',
|
||||
description:
|
||||
'Чтение полного каталога LDAP по расписанию и поддержка импортированных пользователей LDAP в 1Panel.',
|
||||
enable: 'Включить расписание',
|
||||
enableHelper:
|
||||
'При отключении автоматическое выполнение останавливается; ручная синхронизация остается доступной.',
|
||||
schedule: 'Расписание',
|
||||
daily: 'Ежедневно',
|
||||
weekly: 'Еженедельно',
|
||||
customCron: 'Пользовательский Cron',
|
||||
preview: 'Предварительный просмотр',
|
||||
previewTitle: 'Следующие 5 запусков',
|
||||
previewEmpty: 'Нет времени выполнения',
|
||||
cronHelper:
|
||||
'Используйте стандартное выражение Cron из пяти полей: минуты, часы, день, месяц, день недели.',
|
||||
autoImport: 'Импортировать новых пользователей',
|
||||
autoImportHelper:
|
||||
'Если этот параметр отключен, для импортированных пользователей LDAP сохраняются только идентификаторы каталогов и статус; новые пользователи не создаются.',
|
||||
defaultRole: 'Новая роль пользователя',
|
||||
defaultRolePlaceholder: 'Выберите роль',
|
||||
defaultRoleHelper:
|
||||
'Применяется только к пользователям, созданным с помощью запланированной синхронизации.',
|
||||
defaultRoleRequired: 'Выберите роль для новых пользователей LDAP.',
|
||||
strictSyncHelper:
|
||||
'Пользователи, отсутствующие в полном запросе, отключаются, а их сеансы очищаются; пользователи, роли и разрешения не удаляются.',
|
||||
safetyTitle: 'Отсутствующие пользователи обрабатываются только после полного запроса LDAP.',
|
||||
safetyDescription:
|
||||
'Неудачный запрос, тайм-аут или неполный постраничный результат никогда не меняют статус пользователя. Область синхронизации соответствует пользователю Base DN, фильтру и сопоставлению атрибутов.',
|
||||
runNow: 'Синхронизировать сейчас',
|
||||
lastRunSuccess: 'Последняя синхронизация завершилась успешно: {0}.',
|
||||
lastRunFailed: 'Последняя синхронизация не удалась: {0}.',
|
||||
lastRunRunning: 'Синхронизация началась: {0}',
|
||||
sourceDisabled: 'Включите и сохраните AD/LDAP перед запуском синхронизации.',
|
||||
cronRequired: 'Введите выражение Cron.',
|
||||
saveBeforeRun: 'Сохраните настройки синхронизации перед запуском задачи.',
|
||||
runConfirmTitle: 'Запустить строгую синхронизацию',
|
||||
runConfirmDescription:
|
||||
'Пользователи LDAP, отсутствующие в полном запросе, будут отключены, а их активные сеансы удалены. Продолжать?',
|
||||
runSuccess: 'Синхронизация LDAP завершена.',
|
||||
weekdays: {
|
||||
0: 'воскресенье',
|
||||
1: 'понедельник',
|
||||
2: 'вторник',
|
||||
3: 'среда',
|
||||
4: 'Четверг',
|
||||
5: 'пятница',
|
||||
6: 'Суббота',
|
||||
},
|
||||
},
|
||||
syncLogs: {
|
||||
title: 'Синхронизировать журналы',
|
||||
description: 'Просмотрите результаты запланированной и ручной синхронизации LDAP.',
|
||||
startedAt: 'Время начала',
|
||||
trigger: 'Тип запуска',
|
||||
manual: 'Вручную',
|
||||
scheduled: 'Запланировано',
|
||||
success: 'Успех',
|
||||
failed: 'Не удалось',
|
||||
running: 'Выполняется',
|
||||
result: 'Результат',
|
||||
resultSummary: 'Создано {0}, обновлено {1}, отсутствует {2}',
|
||||
duration: 'Продолжительность',
|
||||
action: 'Действие',
|
||||
},
|
||||
testLoginTitle: 'Проверка входа AD/LDAP',
|
||||
testLoginDesc:
|
||||
'Привяжите учетные данные пользователя AD/LDAP только для проверки аутентификации. Сеанс 1Panel не создается.',
|
||||
ldapUsername: 'Имя пользователя LDAP',
|
||||
usernameRequired: 'Введите имя пользователя LDAP.',
|
||||
startTest: 'Начать тест',
|
||||
testLoginSuccess: 'Аутентификация прошла успешно.',
|
||||
testLoginSuccessWithDN: 'Аутентификация прошла успешно. Пользователь DN: {0}',
|
||||
import: {
|
||||
title: 'Импорт пользователей AD/LDAP',
|
||||
source: 'Источник данных: каталог AD/LDAP.',
|
||||
lastRead: 'Последнее чтение: {0}',
|
||||
cacheHit: 'Кэшированный результат',
|
||||
keywordPlaceholder: 'Поиск имени пользователя',
|
||||
search: 'Поиск',
|
||||
refresh: 'Читать из LDAP',
|
||||
refreshTip: 'Игнорируйте кратковременный кеш и снова прочитайте каталог LDAP.',
|
||||
loadFailed: 'Не удалось прочитать каталог LDAP.',
|
||||
retry: 'Повторить попытку',
|
||||
noData: 'Пользователи каталога не найдены.',
|
||||
username: 'Имя пользователя',
|
||||
status: 'Статус',
|
||||
changes: 'Изменения',
|
||||
noChanges: 'Никаких изменений',
|
||||
importable: 'Готов к импорту',
|
||||
updateAvailable: 'Доступно обновление',
|
||||
upToDate: 'Актуально',
|
||||
conflict: 'Конфликт имен',
|
||||
selectedCount: '{0} выбрано',
|
||||
totalCount: '{0} пользователей',
|
||||
newUserRole: 'Новая роль пользователя',
|
||||
newUserRoleRequired: 'Выберите роль для новых пользователей.',
|
||||
noNewUsers: 'В этой операции нет новых пользователей.',
|
||||
roleOnlyForNewUsers: 'Выбранная роль применяется только к вновь созданным пользователям.',
|
||||
strictOff: 'Строгая синхронизация отключена. Полный импорт не отключит пользователей.',
|
||||
importSelected: 'Выбран импорт/обновление ({0})',
|
||||
importAll: 'Импортировать/обновить все ({0})',
|
||||
previewTitle: 'Подтвердить полный импорт',
|
||||
previewDesc:
|
||||
'Полный каталог LDAP был прочитан. Ключевое слово поиска не ограничивает эту операцию.',
|
||||
created: 'Создать',
|
||||
updated: 'Обновить',
|
||||
unchanged: 'Без изменений',
|
||||
conflicts: 'Конфликты',
|
||||
missing: 'Отключить',
|
||||
reactivated: 'Повторно активировать',
|
||||
strictWarning:
|
||||
'Строгая синхронизация включена. Пользователи, отсутствующие в LDAP, не могут войти в систему, но их записи, роли и разрешения сохраняются.',
|
||||
missingUsers: 'Пользователи отсутствуют в LDAP',
|
||||
missingScope: 'Затрагивается только этот источник LDAP.',
|
||||
willDisable: 'Будет отключен',
|
||||
confirmAll: 'Подтвердить импорт',
|
||||
confirmAllWithMissing: 'Подтвердить импорт и отключить {0} пользователей',
|
||||
executeSuccess: 'Пользователи LDAP обработаны успешно.',
|
||||
queryExpired: 'Срок действия каталога истек. Прочтите еще раз LDAP.',
|
||||
planIncomplete: 'Полное чтение каталога неполное и не может быть выполнено.',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
app: {
|
||||
app: 'APP',
|
||||
|
||||
@@ -4286,6 +4286,71 @@ const message = {
|
||||
noFail: 'Bağlama hatası sistem başlangıcını etkilemez',
|
||||
},
|
||||
xpack: {
|
||||
ldap: {
|
||||
source: 'Kaynak',
|
||||
directoryMissing: "LDAP'te bulunamadı",
|
||||
localCredentialsManaged:
|
||||
'Kullanıcı adı ve parola LDAP tarafından yönetilir ve yerel olarak değiştirilemez.',
|
||||
sources: {
|
||||
local: 'Yerel',
|
||||
ldap: 'LDAP',
|
||||
},
|
||||
importUsers: 'AD/LDAP kullanıcılarını içe aktar',
|
||||
searchUsersPlaceholder: 'Kullanıcı adını ara',
|
||||
readFromLDAP: "LDAP'dan okuyun",
|
||||
selectedUsers: '{0} seçildi',
|
||||
queriedAt: 'Okuma zamanı',
|
||||
cachedResult: 'Önbelleğe alınmış sonuç',
|
||||
roleForNewUsers: 'Yeni kullanıcılar için rol',
|
||||
selectRole: 'Bir rol seçin',
|
||||
roleOnlyForNewUsers: 'Bir rol yalnızca içe aktarma işleminde kullanıcılar oluşturduğunda gereklidir.',
|
||||
roleRequiredForNewUsers: 'Yeni LDAP kullanıcıları için bir rol seçin.',
|
||||
changedFields: 'Değiştirilen alanlar',
|
||||
importSelected: 'Seçileni içe aktar',
|
||||
importAll: 'Tümünü içe aktar',
|
||||
importPreview: 'AD/LDAP içe aktarma önizlemesi',
|
||||
importCompleted: 'AD/LDAP içe aktarma tamamlandı',
|
||||
incompletePreview: "LDAP dizin okuması tamamlanmadı. LDAP'dan tekrar okuyun.",
|
||||
missingUsersWarning: "LDAP'da eksik olan kullanıcılar katı senkronizasyonla devre dışı bırakılacak.",
|
||||
missingUsersWarningDetail: '{0} yerel LDAP kullanıcıları artık oturum açamayacak.',
|
||||
action: 'Eylem',
|
||||
reason: 'Sebep',
|
||||
noImportChanges: 'İçe aktarma değişikliği yok',
|
||||
confirmImport: 'İçe aktarmayı onayla',
|
||||
created: 'Oluştur',
|
||||
updated: 'Güncelleme',
|
||||
reactivated: 'Yeniden etkinleştir',
|
||||
unchanged: 'değişmedi',
|
||||
conflicts: 'Çatışmalar',
|
||||
missing: 'Eksik',
|
||||
missingUsersConfirm:
|
||||
"LDAP'da bulunmayan {0} kullanıcı devre dışı bırakılacak ve oturumları kapatılacak. Devam edilsin mi?",
|
||||
strictSyncConfirm: 'Kesin senkronizasyonu onaylayın',
|
||||
status: {
|
||||
importable: 'Yeni kullanıcı',
|
||||
update_available: 'Güncelleme mevcut',
|
||||
up_to_date: 'güncel',
|
||||
conflict: 'Çatışma',
|
||||
},
|
||||
fields: {
|
||||
name: 'Kullanıcı adı',
|
||||
externalDN: 'Dizin DN',
|
||||
externalID: 'Harici Kimlik',
|
||||
authSourceStatus: 'Kimlik doğrulama durumu',
|
||||
},
|
||||
actions: {
|
||||
created: 'Oluştur',
|
||||
updated: 'Güncelleme',
|
||||
reactivated: 'Yeniden etkinleştir',
|
||||
unchanged: 'değişmedi',
|
||||
skipped: 'Atlandı',
|
||||
conflicts: 'Çatışma',
|
||||
conflict: 'Çatışma',
|
||||
missing: 'Devre dışı bırak',
|
||||
errors: 'Hata',
|
||||
error: 'Hata',
|
||||
},
|
||||
},
|
||||
expiresEnterpriseAlert:
|
||||
'Nazik hatırlatma: Enterprise Edition lisansınız {0} gün içinde sona erecek ve tüm Enterprise Edition özellikleri kullanılamaz hale gelecektir. Lütfen devam eden kullanım için zamanında yenileyin.',
|
||||
expiresProAlert:
|
||||
@@ -4840,6 +4905,223 @@ const message = {
|
||||
masterOnlyPermissionHelper: 'Bu izin yalnızca ana düğümde geçerlidir.',
|
||||
view: 'Görüntüle',
|
||||
manage: 'Yönet',
|
||||
authManage: 'Kimlik doğrulama yönetimi',
|
||||
auth: {
|
||||
providerNavigation: 'Kimlik doğrulama sağlayıcıları',
|
||||
providers: {
|
||||
ldap: 'AD/LDAP',
|
||||
passkey: 'Passkey',
|
||||
radius: 'Radius',
|
||||
oidc: 'OIDC',
|
||||
saml2: 'SAML2',
|
||||
cas: 'CAS',
|
||||
oauth2: 'OAuth2',
|
||||
dingtalk: 'DingTalk',
|
||||
feishu: 'Feishu',
|
||||
wecom: 'WeCom',
|
||||
},
|
||||
providerDescriptions: {
|
||||
ldap: 'Active Directory, OpenLDAP ve diğer LDAP hizmetleriyle uyumludur',
|
||||
passkey: 'Parolasız oturum açmak için cihaz kimlik bilgilerini kullanın',
|
||||
radius: 'Radius hizmeti aracılığıyla ağ erişimini doğrulayın',
|
||||
oidc: 'Kurumsal çoklu oturum açmayı OpenID Connect ile bağlayın',
|
||||
saml2: "Kurumsal kimlik federasyonu için SAML2'yi kullanın",
|
||||
cas: 'Tek oturum açma için merkezi bir kimlik doğrulama hizmetine bağlanın',
|
||||
oauth2: 'Uyumlu bir OAuth2 kimlik hizmetine bağlanın',
|
||||
dingtalk: 'DingTalk kuruluş kimliğini ve QR ile oturum açmayı kullanın',
|
||||
feishu: 'Feishu kuruluş kimliğini ve hesap senkronizasyonunu kullanma',
|
||||
wecom: 'WeCom üye kimliğiyle kimlik doğrulama',
|
||||
},
|
||||
planned: 'Planlanan',
|
||||
plannedTitle: '{0} kimlik doğrulama ayarları',
|
||||
plannedDesc: 'Bu kimlik doğrulama sağlayıcısı planlanmıştır ve henüz kullanılamamaktadır.',
|
||||
ldap: {
|
||||
enable: 'Etkinleştir',
|
||||
enabled: 'Etkin',
|
||||
disabled: 'Devre dışı',
|
||||
connection: 'Temel bağlantı',
|
||||
connectionDesc:
|
||||
'Kullanıcıları aramak için kullanılan dizin hizmetini ve bağlama hesabını yapılandırın.',
|
||||
serverURL: "Sunucu URL'si",
|
||||
serverURLHelper: "ldap:// ve ldaps:// URL'lerini destekler.",
|
||||
userBaseDN: 'Kullanıcı Base DN',
|
||||
userBaseDNHelper:
|
||||
"LDAP kullanıcı aramaları için DN'nun başlatılması; bu bir OU, CN veya etki alanı kökü DN olabilir.",
|
||||
bindDN: "DN'yu bağla",
|
||||
bindPassword: 'Şifre',
|
||||
passwordSaved: 'Kaydedilen şifreyi korumak için boş bırakın',
|
||||
userSearch: 'Kullanıcı arama',
|
||||
userSearchDesc:
|
||||
'Kullanıcı arama tabanını ve filtreyi ayarlayın, ardından 1Panel name olarak kullanılan LDAP niteliğini eşleyin.',
|
||||
userFilter: 'Kullanıcı filtresi',
|
||||
userFilterTooltip:
|
||||
"Tam dizin okunması için %(user)s'yu çıkışlı kullanıcı adıyla veya * ile değiştirin.",
|
||||
userFilterHelper: 'Kullanıcı adları LDAP filtresine eklenmeden önce çıkış karakteri kullanılır.',
|
||||
attributeMap: 'Özellik eşleme',
|
||||
attributeMapTooltip: 'JSON, 1Panel name alanından bir LDAP özniteliğine eşleme.',
|
||||
attributeMapHelper: '1Panel name alanına eşlenen LDAP niteliğini ayarlayın.',
|
||||
advanced: 'Gelişmiş ayarlar',
|
||||
advancedDesc: 'TLS ve LDAP sorgu sayfalamayı yapılandırın.',
|
||||
strictSync: 'Sıkı senkronizasyon',
|
||||
strictSyncTooltip:
|
||||
'Tam bir içe aktarma işleminin ardından, bu LDAP kaynağında eksik olan kullanıcılar devre dışı bırakılır ancak silinmez.',
|
||||
strictSyncHelper:
|
||||
'Yalnızca tam bir tam içe aktarma için geçerlidir. Seçilen kullanıcıları içe aktarmak hiçbir zaman diğer kullanıcıları devre dışı bırakmaz.',
|
||||
skipTLSVerify: 'TLS doğrulamasını atla',
|
||||
skipTLSVerifyTooltip: 'LDAPS bağlantıları için sertifika doğrulamayı devre dışı bırakın.',
|
||||
skipTLSVerifyHelper:
|
||||
'Yalnızca güvenilir, kendinden imzalı bir sertifikayla kullanın. Bu ayar katı senkronizasyondan bağımsızdır.',
|
||||
connectTimeout: 'Bağlantı zaman aşımı (saniye)',
|
||||
searchPageSize: 'LDAP sorgu sayfası boyutu',
|
||||
restore: 'Geri yükle',
|
||||
testConnection: 'Bağlantıyı test edin',
|
||||
testLogin: 'Oturum açmayı test edin',
|
||||
userImport: 'Kullanıcıları içe aktar',
|
||||
saveBeforeImport: 'Kullanıcıları içe aktarmadan önce mevcut AD/LDAP ayarlarını kaydedin.',
|
||||
format: 'Biçim',
|
||||
restoreExample: 'Örneği geri yükle',
|
||||
mappingValid: 'Geçerli JSON; name yapılandırıldı.',
|
||||
mappingInvalid: 'Geçerli JSON girin.',
|
||||
mappingObject: 'Öznitelik eşlemesi bir JSON nesnesi olmalıdır.',
|
||||
mappingOnlyName: 'Yalnızca name eşlemesi desteklenir.',
|
||||
mappingStringValues: 'Her eşlenen öznitelik bir dize olmalıdır.',
|
||||
mappingNameRequired: 'name boş olmayan bir dize olmalıdır.',
|
||||
restored: 'Son kaydedilen ayarlar geri yüklendi.',
|
||||
connectionTestSuccess: 'LDAP bağlantı testi başarılı oldu.',
|
||||
recentTestSuccess: 'Son test başarılı oldu: {0}',
|
||||
recentTestFailed: 'Son test başarısız oldu: {0}',
|
||||
serverURLRequired: "LDAP sunucu URL'sini girin.",
|
||||
serverURLInvalid: "Geçerli bir ldap:// veya ldaps:// URL'si kullanın.",
|
||||
userBaseDNRequired: 'Base DN Kullanıcısını girin.',
|
||||
bindDNRequired: 'DN bağlamasını girin.',
|
||||
passwordRequired: 'Şifreyi girin.',
|
||||
userFilterRequired: 'Kullanıcı filtresini girin.',
|
||||
connectTimeoutRequired: 'Bağlantı zaman aşımını girin.',
|
||||
searchPageSizeRequired: 'LDAP sorgu sayfası boyutunu girin.',
|
||||
sync: {
|
||||
title: 'Planlanmış senkronizasyon',
|
||||
description:
|
||||
"LDAP dizininin tamamını bir programa göre okuyun ve 1Panel'da içe aktarılan LDAP kullanıcılarını koruyun.",
|
||||
enable: 'Programı etkinleştir',
|
||||
enableHelper:
|
||||
'Devre dışı bırakıldığında otomatik yürütme durur; manuel senkronizasyon kullanılabilir durumda kalır.',
|
||||
schedule: 'Program',
|
||||
daily: 'Günlük',
|
||||
weekly: 'Haftalık',
|
||||
customCron: 'Özel Cron',
|
||||
preview: 'Önizleme',
|
||||
previewTitle: 'Sonraki 5 çalıştırma',
|
||||
previewEmpty: 'Yürütme süresi yok',
|
||||
cronHelper:
|
||||
'Standart beş alanlı Cron ifadesini kullanın: dakika, saat, gün, ay, haftanın günü.',
|
||||
autoImport: 'Yeni kullanıcıları içe aktar',
|
||||
autoImportHelper:
|
||||
'Devre dışı bırakıldığında, içe aktarılan LDAP kullanıcıları için yalnızca dizin tanımlayıcıları ve durumu korunur; yeni kullanıcı oluşturulmaz.',
|
||||
defaultRole: 'Yeni kullanıcı rolü',
|
||||
defaultRolePlaceholder: 'Bir rol seçin',
|
||||
defaultRoleHelper:
|
||||
'Yalnızca zamanlanmış senkronizasyonla oluşturulan kullanıcılar için geçerlidir.',
|
||||
defaultRoleRequired: 'Yeni LDAP kullanıcıları için bir rol seçin.',
|
||||
strictSyncHelper:
|
||||
'Tam sorguda eksik olan kullanıcılar devre dışı bırakılır ve oturumları temizlenir; kullanıcılar, roller ve izinler silinmez.',
|
||||
safetyTitle: 'Eksik kullanıcılar yalnızca LDAP tam sorgusunun tamamlanmasından sonra işlenir',
|
||||
safetyDescription:
|
||||
'Başarısız bir sorgu, zaman aşımı veya tamamlanmamış sayfalanmış sonuç, kullanıcı durumunu hiçbir zaman değiştirmez. Senkronizasyon kapsamı Kullanıcı Base DN, filtre ve öznitelik eşlemesini takip eder.',
|
||||
runNow: 'Şimdi senkronize et',
|
||||
lastRunSuccess: 'Son senkronizasyon başarılı oldu: {0}',
|
||||
lastRunFailed: 'Son senkronizasyon başarısız oldu: {0}',
|
||||
lastRunRunning: 'Senkronizasyon başladı: {0}',
|
||||
sourceDisabled: "Senkronizasyonu çalıştırmadan önce AD/LDAP'yu etkinleştirin ve kaydedin.",
|
||||
cronRequired: 'Bir Cron ifadesi girin.',
|
||||
saveBeforeRun: 'Görevi çalıştırmadan önce senkronizasyon ayarlarını kaydedin.',
|
||||
runConfirmTitle: 'Kesin senkronizasyonu çalıştır',
|
||||
runConfirmDescription:
|
||||
'Tam sorguda bulunmayan LDAP kullanıcıları devre dışı bırakılacak ve etkin oturumları kapatılacaktır. Devam edilsin mi?',
|
||||
runSuccess: 'LDAP senkronizasyonu tamamlandı.',
|
||||
weekdays: {
|
||||
0: 'Pazar',
|
||||
1: 'Pazartesi',
|
||||
2: 'Salı',
|
||||
3: 'Çarşamba',
|
||||
4: 'perşembe',
|
||||
5: 'Cuma',
|
||||
6: 'Cumartesi',
|
||||
},
|
||||
},
|
||||
syncLogs: {
|
||||
title: 'Günlükleri senkronize et',
|
||||
description: 'Planlanmış ve manuel LDAP senkronizasyon sonuçlarını inceleyin.',
|
||||
startedAt: 'Başlangıç zamanı',
|
||||
trigger: 'Çalıştırma türü',
|
||||
manual: 'Manuel',
|
||||
scheduled: 'planlanmış',
|
||||
success: 'Başarı',
|
||||
failed: 'Başarısız',
|
||||
running: 'Çalışıyor',
|
||||
result: 'Sonuç',
|
||||
resultSummary: '{0} oluşturuldu, {1} güncellendi, {2} eksik',
|
||||
duration: 'Süre',
|
||||
action: 'Eylem',
|
||||
},
|
||||
testLoginTitle: 'AD/LDAP oturum açmayı test et',
|
||||
testLoginDesc:
|
||||
'Yalnızca kimlik doğrulamayı test etmek için AD/LDAP kullanıcı kimlik bilgileriyle bağlantı kurun. 1Panel oturumu oluşturulmadı.',
|
||||
ldapUsername: 'LDAP kullanıcı adı',
|
||||
usernameRequired: 'LDAP kullanıcı adını girin.',
|
||||
startTest: 'Testi başlat',
|
||||
testLoginSuccess: 'Kimlik doğrulama başarılı oldu.',
|
||||
testLoginSuccessWithDN: 'Kimlik doğrulama başarılı oldu. Kullanıcı DN: {0}',
|
||||
import: {
|
||||
title: 'AD/LDAP kullanıcılarını içe aktar',
|
||||
source: 'Veri kaynağı: AD/LDAP dizini',
|
||||
lastRead: 'Son okuma: {0}',
|
||||
cacheHit: 'Önbelleğe alınmış sonuç',
|
||||
keywordPlaceholder: 'Kullanıcı adını ara',
|
||||
search: 'Ara',
|
||||
refresh: "LDAP'dan okuyun",
|
||||
refreshTip: 'Kısa süreli önbelleği göz ardı edin ve LDAP dizinini yeniden okuyun.',
|
||||
loadFailed: 'LDAP dizini okunamadı.',
|
||||
retry: 'Yeniden dene',
|
||||
noData: 'Hiçbir dizin kullanıcısı bulunamadı.',
|
||||
username: 'Kullanıcı adı',
|
||||
status: 'Durum',
|
||||
changes: 'Değişiklikler',
|
||||
noChanges: 'Değişiklik yok',
|
||||
importable: 'İçe aktarmaya hazır',
|
||||
updateAvailable: 'Güncelleme mevcut',
|
||||
upToDate: 'güncel',
|
||||
conflict: 'Ad çakışması',
|
||||
selectedCount: '{0} seçildi',
|
||||
totalCount: '{0} kullanıcı',
|
||||
newUserRole: 'Yeni kullanıcı rolü',
|
||||
newUserRoleRequired: 'Yeni kullanıcılar için bir rol seçin.',
|
||||
noNewUsers: 'Bu operasyonda yeni kullanıcı yok.',
|
||||
roleOnlyForNewUsers: 'Seçilen rol yalnızca yeni oluşturulan kullanıcılara uygulanır.',
|
||||
strictOff:
|
||||
'Katı senkronizasyon devre dışı bırakıldı. Tam içe aktarma, kullanıcıları devre dışı bırakmaz.',
|
||||
importSelected: 'İçe aktarma/güncelleme seçildi ({0})',
|
||||
importAll: 'Tümünü içe aktar/güncelle ({0})',
|
||||
previewTitle: 'Tam içe aktarmayı onaylayın',
|
||||
previewDesc: 'LDAP dizininin tamamı okundu. Arama anahtar sözcüğü bu işlemi sınırlamaz.',
|
||||
created: 'Oluştur',
|
||||
updated: 'Güncelleme',
|
||||
unchanged: 'değişmedi',
|
||||
conflicts: 'Çatışmalar',
|
||||
missing: 'Devre dışı bırak',
|
||||
reactivated: 'Yeniden etkinleştir',
|
||||
strictWarning:
|
||||
"Katı senkronizasyon etkinleştirildi. LDAP'da bulunmayan kullanıcılar oturum açamaz ancak kayıtları, rolleri ve izinleri korunur.",
|
||||
missingUsers: "LDAP'da eksik olan kullanıcılar",
|
||||
missingScope: 'Yalnızca bu LDAP kaynağı etkilenir.',
|
||||
willDisable: 'Devre dışı bırakılacak',
|
||||
confirmAll: 'İçe aktarmayı onayla',
|
||||
confirmAllWithMissing: 'İçe aktarmayı onayla ve {0} kullanıcıyı devre dışı bırak',
|
||||
executeSuccess: 'LDAP kullanıcıları başarıyla işlendi.',
|
||||
queryExpired: "Dizin sonucunun süresi doldu. LDAP'dan tekrar okuyun.",
|
||||
planIncomplete: 'Tam dizin okuması tamamlanmadı ve yürütülemiyor.',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
app: {
|
||||
app: 'Uygulama',
|
||||
|
||||
@@ -3910,6 +3910,59 @@ const message = {
|
||||
noFail: '掛載失敗不影響系統啟動',
|
||||
},
|
||||
xpack: {
|
||||
ldap: {
|
||||
source: '來源',
|
||||
directoryMissing: 'LDAP 中不存在',
|
||||
localCredentialsManaged: '此使用者的使用者名稱和密碼由 LDAP 管理,無法在本機修改。',
|
||||
sources: {
|
||||
local: '本機',
|
||||
ldap: 'LDAP',
|
||||
},
|
||||
importUsers: '匯入 AD/LDAP 使用者',
|
||||
searchUsersPlaceholder: '搜尋使用者名稱',
|
||||
readFromLDAP: '從 LDAP 讀取',
|
||||
selectedUsers: '已選擇 {0} 項',
|
||||
queriedAt: '讀取時間',
|
||||
cachedResult: '快取結果',
|
||||
roleForNewUsers: '新使用者角色',
|
||||
selectRole: '請選擇角色',
|
||||
roleOnlyForNewUsers: '僅在本次處理包含新使用者時需要選擇角色。',
|
||||
roleRequiredForNewUsers: '請為新的 LDAP 使用者選擇角色。',
|
||||
changedFields: '變更欄位',
|
||||
importSelected: '匯入/更新所選',
|
||||
importAll: '匯入/更新全部',
|
||||
importPreview: 'AD/LDAP 匯入預覽',
|
||||
importCompleted: 'AD/LDAP 使用者處理完成',
|
||||
incompletePreview: 'LDAP 目錄未完整讀取,請重新從 LDAP 讀取。',
|
||||
missingUsersWarning: '嚴格同步將停用 LDAP 中不存在的使用者。',
|
||||
missingUsersWarningDetail: '{0} 個本機 LDAP 使用者將無法繼續登入。',
|
||||
action: '處理結果',
|
||||
reason: '原因',
|
||||
noImportChanges: '沒有需要處理的變更',
|
||||
confirmImport: '確認匯入',
|
||||
created: '新增',
|
||||
updated: '更新',
|
||||
reactivated: '恢復',
|
||||
unchanged: '無變更',
|
||||
conflicts: '衝突',
|
||||
missing: '將停用',
|
||||
missingUsersConfirm: 'LDAP 中不存在的 {0} 個使用者將被停用並登出,是否繼續?',
|
||||
strictSyncConfirm: '確認嚴格同步',
|
||||
status: { importable: '可匯入', update_available: '待更新', up_to_date: '已是最新', conflict: '同名衝突' },
|
||||
fields: { name: '使用者名稱', externalDN: '目錄 DN', externalID: '外部識別', authSourceStatus: '認證狀態' },
|
||||
actions: {
|
||||
created: '新增',
|
||||
updated: '更新',
|
||||
reactivated: '恢復',
|
||||
unchanged: '無變更',
|
||||
skipped: '略過',
|
||||
conflicts: '衝突',
|
||||
conflict: '衝突',
|
||||
missing: '停用',
|
||||
errors: '錯誤',
|
||||
error: '錯誤',
|
||||
},
|
||||
},
|
||||
expiresEnterpriseAlert: '溫馨提醒:您的企業版許可證將在 {0} 天後到期,屆時所有企業版功能將無法繼續使用。',
|
||||
expiresProAlert: '溫馨提醒:您的專業版許可證將在 {0} 天後到期,屆時所有專業版功能將無法繼續使用。',
|
||||
name: '商業版',
|
||||
@@ -4455,6 +4508,209 @@ const message = {
|
||||
masterOnlyPermissionHelper: '該權限僅在主節點生效。',
|
||||
view: '檢視',
|
||||
manage: '管理',
|
||||
authManage: '認證管理',
|
||||
auth: {
|
||||
providerNavigation: '認證類型',
|
||||
providers: {
|
||||
ldap: 'AD/LDAP',
|
||||
passkey: 'Passkey',
|
||||
radius: 'Radius',
|
||||
oidc: 'OIDC',
|
||||
saml2: 'SAML2',
|
||||
cas: 'CAS',
|
||||
oauth2: 'OAuth2',
|
||||
dingtalk: '釘釘',
|
||||
feishu: '飛書',
|
||||
wecom: '企業微信',
|
||||
},
|
||||
providerDescriptions: {
|
||||
ldap: '相容 Active Directory、OpenLDAP 等 LDAP 服務',
|
||||
passkey: '使用裝置憑證進行無密碼安全登入',
|
||||
radius: '透過 Radius 服務完成網路存取認證',
|
||||
oidc: '使用 OpenID Connect 接入企業單一登入',
|
||||
saml2: '透過 SAML2 完成企業身分聯合登入',
|
||||
cas: '接入集中式認證服務實現單一登入',
|
||||
oauth2: '接入相容 OAuth2 的第三方身分服務',
|
||||
dingtalk: '使用釘釘組織身分和掃碼登入',
|
||||
feishu: '使用飛書組織身分和帳號同步',
|
||||
wecom: '使用企業微信成員身分認證',
|
||||
},
|
||||
planned: '待接入',
|
||||
plannedTitle: '{0} 認證設定',
|
||||
plannedDesc: '該認證方式正在規劃中,暫不可用。',
|
||||
ldap: {
|
||||
enable: '是否啟用',
|
||||
enabled: '已啟用',
|
||||
disabled: '未啟用',
|
||||
connection: '基礎連線',
|
||||
connectionDesc: '設定目錄服務和用於搜尋使用者的綁定帳號。',
|
||||
serverURL: '伺服器位址',
|
||||
serverURLHelper: '支援 ldap:// 和 ldaps:// 位址。',
|
||||
userBaseDN: '使用者 Base DN',
|
||||
userBaseDNHelper: 'LDAP 使用者搜尋的起始 DN,可使用 OU、CN 或網域根 DN。',
|
||||
bindDN: '綁定 DN',
|
||||
bindPassword: '密碼',
|
||||
passwordSaved: '留空則保留已儲存的密碼',
|
||||
userSearch: '使用者搜尋',
|
||||
userSearchDesc: '設定使用者搜尋基準與過濾器,並映射到 1Panel 使用者名稱欄位。',
|
||||
userFilter: '使用者篩選器',
|
||||
userFilterTooltip: '按使用者名稱查詢時替換 %(user)s,全量讀取時替換為 *。',
|
||||
userFilterHelper: '搜尋和認證時會對使用者名稱執行 LDAP filter escaping。',
|
||||
attributeMap: '映射屬性',
|
||||
attributeMapTooltip: '1Panel 使用者名稱欄位(name)到 LDAP 屬性的 JSON 映射。',
|
||||
attributeMapHelper: '填寫映射到 1Panel 使用者名稱欄位(name)的 LDAP 屬性。',
|
||||
advanced: '進階設定',
|
||||
advancedDesc: '設定 TLS 和 LDAP 查詢分頁。',
|
||||
strictSync: '嚴格同步',
|
||||
strictSyncTooltip: '完整全量處理後,LDAP 中不存在的同源使用者將被停用但不會刪除。',
|
||||
strictSyncHelper: '僅作用於完整成功的全量處理;匯入選中使用者時不會停用其他使用者。',
|
||||
skipTLSVerify: '略過 TLS 憑證驗證',
|
||||
skipTLSVerifyTooltip: '連線 LDAPS 時不驗證伺服器端憑證。',
|
||||
skipTLSVerifyHelper: '僅用於可信任的自簽憑證;此設定與嚴格同步互相獨立。',
|
||||
connectTimeout: '連線逾時(秒)',
|
||||
searchPageSize: 'LDAP 查詢分頁大小',
|
||||
restore: '還原',
|
||||
testConnection: '測試連線',
|
||||
testLogin: '測試登入',
|
||||
userImport: '使用者匯入',
|
||||
saveBeforeImport: '請先儲存目前 AD/LDAP 設定,再匯入使用者。',
|
||||
format: '格式化',
|
||||
restoreExample: '還原範例',
|
||||
mappingValid: 'JSON 格式正確,name 已設定。',
|
||||
mappingInvalid: '請輸入有效的 JSON。',
|
||||
mappingObject: '映射屬性必須是 JSON 物件。',
|
||||
mappingOnlyName: '僅支援 name 映射。',
|
||||
mappingStringValues: '每個映射屬性都必須是字串。',
|
||||
mappingNameRequired: 'name 必須是非空字串。',
|
||||
restored: '已還原為上次儲存的設定。',
|
||||
connectionTestSuccess: 'LDAP 連線測試成功。',
|
||||
recentTestSuccess: '最近測試成功:{0}',
|
||||
recentTestFailed: '最近測試失敗:{0}',
|
||||
serverURLRequired: '請輸入 LDAP 伺服器位址。',
|
||||
serverURLInvalid: '請輸入有效的 ldap:// 或 ldaps:// 位址。',
|
||||
userBaseDNRequired: '請輸入使用者 Base DN。',
|
||||
bindDNRequired: '請輸入綁定 DN。',
|
||||
passwordRequired: '請輸入密碼。',
|
||||
userFilterRequired: '請輸入使用者篩選器。',
|
||||
connectTimeoutRequired: '請輸入連線逾時時間。',
|
||||
searchPageSizeRequired: '請輸入 LDAP 查詢分頁大小。',
|
||||
sync: {
|
||||
title: '定時同步',
|
||||
description: '定期讀取 LDAP 全量使用者,並維護 1Panel 中的 LDAP 使用者。',
|
||||
enable: '是否啟用',
|
||||
enableHelper: '關閉後不再自動執行,仍可手動立即同步。',
|
||||
schedule: '執行週期',
|
||||
daily: '每天',
|
||||
weekly: '每週',
|
||||
customCron: '自訂 Cron',
|
||||
preview: '預覽',
|
||||
previewTitle: '未來 5 次執行',
|
||||
previewEmpty: '暫無可用執行時間',
|
||||
cronHelper: '使用「分 時 日 月 週」五段式 Cron 運算式。',
|
||||
autoImport: '自動匯入新使用者',
|
||||
autoImportHelper: '關閉後,僅維護已匯入 LDAP 使用者的目錄識別與狀態,不會自動建立新使用者。',
|
||||
defaultRole: '新使用者角色',
|
||||
defaultRolePlaceholder: '請選擇角色',
|
||||
defaultRoleHelper: '僅用於定時同步中新建立的使用者,後續可在使用者管理中調整。',
|
||||
defaultRoleRequired: '請選擇新 LDAP 使用者的角色。',
|
||||
strictSyncHelper:
|
||||
'全量查詢中缺失的同源 LDAP 使用者將被停用並清理工作階段,但不會刪除使用者、角色和權限。',
|
||||
safetyTitle: '僅在 LDAP 全量查詢完整成功後處理缺失使用者',
|
||||
safetyDescription:
|
||||
'查詢失敗、逾時或分頁結果不完整時,本次工作不會變更使用者狀態。同步範圍沿用使用者搜尋中的 Base DN、篩選器和屬性對應。',
|
||||
runNow: '立即同步',
|
||||
lastRunSuccess: '最近同步成功:{0}',
|
||||
lastRunFailed: '最近同步失敗:{0}',
|
||||
lastRunRunning: '同步開始時間:{0}',
|
||||
sourceDisabled: '請先啟用並儲存 AD/LDAP,再執行同步。',
|
||||
cronRequired: '請輸入 Cron 運算式。',
|
||||
saveBeforeRun: '請先儲存同步設定,再執行同步。',
|
||||
runConfirmTitle: '執行嚴格同步',
|
||||
runConfirmDescription: '完整全量查詢中缺失的 LDAP 使用者將被停用並清理活動工作階段,是否繼續?',
|
||||
runSuccess: 'LDAP 同步完成。',
|
||||
weekdays: {
|
||||
0: '週日',
|
||||
1: '週一',
|
||||
2: '週二',
|
||||
3: '週三',
|
||||
4: '週四',
|
||||
5: '週五',
|
||||
6: '週六',
|
||||
},
|
||||
},
|
||||
syncLogs: {
|
||||
title: '同步記錄',
|
||||
description: '查看定時和手動 LDAP 同步的執行結果。',
|
||||
startedAt: '開始時間',
|
||||
trigger: '觸發方式',
|
||||
manual: '手動執行',
|
||||
scheduled: '定時執行',
|
||||
success: '成功',
|
||||
failed: '失敗',
|
||||
running: '執行中',
|
||||
result: '執行結果',
|
||||
resultSummary: '新增 {0},更新 {1},缺失 {2}',
|
||||
duration: '耗時',
|
||||
action: '處理動作',
|
||||
},
|
||||
testLoginTitle: '測試 AD/LDAP 登入',
|
||||
testLoginDesc:
|
||||
'使用 AD/LDAP 使用者憑證執行 bind 驗證,僅測試認證能力,不建立 1Panel 登入工作階段。',
|
||||
ldapUsername: 'LDAP 使用者名稱',
|
||||
usernameRequired: '請輸入 LDAP 使用者名稱。',
|
||||
startTest: '開始測試',
|
||||
testLoginSuccess: '認證成功。',
|
||||
testLoginSuccessWithDN: '認證成功,使用者 DN:{0}',
|
||||
import: {
|
||||
title: '匯入 AD/LDAP 使用者',
|
||||
source: '資料來源:AD/LDAP 目錄',
|
||||
lastRead: '最近讀取:{0}',
|
||||
cacheHit: '使用快取結果',
|
||||
keywordPlaceholder: '搜尋使用者名稱',
|
||||
search: '搜尋',
|
||||
refresh: '從 LDAP 讀取',
|
||||
refreshTip: '忽略短期快取並重新讀取 LDAP 目錄。',
|
||||
loadFailed: 'LDAP 目錄讀取失敗。',
|
||||
retry: '重試',
|
||||
noData: '未找到目錄使用者。',
|
||||
username: '使用者名稱',
|
||||
status: '狀態',
|
||||
changes: '變更欄位',
|
||||
noChanges: '無變化',
|
||||
importable: '可匯入',
|
||||
updateAvailable: '待更新',
|
||||
upToDate: '已是最新',
|
||||
conflict: '同名衝突',
|
||||
selectedCount: '已選擇 {0} 項',
|
||||
totalCount: '共 {0} 個使用者',
|
||||
newUserRole: '新使用者角色',
|
||||
newUserRoleRequired: '請選擇新使用者角色。',
|
||||
noNewUsers: '本次無新使用者。',
|
||||
roleOnlyForNewUsers: '所選角色僅套用於本次新建使用者。',
|
||||
strictOff: '嚴格同步未啟用,全量處理不會停用使用者。',
|
||||
importSelected: '匯入/更新選中({0})',
|
||||
importAll: '匯入/更新全部({0})',
|
||||
previewTitle: '確認全量處理',
|
||||
previewDesc: '已完整讀取 LDAP 目錄,目前搜尋關鍵字不會縮小本次處理範圍。',
|
||||
created: '新建',
|
||||
updated: '更新',
|
||||
unchanged: '無變化',
|
||||
conflicts: '衝突',
|
||||
missing: '將停用',
|
||||
reactivated: '恢復',
|
||||
strictWarning:
|
||||
'嚴格同步已啟用。LDAP 中不存在的同源使用者將無法繼續登入,但不會刪除使用者、角色和本機權限。',
|
||||
missingUsers: 'LDAP 中不存在的使用者',
|
||||
missingScope: '僅處理目前 LDAP 認證來源。',
|
||||
willDisable: '將停用',
|
||||
confirmAll: '確認匯入',
|
||||
confirmAllWithMissing: '確認匯入並停用 {0} 個使用者',
|
||||
executeSuccess: 'LDAP 使用者處理成功。',
|
||||
queryExpired: '目錄查詢結果已過期,請重新從 LDAP 讀取。',
|
||||
planIncomplete: 'LDAP 目錄未完整讀取,無法執行全量處理。',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
logExport: {
|
||||
title: '匯出日誌',
|
||||
|
||||
@@ -3910,6 +3910,59 @@ const message = {
|
||||
noFail: '挂载失败不影响系统启动',
|
||||
},
|
||||
xpack: {
|
||||
ldap: {
|
||||
source: '来源',
|
||||
directoryMissing: 'LDAP 中不存在',
|
||||
localCredentialsManaged: '该用户的用户名和密码由 LDAP 管理,无法在本地修改。',
|
||||
sources: {
|
||||
local: '本地',
|
||||
ldap: 'LDAP',
|
||||
},
|
||||
importUsers: '导入 AD/LDAP 用户',
|
||||
searchUsersPlaceholder: '搜索用户名',
|
||||
readFromLDAP: '从 LDAP 读取',
|
||||
selectedUsers: '已选择 {0} 项',
|
||||
queriedAt: '读取时间',
|
||||
cachedResult: '缓存结果',
|
||||
roleForNewUsers: '新用户角色',
|
||||
selectRole: '请选择角色',
|
||||
roleOnlyForNewUsers: '仅在本次处理包含新用户时需要选择角色。',
|
||||
roleRequiredForNewUsers: '请为新的 LDAP 用户选择角色。',
|
||||
changedFields: '变更字段',
|
||||
importSelected: '导入/更新选中',
|
||||
importAll: '导入/更新全部',
|
||||
importPreview: 'AD/LDAP 导入预览',
|
||||
importCompleted: 'AD/LDAP 用户处理完成',
|
||||
incompletePreview: 'LDAP 目录未完整读取,请重新从 LDAP 读取。',
|
||||
missingUsersWarning: '严格同步将停用 LDAP 中不存在的用户。',
|
||||
missingUsersWarningDetail: '{0} 个本地 LDAP 用户将无法继续登录。',
|
||||
action: '处理结果',
|
||||
reason: '原因',
|
||||
noImportChanges: '没有需要处理的变更',
|
||||
confirmImport: '确认导入',
|
||||
created: '新建',
|
||||
updated: '更新',
|
||||
reactivated: '恢复',
|
||||
unchanged: '无变化',
|
||||
conflicts: '冲突',
|
||||
missing: '将停用',
|
||||
missingUsersConfirm: 'LDAP 中不存在的 {0} 个用户将被停用并退出登录,是否继续?',
|
||||
strictSyncConfirm: '确认严格同步',
|
||||
status: { importable: '可导入', update_available: '待更新', up_to_date: '已是最新', conflict: '同名冲突' },
|
||||
fields: { name: '用户名', externalDN: '目录 DN', externalID: '外部标识', authSourceStatus: '认证状态' },
|
||||
actions: {
|
||||
created: '新建',
|
||||
updated: '更新',
|
||||
reactivated: '恢复',
|
||||
unchanged: '无变化',
|
||||
skipped: '跳过',
|
||||
conflicts: '冲突',
|
||||
conflict: '冲突',
|
||||
missing: '停用',
|
||||
errors: '错误',
|
||||
error: '错误',
|
||||
},
|
||||
},
|
||||
expiresEnterpriseAlert: '温馨提醒:企业版许可证将于 [{0}] 天后到期,届时将停止使用所有企业版功能。',
|
||||
expiresProAlert: '温馨提醒:专业版许可证将于 [{0}] 天后到期,届时将停止使用所有专业版功能。',
|
||||
menu: '高级功能',
|
||||
@@ -5120,6 +5173,208 @@ const message = {
|
||||
masterOnlyPermissionHelper: '该权限仅在主节点生效。',
|
||||
view: '查看',
|
||||
manage: '管理',
|
||||
authManage: '认证管理',
|
||||
auth: {
|
||||
providerNavigation: '认证类型',
|
||||
providers: {
|
||||
ldap: 'AD/LDAP',
|
||||
passkey: 'Passkey',
|
||||
radius: 'Radius',
|
||||
oidc: 'OIDC',
|
||||
saml2: 'SAML2',
|
||||
cas: 'CAS',
|
||||
oauth2: 'OAuth2',
|
||||
dingtalk: '钉钉',
|
||||
feishu: '飞书',
|
||||
wecom: '企业微信',
|
||||
},
|
||||
providerDescriptions: {
|
||||
ldap: '兼容 Active Directory、OpenLDAP 等 LDAP 服务',
|
||||
passkey: '使用设备凭据进行无密码安全登录',
|
||||
radius: '通过 Radius 服务完成网络访问认证',
|
||||
oidc: '使用 OpenID Connect 接入企业单点登录',
|
||||
saml2: '通过 SAML2 完成企业身份联合登录',
|
||||
cas: '接入集中式认证服务实现单点登录',
|
||||
oauth2: '接入兼容 OAuth2 的第三方身份服务',
|
||||
dingtalk: '使用钉钉组织身份和扫码登录',
|
||||
feishu: '使用飞书组织身份和账号同步',
|
||||
wecom: '使用企业微信成员身份认证',
|
||||
},
|
||||
planned: '待接入',
|
||||
plannedTitle: '{0} 认证设置',
|
||||
plannedDesc: '该认证方式正在规划中,暂不可用。',
|
||||
ldap: {
|
||||
enable: '是否开启',
|
||||
enabled: '已启用',
|
||||
disabled: '未启用',
|
||||
connection: '基础连接',
|
||||
connectionDesc: '配置目录服务和用于搜索用户的绑定账号。',
|
||||
serverURL: '服务端地址',
|
||||
serverURLHelper: '支持 ldap:// 和 ldaps:// 地址。',
|
||||
userBaseDN: '用户 Base DN',
|
||||
userBaseDNHelper: 'LDAP 用户搜索的起始 DN,可使用 OU、CN 或域根 DN。',
|
||||
bindDN: '绑定 DN',
|
||||
bindPassword: '密码',
|
||||
passwordSaved: '留空则保留已保存的密码',
|
||||
userSearch: '用户搜索',
|
||||
userSearchDesc: '配置用户搜索基准与过滤器,并映射到 1Panel 用户名字段。',
|
||||
userFilter: '用户过滤器',
|
||||
userFilterTooltip: '按用户名查询时替换 %(user)s,全量读取时替换为 *。',
|
||||
userFilterHelper: '搜索和认证时会对用户名执行 LDAP filter escaping。',
|
||||
attributeMap: '映射属性',
|
||||
attributeMapTooltip: '1Panel 用户名字段(name)到 LDAP 属性的 JSON 映射。',
|
||||
attributeMapHelper: '填写映射到 1Panel 用户名字段(name)的 LDAP 属性。',
|
||||
advanced: '高级设置',
|
||||
advancedDesc: '配置 TLS 和 LDAP 查询分页。',
|
||||
strictSync: '严格同步',
|
||||
strictSyncTooltip: '完整全量处理后,LDAP 中不存在的同源用户将被停用但不会删除。',
|
||||
strictSyncHelper: '仅作用于完整成功的全量处理;导入选中用户时不会停用其他用户。',
|
||||
skipTLSVerify: '跳过 TLS 证书校验',
|
||||
skipTLSVerifyTooltip: '连接 LDAPS 时不校验服务端证书。',
|
||||
skipTLSVerifyHelper: '仅用于可信的自签名证书;该设置与严格同步相互独立。',
|
||||
connectTimeout: '连接超时(秒)',
|
||||
searchPageSize: 'LDAP 查询分页大小',
|
||||
restore: '还原',
|
||||
testConnection: '测试连接',
|
||||
testLogin: '测试登录',
|
||||
userImport: '用户导入',
|
||||
saveBeforeImport: '请先保存当前 AD/LDAP 配置,再导入用户。',
|
||||
format: '格式化',
|
||||
restoreExample: '恢复示例',
|
||||
mappingValid: 'JSON 格式正确,name 已配置。',
|
||||
mappingInvalid: '请输入有效的 JSON。',
|
||||
mappingObject: '映射属性必须是 JSON 对象。',
|
||||
mappingOnlyName: '仅支持 name 映射。',
|
||||
mappingStringValues: '每个映射属性都必须是字符串。',
|
||||
mappingNameRequired: 'name 必须是非空字符串。',
|
||||
restored: '已还原为上次保存的配置。',
|
||||
connectionTestSuccess: 'LDAP 连接测试成功。',
|
||||
recentTestSuccess: '最近测试成功:{0}',
|
||||
recentTestFailed: '最近测试失败:{0}',
|
||||
serverURLRequired: '请输入 LDAP 服务端地址。',
|
||||
serverURLInvalid: '请输入有效的 ldap:// 或 ldaps:// 地址。',
|
||||
userBaseDNRequired: '请输入用户 Base DN。',
|
||||
bindDNRequired: '请输入绑定 DN。',
|
||||
passwordRequired: '请输入密码。',
|
||||
userFilterRequired: '请输入用户过滤器。',
|
||||
connectTimeoutRequired: '请输入连接超时时间。',
|
||||
searchPageSizeRequired: '请输入 LDAP 查询分页大小。',
|
||||
sync: {
|
||||
title: '定时同步',
|
||||
description: '定期读取 LDAP 全量用户,并维护 1Panel 中的 LDAP 用户。',
|
||||
enable: '是否启用',
|
||||
enableHelper: '关闭后不再自动执行,仍可手动立即同步。',
|
||||
schedule: '执行周期',
|
||||
daily: '每天',
|
||||
weekly: '每周',
|
||||
customCron: '自定义 Cron',
|
||||
preview: '预览',
|
||||
previewTitle: '未来 5 次执行',
|
||||
previewEmpty: '暂无可用执行时间',
|
||||
cronHelper: '使用“分 时 日 月 周”五段式 Cron 表达式。',
|
||||
autoImport: '自动导入新用户',
|
||||
autoImportHelper: '关闭后,仅维护已导入 LDAP 用户的目录标识和状态,不会自动创建新用户。',
|
||||
defaultRole: '新用户角色',
|
||||
defaultRolePlaceholder: '请选择角色',
|
||||
defaultRoleHelper: '仅用于定时同步中新创建的用户,后续可在用户管理中调整。',
|
||||
defaultRoleRequired: '请选择新 LDAP 用户的角色。',
|
||||
strictSyncHelper:
|
||||
'全量查询中缺失的同源 LDAP 用户将被停用并清理会话,但不会删除用户、角色和权限。',
|
||||
safetyTitle: '仅在 LDAP 全量查询完整成功后处理缺失用户',
|
||||
safetyDescription:
|
||||
'查询失败、超时或分页结果不完整时,本次任务不会改变用户状态。同步范围沿用用户搜索中的 Base DN、过滤器和属性映射。',
|
||||
runNow: '立即同步',
|
||||
lastRunSuccess: '最近同步成功:{0}',
|
||||
lastRunFailed: '最近同步失败:{0}',
|
||||
lastRunRunning: '同步开始时间:{0}',
|
||||
sourceDisabled: '请先启用并保存 AD/LDAP,再执行同步。',
|
||||
cronRequired: '请输入 Cron 表达式。',
|
||||
saveBeforeRun: '请先保存同步设置,再执行同步。',
|
||||
runConfirmTitle: '执行严格同步',
|
||||
runConfirmDescription: '完整全量查询中缺失的 LDAP 用户将被停用并清理活动会话,是否继续?',
|
||||
runSuccess: 'LDAP 同步完成。',
|
||||
weekdays: {
|
||||
0: '周日',
|
||||
1: '周一',
|
||||
2: '周二',
|
||||
3: '周三',
|
||||
4: '周四',
|
||||
5: '周五',
|
||||
6: '周六',
|
||||
},
|
||||
},
|
||||
syncLogs: {
|
||||
title: '同步记录',
|
||||
description: '查看定时和手动 LDAP 同步的执行结果。',
|
||||
startedAt: '开始时间',
|
||||
trigger: '触发方式',
|
||||
manual: '手动执行',
|
||||
scheduled: '定时执行',
|
||||
success: '成功',
|
||||
failed: '失败',
|
||||
running: '执行中',
|
||||
result: '执行结果',
|
||||
resultSummary: '新增 {0},更新 {1},缺失 {2}',
|
||||
duration: '耗时',
|
||||
action: '处理动作',
|
||||
},
|
||||
testLoginTitle: '测试 AD/LDAP 登录',
|
||||
testLoginDesc: '使用 AD/LDAP 用户凭据执行 bind 验证,仅测试认证能力,不创建 1Panel 登录会话。',
|
||||
ldapUsername: 'LDAP 用户名',
|
||||
usernameRequired: '请输入 LDAP 用户名。',
|
||||
startTest: '开始测试',
|
||||
testLoginSuccess: '认证成功。',
|
||||
testLoginSuccessWithDN: '认证成功,用户 DN:{0}',
|
||||
import: {
|
||||
title: '导入 AD/LDAP 用户',
|
||||
source: '数据来源:AD/LDAP 目录',
|
||||
lastRead: '最近读取:{0}',
|
||||
cacheHit: '使用缓存结果',
|
||||
keywordPlaceholder: '搜索用户名',
|
||||
search: '搜索',
|
||||
refresh: '从 LDAP 读取',
|
||||
refreshTip: '忽略短时缓存并重新读取 LDAP 目录。',
|
||||
loadFailed: 'LDAP 目录读取失败。',
|
||||
retry: '重试',
|
||||
noData: '未找到目录用户。',
|
||||
username: '用户名',
|
||||
status: '状态',
|
||||
changes: '变更字段',
|
||||
noChanges: '无变化',
|
||||
importable: '可导入',
|
||||
updateAvailable: '待更新',
|
||||
upToDate: '已是最新',
|
||||
conflict: '同名冲突',
|
||||
selectedCount: '已选择 {0} 项',
|
||||
totalCount: '共 {0} 个用户',
|
||||
newUserRole: '新用户角色',
|
||||
newUserRoleRequired: '请选择新用户角色。',
|
||||
noNewUsers: '本次无新用户。',
|
||||
roleOnlyForNewUsers: '所选角色仅应用于本次新建用户。',
|
||||
strictOff: '严格同步未启用,全量处理不会停用用户。',
|
||||
importSelected: '导入/更新选中({0})',
|
||||
importAll: '导入/更新全部({0})',
|
||||
previewTitle: '确认全量处理',
|
||||
previewDesc: '已完整读取 LDAP 目录,当前搜索关键字不会缩小本次处理范围。',
|
||||
created: '新建',
|
||||
updated: '更新',
|
||||
unchanged: '无变化',
|
||||
conflicts: '冲突',
|
||||
missing: '将停用',
|
||||
reactivated: '恢复',
|
||||
strictWarning:
|
||||
'严格同步已启用。LDAP 中不存在的同源用户将无法继续登录,但不会删除用户、角色和本地权限。',
|
||||
missingUsers: 'LDAP 中不存在的用户',
|
||||
missingScope: '仅处理当前 LDAP 认证源。',
|
||||
willDisable: '将停用',
|
||||
confirmAll: '确认导入',
|
||||
confirmAllWithMissing: '确认导入并停用 {0} 个用户',
|
||||
executeSuccess: 'LDAP 用户处理成功。',
|
||||
queryExpired: '目录查询结果已过期,请重新从 LDAP 读取。',
|
||||
planIncomplete: 'LDAP 目录未完整读取,不能执行全量处理。',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
customApp: {
|
||||
name: '自定义仓库',
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
<template>
|
||||
<DrawerPro v-model="open" :header="$t('xpack.user.userInfo')">
|
||||
<div v-loading="loading">
|
||||
<el-alert
|
||||
v-if="isLDAPUser"
|
||||
class="mb-4"
|
||||
:title="$t('xpack.ldap.localCredentialsManaged')"
|
||||
type="info"
|
||||
:closable="false"
|
||||
show-icon
|
||||
/>
|
||||
<el-form ref="userRef" label-position="top" :model="form" :rules="userRules">
|
||||
<input
|
||||
class="hidden-autofill-field"
|
||||
@@ -17,7 +25,13 @@
|
||||
tabindex="-1"
|
||||
/>
|
||||
<el-form-item :label="$t('commons.login.username')" prop="name">
|
||||
<el-input type="primary" v-model="form.name" name="profile-name" autocomplete="off" />
|
||||
<el-input
|
||||
type="primary"
|
||||
v-model="form.name"
|
||||
name="profile-name"
|
||||
autocomplete="off"
|
||||
:disabled="isLDAPUser"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('commons.login.password')" prop="password">
|
||||
<el-input
|
||||
@@ -27,10 +41,11 @@
|
||||
v-model.trim="form.password"
|
||||
name="profile-new-password"
|
||||
autocomplete="new-password"
|
||||
:disabled="isLDAPUser"
|
||||
/>
|
||||
<span class="input-help">{{ $t('setting.passwordEmptyTip') }}</span>
|
||||
<span v-if="!isLDAPUser" class="input-help">{{ $t('setting.passwordEmptyTip') }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.password" :label="$t('setting.oldPassword')" prop="oldPassword">
|
||||
<el-form-item v-if="form.password && !isLDAPUser" :label="$t('setting.oldPassword')" prop="oldPassword">
|
||||
<el-input
|
||||
type="password"
|
||||
show-password
|
||||
@@ -147,7 +162,7 @@
|
||||
<el-button :disabled="loading" @click="open = false">
|
||||
{{ $t('commons.button.cancel') }}
|
||||
</el-button>
|
||||
<el-button :disabled="loading" type="primary" @click="onSubmit(userRef)">
|
||||
<el-button :disabled="loading || isLDAPUser" type="primary" @click="onSubmit(userRef)">
|
||||
{{ $t('commons.button.confirm') }}
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -442,6 +457,7 @@ const mfaForm = reactive({
|
||||
const passkeyForm = reactive({
|
||||
name: '',
|
||||
});
|
||||
const isLDAPUser = computed(() => (props.currentUser?.authSource || '').toLowerCase() === 'ldap');
|
||||
|
||||
const passkeyPrereqBindDomain = computed(() => hasBindDomain.value);
|
||||
const passkeyPrereqHttps = computed(() => window.isSecureContext);
|
||||
@@ -812,6 +828,7 @@ const buildPasskeyAttestation = (credential: PublicKeyCredential) => {
|
||||
|
||||
const onSubmit = async (formEl: FormInstance | undefined) => {
|
||||
if (!formEl) return;
|
||||
if (isLDAPUser.value) return;
|
||||
const valid = await formEl.validateField(getUserFormFields(), () => {});
|
||||
if (!valid) return;
|
||||
const needReLogin = form.name !== props.currentUser?.name || !!form.password;
|
||||
|
||||
Reference in New Issue
Block a user