From 5cf7748cc7cf27724199a36f66e03e29078d05c7 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 13 Oct 2026 10:12:56 +0000 Subject: [PATCH 1/6] Update hightide to 0.17.2 and add Spanish and French translations - Migrate to context-based translations (HightideProvider translation prop) - Use Select.Option / triggerProps after the Select API change - Register additional locales with English fallback for hightide strings Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_018UdLmpCT1rJ39n1d22CkJn --- .storybook/preview.ts | 3 +- locales/es-ES.arb | 522 +++++++++++++ locales/fr-FR.arb | 522 +++++++++++++ package-lock.json | 33 +- package.json | 2 +- src/i18n/hightideConfig.ts | 39 + src/i18n/translations.ts | 1433 +++++++++++++++++++++++++++++++++- src/i18n/useTranslation.ts | 6 +- src/login/pages/LoginOtp.tsx | 6 +- src/main.tsx | 3 +- 10 files changed, 2549 insertions(+), 20 deletions(-) create mode 100644 locales/es-ES.arb create mode 100644 locales/fr-FR.arb create mode 100644 src/i18n/hightideConfig.ts diff --git a/.storybook/preview.ts b/.storybook/preview.ts index c3c0298..fed89e8 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -4,6 +4,7 @@ import '@helpwave/hightide/style/globals.css' import '../src/fonts.css' import '../src/index.css' import { HightideProvider } from '@helpwave/hightide' +import { hightideProviderProps } from '../src/i18n/hightideConfig' if (typeof window !== 'undefined' && typeof (globalThis as { process?: { env: Record } }).process === 'undefined') { (globalThis as { process: { env: Record } }).process = { env: {} } @@ -47,7 +48,7 @@ const preview: Preview = { } return React.createElement( HightideProvider, - {}, + hightideProviderProps, React.createElement(Story) ) } diff --git a/locales/es-ES.arb b/locales/es-ES.arb new file mode 100644 index 0000000..a8a4e3b --- /dev/null +++ b/locales/es-ES.arb @@ -0,0 +1,522 @@ +{ + "@@locale": "es-ES", + "helpwaveId": "helpwave id", + "@helpwaveId": { + "description": "Title for helpwave id badge" + }, + "nOrganization": "{count, plural, =1{# organización} other{# organizaciones}}", + "@nOrganization": { + "placeholders": { + "count": { + "type": "number" + } + } + }, + "imprint": "Aviso legal", + "@imprint": { + "description": "Link text for imprint" + }, + "privacy": "Privacidad", + "@privacy": { + "description": "Link text for privacy policy" + }, + "forgotPassword": "¿Ha olvidado su contraseña?", + "@forgotPassword": { + "description": "Link text for forgot password" + }, + "noAccount": "¿No tiene cuenta?", + "@noAccount": { + "description": "Text before register link" + }, + "register": "Registrarse", + "@register": { + "description": "Register button text" + }, + "backToLogin": "Volver al inicio de sesión", + "@backToLogin": { + "description": "Back to login link text" + }, + "usernameOrEmail": "Nombre de usuario o correo electrónico", + "@usernameOrEmail": { + "description": "Label for username or email input field" + }, + "username": "Nombre de usuario", + "@username": { + "description": "Label for username input field" + }, + "password": "Contraseña", + "@password": { + "description": "Label for password input field" + }, + "rememberMe": "Recordarme", + "@rememberMe": { + "description": "Label for remember me checkbox" + }, + "doLogIn": "Iniciar sesión", + "@doLogIn": { + "description": "Log in button text" + }, + "doForgotPassword": "¿Ha olvidado su contraseña?", + "@doForgotPassword": { + "description": "Forgot password button text" + }, + "doRegister": "Registrarse", + "@doRegister": { + "description": "Register button text" + }, + "identity-provider-redirector": "O inicie sesión con", + "@identity-provider-redirector": { + "description": "Text before social login providers" + }, + "acceptTerms": "Acepto los términos y condiciones", + "@acceptTerms": { + "description": "Text for terms acceptance checkbox" + }, + "acceptPrivacy": "He leído y acepto la", + "@acceptPrivacy": { + "description": "Privacy policy acceptance prefix" + }, + "privacyPolicy": "política de privacidad", + "@privacyPolicy": { + "description": "Privacy policy link text" + }, + "privacyRequired": "Debe aceptar la política de privacidad para continuar.", + "@privacyRequired": { + "description": "Error when privacy not accepted" + }, + "captchaFailed": "La verificación del captcha ha fallado. Inténtelo de nuevo.", + "@captchaFailed": { + "description": "Error when captcha verification fails" + }, + "captchaLoading": "Cargando captcha…", + "@captchaLoading": { + "description": "Captcha loading placeholder" + }, + "realmBannerTeam": "Espacio de trabajo del equipo", + "@realmBannerTeam": { + "description": "Banner headline shown on every page of the team realm" + }, + "realmBannerAdmin": "Portal de administración", + "@realmBannerAdmin": { + "description": "Banner headline shown on every page of the admin/master realm" + }, + "realmBannerOther": "Realm interno", + "@realmBannerOther": { + "description": "Banner headline shown on every page of a non-customer realm" + }, + "realmBannerSubtitleTeam": "Está iniciando sesión en un área privilegiada del equipo.", + "@realmBannerSubtitleTeam": { + "description": "Subtitle below the team realm banner" + }, + "realmBannerSubtitleAdmin": "Acceso administrativo: todas las acciones se auditan.", + "@realmBannerSubtitleAdmin": { + "description": "Subtitle below the admin realm banner" + }, + "realmBannerSubtitleOther": "Este no es el inicio de sesión habitual para clientes.", + "@realmBannerSubtitleOther": { + "description": "Subtitle below the fallback realm banner" + }, + "passwordNew": "Nueva contraseña", + "@passwordNew": { + "description": "Label for new password input field" + }, + "passwordConfirm": "Confirmar contraseña", + "@passwordConfirm": { + "description": "Label for password confirmation input field" + }, + "doSubmit": "Enviar", + "@doSubmit": { + "description": "Submit button text" + }, + "otp": "Contraseña de un solo uso", + "@otp": { + "description": "Label for OTP input field" + }, + "loginOtp": "Código de verificación", + "@loginOtp": { + "description": "Label for login OTP/verification code input field" + }, + "termsText": "Texto de los términos y condiciones", + "@termsText": { + "description": "Default terms and conditions text" + }, + "doAccept": "Aceptar", + "@doAccept": { + "description": "Accept button text" + }, + "doDecline": "Rechazar", + "@doDecline": { + "description": "Decline button text" + }, + "logoutConfirmHeader": "¿Seguro que desea cerrar sesión?", + "@logoutConfirmHeader": { + "description": "Logout confirmation message" + }, + "doLogout": "Cerrar sesión", + "@doLogout": { + "description": "Logout button text" + }, + "doSave": "Guardar", + "@doSave": { + "description": "Save button text" + }, + "doUpdate": "Actualizar", + "@doUpdate": { + "description": "Update button text for password form" + }, + "updatePassword": "Actualizar contraseña", + "@updatePassword": { + "description": "Update password button text" + }, + "accountStatusActive": "Activa", + "@accountStatusActive": { + "description": "Account status label when signed in" + }, + "profilePicture": "Foto de perfil", + "@profilePicture": { + "description": "Profile picture section heading" + }, + "profilePictureComingSoon": "Subir foto de perfil: próximamente.", + "@profilePictureComingSoon": { + "description": "Placeholder for profile picture upload" + }, + "uploadProfilePicture": "Subir foto", + "@uploadProfilePicture": { + "description": "Button to upload profile picture" + }, + "removeProfilePicture": "Eliminar foto", + "@removeProfilePicture": { + "description": "Button to remove profile picture" + }, + "profilePictureUploading": "Subiendo…", + "@profilePictureUploading": { + "description": "Status while profile picture is being uploaded" + }, + "profilePictureUploadFailed": "Error al subir. Inténtelo de nuevo.", + "@profilePictureUploadFailed": { + "description": "Error when profile picture upload fails" + }, + "profilePictureTooLarge": "El archivo seleccionado supera los 5 MB.", + "@profilePictureTooLarge": { + "description": "Error when picture exceeds size limit" + }, + "profilePictureWrongType": "Solo se admiten imágenes JPEG, PNG o WebP.", + "@profilePictureWrongType": { + "description": "Error when picture has unsupported type" + }, + "profilePictureHelp": "JPEG, PNG o WebP, máx. 5 MB. La imagen se redimensiona y se almacena de forma segura.", + "@profilePictureHelp": { + "description": "Helper text below upload button" + }, + "accountSectionProfile": "Perfil", + "@accountSectionProfile": { + "description": "Account profile section title" + }, + "personalInfoTitle": "Información personal", + "@personalInfoTitle": { + "description": "Personal info section title" + }, + "passwordSectionTitle": "Actualizar contraseña", + "@passwordSectionTitle": { + "description": "Password section title" + }, + "securitySectionTitle": "Seguridad", + "@securitySectionTitle": { + "description": "Security section title" + }, + "dangerZoneTitle": "Zona de peligro", + "@dangerZoneTitle": { + "description": "Danger zone section title" + }, + "doCancel": "Cancelar", + "@doCancel": { + "description": "Cancel button text" + }, + "backToApplication": "Volver a la aplicación", + "@backToApplication": { + "description": "Back to application button text" + }, + "backToAccount": "Volver a la cuenta", + "@backToAccount": { + "description": "Back to account button text in account console" + }, + "doContinue": "Continuar", + "@doContinue": { + "description": "Continue button text" + }, + "emailVerificationBody1": "Revise su correo electrónico para encontrar el enlace de verificación.", + "@emailVerificationBody1": { + "description": "Email verification instruction text" + }, + "emailVerificationBody": "Revise su correo electrónico para encontrar el enlace de verificación.", + "@emailVerificationBody": { + "description": "Email verification instruction text (alternative key)" + }, + "doClickHere": "Haga clic aquí", + "@doClickHere": { + "description": "Click here button/link text" + }, + "doRestart": "Reiniciar", + "@doRestart": { + "description": "Restart button text" + }, + "sessionExpired": "El tiempo asignado para la conexión ha expirado.\nEl proceso de inicio de sesión se reiniciará desde el principio.", + "@sessionExpired": { + "description": "Session/timeout expired message" + }, + "deleteAccountConfirm": "¿Seguro que desea eliminar su cuenta?", + "@deleteAccountConfirm": { + "description": "Delete account confirmation message" + }, + "doDeleteAccount": "Eliminar cuenta", + "@doDeleteAccount": { + "description": "Delete account button text" + }, + "deleteCredentialConfirm": "¿Seguro que desea eliminar esta credencial?", + "@deleteCredentialConfirm": { + "description": "Delete credential confirmation message" + }, + "doDelete": "Eliminar", + "@doDelete": { + "description": "Delete button text" + }, + "frontchannelLogoutMessage": "Cerrando sesión...", + "@frontchannelLogoutMessage": { + "description": "Frontchannel logout message" + }, + "linkIdpMessage": "Vinculando proveedor de identidad...", + "@linkIdpMessage": { + "description": "Link identity provider message" + }, + "idpLinkConfirmMessage": "¿Desea vincular este proveedor de identidad a su cuenta?", + "@idpLinkConfirmMessage": { + "description": "IDP link confirmation message" + }, + "doLink": "Vincular", + "@doLink": { + "description": "Link button text" + }, + "idpLinkConfirmOverrideMessage": "Este proveedor de identidad ya está vinculado a otra cuenta. ¿Desea reemplazar la vinculación?", + "@idpLinkConfirmOverrideMessage": { + "description": "IDP link override confirmation message" + }, + "doOverride": "Reemplazar", + "@doOverride": { + "description": "Override button text" + }, + "email": "Correo electrónico", + "@email": { + "description": "Label for email input field" + }, + "firstName": "Nombre", + "@firstName": { + "description": "Label for first name input field" + }, + "lastName": "Apellidos", + "@lastName": { + "description": "Label for last name input field" + }, + "oauthGrantTitle": "Conceder acceso", + "@oauthGrantTitle": { + "description": "OAuth grant title" + }, + "oauthGrantMessage": "La aplicación solicita acceso a su cuenta", + "@oauthGrantMessage": { + "description": "OAuth grant message" + }, + "oauthGrantScopes": "Permisos solicitados", + "@oauthGrantScopes": { + "description": "OAuth grant scopes label" + }, + "pageExpiredMessage": "Esta página ha caducado. Reinicie el proceso de inicio de sesión.", + "@pageExpiredMessage": { + "description": "Page expired message" + }, + "passkeysConditionalAuthenticateMessage": "Autenticando con passkey...", + "@passkeysConditionalAuthenticateMessage": { + "description": "Passkeys conditional authenticate message" + }, + "recoveryAuthnCodeConfigMessage": "Configure su código de autenticación de recuperación", + "@recoveryAuthnCodeConfigMessage": { + "description": "Recovery authentication code config message" + }, + "recoveryCode": "Código de recuperación", + "@recoveryCode": { + "description": "Label for recovery code input field" + }, + "resetOtpMessage": "Su OTP se ha restablecido. Configure uno nuevo.", + "@resetOtpMessage": { + "description": "Reset OTP message" + }, + "loginTotpScanBarcode": "Escanee este código QR con su aplicación de autenticación", + "@loginTotpScanBarcode": { + "description": "TOTP scan barcode instruction" + }, + "loginTotpOneTime": "Código de un solo uso", + "@loginTotpOneTime": { + "description": "Label for TOTP one-time code input field" + }, + "samlPostFormMessage": "Redirigiendo al proveedor de identidad...", + "@samlPostFormMessage": { + "description": "SAML post form message" + }, + "selectAuthenticatorTitle": "Seleccionar autenticador", + "@selectAuthenticatorTitle": { + "description": "Select authenticator title" + }, + "selectOrganizationTitle": "Seleccionar organización", + "@selectOrganizationTitle": { + "description": "Select organization title" + }, + "x509InfoTitle": "Información del certificado X.509", + "@x509InfoTitle": { + "description": "X.509 info title" + }, + "x509InfoMessage": "Proporcione la información de su certificado X.509", + "@x509InfoMessage": { + "description": "X.509 info message" + }, + "webauthnAuthenticateMessage": "Autentíquese con su llave de seguridad", + "@webauthnAuthenticateMessage": { + "description": "WebAuthn authenticate message" + }, + "webauthnErrorMessage": "Se ha producido un error durante la autenticación WebAuthn", + "@webauthnErrorMessage": { + "description": "WebAuthn error message" + }, + "webauthnRegisterMessage": "Registre su llave de seguridad", + "@webauthnRegisterMessage": { + "description": "WebAuthn register message" + }, + "oauth2DeviceVerifyUserCodeMessage": "Introduzca el código de usuario que aparece en su dispositivo", + "@oauth2DeviceVerifyUserCodeMessage": { + "description": "OAuth2 device verify user code message" + }, + "userCode": "Código de usuario", + "@userCode": { + "description": "Label for user code input field" + }, + "errorInvalidUsernameOrPassword": "Nombre de usuario o contraseña no válidos", + "@errorInvalidUsernameOrPassword": { + "description": "Login form field error" + }, + "errorInvalidUsername": "Nombre de usuario no válido", + "@errorInvalidUsername": { + "description": "Username field error" + }, + "errorInvalidPassword": "Contraseña no válida", + "@errorInvalidPassword": { + "description": "Password field error" + }, + "errorInvalidEmail": "Correo electrónico no válido", + "@errorInvalidEmail": { + "description": "Email field error" + }, + "errorInvalidCode": "Código no válido", + "@errorInvalidCode": { + "description": "Verification code field error" + }, + "errorInvalidRecoveryCode": "Código de recuperación no válido", + "@errorInvalidRecoveryCode": { + "description": "Recovery code field error" + }, + "errorInvalidUserCode": "Código de usuario no válido", + "@errorInvalidUserCode": { + "description": "User code field error" + }, + "errorPasswordMismatch": "Las contraseñas no coinciden", + "@errorPasswordMismatch": { + "description": "Password confirmation field error" + }, + "errorAccountTemporarilyDisabled": "La cuenta está desactivada temporalmente. Póngase en contacto con su administrador o inténtelo de nuevo más tarde.", + "@errorAccountTemporarilyDisabled": { + "description": "Account disabled error" + }, + "errorIncorrectCurrentPassword": "La contraseña actual es incorrecta", + "@errorIncorrectCurrentPassword": { + "description": "Current password field error on account" + }, + "errorInvalidExistingPassword": "La contraseña existente no es válida", + "@errorInvalidExistingPassword": { + "description": "Existing password invalid on account" + }, + "errorPleaseSpecifyPassword": "Introduzca una contraseña", + "@errorPleaseSpecifyPassword": { + "description": "Password required validation message" + }, + "successPasswordChanged": "Contraseña cambiada correctamente", + "@successPasswordChanged": { + "description": "Password change success message" + }, + "successMobileAuthenticatorConfigured": "Autenticador móvil configurado", + "@successMobileAuthenticatorConfigured": { + "description": "TOTP/authenticator success message" + }, + "successAccountUpdated": "Su cuenta se ha actualizado", + "@successAccountUpdated": { + "description": "Account update success message" + }, + "errorAccountDisabled": "La cuenta está desactivada. Póngase en contacto con su administrador.", + "errorUsernameExists": "El nombre de usuario ya existe.", + "errorEmailExists": "El correo electrónico ya existe.", + "errorExpiredCode": "Se ha agotado el tiempo de inicio de sesión. Inicie sesión de nuevo.", + "errorExpiredAction": "La acción ha caducado. Continúe ahora con el inicio de sesión.", + "errorInvalidTotp": "Código del autenticador no válido.", + "errorMissingTotp": "Introduzca el código del autenticador.", + "errorConfigureTotp": "Debe configurar el autenticador móvil para activar su cuenta.", + "errorEmailSendError": "No se ha podido enviar el correo electrónico. Inténtelo de nuevo más tarde.", + "successPasswordUpdated": "Su contraseña se ha actualizado.", + "successEmailSent": "En breve recibirá un correo electrónico con más instrucciones.", + "pageTitleLogin": "Iniciar sesión", + "pageTitleRegister": "Registrarse", + "pageTitleForgotPassword": "Contraseña olvidada", + "pageTitleInfo": "Información", + "pageTitleError": "Error", + "pageTitlePageDisabled": "Página desactivada", + "@pageTitlePageDisabled": { + "description": "Title for disabled/error page" + }, + "pageTitleCode": "Código de verificación", + "pageTitleLogoutConfirm": "Cerrar sesión", + "pageTitleTerms": "Términos y condiciones", + "pageTitleLoginOtp": "Código de verificación", + "pageTitleUpdatePassword": "Actualizar contraseña", + "pageTitleEmailVerification": "Verificación del correo electrónico", + "pageTitleDeleteAccountConfirm": "Eliminar cuenta", + "pageTitleDeleteCredential": "Eliminar credencial", + "pageTitleFrontchannelLogout": "Cerrando sesión", + "pageTitleIdpReviewProfile": "Actualizar datos de la cuenta", + "pageTitleLinkIdp": "Vincular proveedor de identidad", + "pageTitleConfigTotp": "Configurar autenticador móvil", + "pageTitleIdpLinkConfirm": "Vincular cuenta", + "pageTitleIdpLinkConfirmOverride": "Reemplazar vinculación", + "pageTitleIdpLinkEmail": "Vincular cuenta", + "pageTitleOauth2DeviceVerifyUserCode": "Inicio de sesión del dispositivo", + "pageTitleOauthGrant": "Conceder acceso", + "pageTitlePageExpired": "Página caducada", + "pageTitlePasskeysConditionalAuthenticate": "Inicio de sesión con passkey", + "pageTitleLoginPassword": "Iniciar sesión", + "pageTitleRecoveryCodeConfig": "Códigos de recuperación", + "pageTitleRecoveryCodeInput": "Código de recuperación", + "pageTitleResetOtp": "Restablecer autenticador", + "pageTitleUpdateProfile": "Actualizar datos de la cuenta", + "pageTitleLoginUsername": "Iniciar sesión", + "pageTitleX509Info": "Certificado X.509", + "pageTitleSamlPostForm": "Redirigiendo", + "pageTitleSelectAuthenticator": "Seleccionar autenticador", + "pageTitleSelectOrganization": "Seleccionar organización", + "pageTitleUpdateEmail": "Actualizar correo electrónico", + "pageTitleWebauthnAuthenticate": "Inicio de sesión con passkey", + "pageTitleWebauthnError": "Error de passkey", + "pageTitleWebauthnRegister": "Registro de passkey", + "pageTitleAccount": "Cuenta", + "pageTitleAccountPassword": "Contraseña", + "messageHeaderEmailVerification": "Verificación del correo electrónico", + "messageHeaderForgotPassword": "¿Ha olvidado su contraseña?", + "messageHeaderEmailUpdateConfirmation": "Correo de confirmación enviado", + "messageHeaderEmailUpdated": "Correo electrónico actualizado", + "messageHeaderUpdatePassword": "Actualizar contraseña", + "messageHeaderSuccessCode": "Código de éxito", + "messageHeaderErrorCode": "Código de error", + "messageHeaderExecuteActions": "Acciones requeridas" +} diff --git a/locales/fr-FR.arb b/locales/fr-FR.arb new file mode 100644 index 0000000..5390c90 --- /dev/null +++ b/locales/fr-FR.arb @@ -0,0 +1,522 @@ +{ + "@@locale": "fr-FR", + "helpwaveId": "helpwave id", + "@helpwaveId": { + "description": "Title for helpwave id badge" + }, + "nOrganization": "{count, plural, =1{# organisation} other{# organisations}}", + "@nOrganization": { + "placeholders": { + "count": { + "type": "number" + } + } + }, + "imprint": "Mentions légales", + "@imprint": { + "description": "Link text for imprint" + }, + "privacy": "Confidentialité", + "@privacy": { + "description": "Link text for privacy policy" + }, + "forgotPassword": "Mot de passe oublié ?", + "@forgotPassword": { + "description": "Link text for forgot password" + }, + "noAccount": "Pas de compte ?", + "@noAccount": { + "description": "Text before register link" + }, + "register": "S’inscrire", + "@register": { + "description": "Register button text" + }, + "backToLogin": "Retour à la connexion", + "@backToLogin": { + "description": "Back to login link text" + }, + "usernameOrEmail": "Nom d’utilisateur ou e-mail", + "@usernameOrEmail": { + "description": "Label for username or email input field" + }, + "username": "Nom d’utilisateur", + "@username": { + "description": "Label for username input field" + }, + "password": "Mot de passe", + "@password": { + "description": "Label for password input field" + }, + "rememberMe": "Se souvenir de moi", + "@rememberMe": { + "description": "Label for remember me checkbox" + }, + "doLogIn": "Se connecter", + "@doLogIn": { + "description": "Log in button text" + }, + "doForgotPassword": "Mot de passe oublié ?", + "@doForgotPassword": { + "description": "Forgot password button text" + }, + "doRegister": "S’inscrire", + "@doRegister": { + "description": "Register button text" + }, + "identity-provider-redirector": "Ou se connecter avec", + "@identity-provider-redirector": { + "description": "Text before social login providers" + }, + "acceptTerms": "J’accepte les conditions générales", + "@acceptTerms": { + "description": "Text for terms acceptance checkbox" + }, + "acceptPrivacy": "J’ai lu et j’accepte la", + "@acceptPrivacy": { + "description": "Privacy policy acceptance prefix" + }, + "privacyPolicy": "politique de confidentialité", + "@privacyPolicy": { + "description": "Privacy policy link text" + }, + "privacyRequired": "Vous devez accepter la politique de confidentialité pour continuer.", + "@privacyRequired": { + "description": "Error when privacy not accepted" + }, + "captchaFailed": "La vérification du captcha a échoué. Veuillez réessayer.", + "@captchaFailed": { + "description": "Error when captcha verification fails" + }, + "captchaLoading": "Chargement du captcha…", + "@captchaLoading": { + "description": "Captcha loading placeholder" + }, + "realmBannerTeam": "Espace de travail de l’équipe", + "@realmBannerTeam": { + "description": "Banner headline shown on every page of the team realm" + }, + "realmBannerAdmin": "Portail d’administration", + "@realmBannerAdmin": { + "description": "Banner headline shown on every page of the admin/master realm" + }, + "realmBannerOther": "Realm interne", + "@realmBannerOther": { + "description": "Banner headline shown on every page of a non-customer realm" + }, + "realmBannerSubtitleTeam": "Vous vous connectez à un espace d’équipe à accès privilégié.", + "@realmBannerSubtitleTeam": { + "description": "Subtitle below the team realm banner" + }, + "realmBannerSubtitleAdmin": "Accès administrateur – chaque action est journalisée.", + "@realmBannerSubtitleAdmin": { + "description": "Subtitle below the admin realm banner" + }, + "realmBannerSubtitleOther": "Ceci n’est pas la connexion habituelle des clients.", + "@realmBannerSubtitleOther": { + "description": "Subtitle below the fallback realm banner" + }, + "passwordNew": "Nouveau mot de passe", + "@passwordNew": { + "description": "Label for new password input field" + }, + "passwordConfirm": "Confirmation du mot de passe", + "@passwordConfirm": { + "description": "Label for password confirmation input field" + }, + "doSubmit": "Envoyer", + "@doSubmit": { + "description": "Submit button text" + }, + "otp": "Mot de passe à usage unique", + "@otp": { + "description": "Label for OTP input field" + }, + "loginOtp": "Code de vérification", + "@loginOtp": { + "description": "Label for login OTP/verification code input field" + }, + "termsText": "Texte des conditions générales", + "@termsText": { + "description": "Default terms and conditions text" + }, + "doAccept": "Accepter", + "@doAccept": { + "description": "Accept button text" + }, + "doDecline": "Refuser", + "@doDecline": { + "description": "Decline button text" + }, + "logoutConfirmHeader": "Voulez-vous vraiment vous déconnecter ?", + "@logoutConfirmHeader": { + "description": "Logout confirmation message" + }, + "doLogout": "Se déconnecter", + "@doLogout": { + "description": "Logout button text" + }, + "doSave": "Enregistrer", + "@doSave": { + "description": "Save button text" + }, + "doUpdate": "Mettre à jour", + "@doUpdate": { + "description": "Update button text for password form" + }, + "updatePassword": "Modifier le mot de passe", + "@updatePassword": { + "description": "Update password button text" + }, + "accountStatusActive": "Actif", + "@accountStatusActive": { + "description": "Account status label when signed in" + }, + "profilePicture": "Photo de profil", + "@profilePicture": { + "description": "Profile picture section heading" + }, + "profilePictureComingSoon": "Importer une photo de profil – bientôt disponible.", + "@profilePictureComingSoon": { + "description": "Placeholder for profile picture upload" + }, + "uploadProfilePicture": "Importer une photo", + "@uploadProfilePicture": { + "description": "Button to upload profile picture" + }, + "removeProfilePicture": "Supprimer la photo", + "@removeProfilePicture": { + "description": "Button to remove profile picture" + }, + "profilePictureUploading": "Importation…", + "@profilePictureUploading": { + "description": "Status while profile picture is being uploaded" + }, + "profilePictureUploadFailed": "Échec de l’importation. Veuillez réessayer.", + "@profilePictureUploadFailed": { + "description": "Error when profile picture upload fails" + }, + "profilePictureTooLarge": "Le fichier sélectionné dépasse 5 Mo.", + "@profilePictureTooLarge": { + "description": "Error when picture exceeds size limit" + }, + "profilePictureWrongType": "Seules les images JPEG, PNG ou WebP sont prises en charge.", + "@profilePictureWrongType": { + "description": "Error when picture has unsupported type" + }, + "profilePictureHelp": "JPEG, PNG ou WebP, 5 Mo max. L’image est redimensionnée et stockée en toute sécurité.", + "@profilePictureHelp": { + "description": "Helper text below upload button" + }, + "accountSectionProfile": "Profil", + "@accountSectionProfile": { + "description": "Account profile section title" + }, + "personalInfoTitle": "Informations personnelles", + "@personalInfoTitle": { + "description": "Personal info section title" + }, + "passwordSectionTitle": "Modifier le mot de passe", + "@passwordSectionTitle": { + "description": "Password section title" + }, + "securitySectionTitle": "Sécurité", + "@securitySectionTitle": { + "description": "Security section title" + }, + "dangerZoneTitle": "Zone de danger", + "@dangerZoneTitle": { + "description": "Danger zone section title" + }, + "doCancel": "Annuler", + "@doCancel": { + "description": "Cancel button text" + }, + "backToApplication": "Retour à l’application", + "@backToApplication": { + "description": "Back to application button text" + }, + "backToAccount": "Retour au compte", + "@backToAccount": { + "description": "Back to account button text in account console" + }, + "doContinue": "Continuer", + "@doContinue": { + "description": "Continue button text" + }, + "emailVerificationBody1": "Veuillez consulter vos e-mails pour trouver le lien de vérification.", + "@emailVerificationBody1": { + "description": "Email verification instruction text" + }, + "emailVerificationBody": "Veuillez consulter vos e-mails pour trouver le lien de vérification.", + "@emailVerificationBody": { + "description": "Email verification instruction text (alternative key)" + }, + "doClickHere": "Cliquez ici", + "@doClickHere": { + "description": "Click here button/link text" + }, + "doRestart": "Recommencer", + "@doRestart": { + "description": "Restart button text" + }, + "sessionExpired": "Le délai imparti pour la connexion est écoulé.\nLe processus de connexion va recommencer depuis le début.", + "@sessionExpired": { + "description": "Session/timeout expired message" + }, + "deleteAccountConfirm": "Voulez-vous vraiment supprimer votre compte ?", + "@deleteAccountConfirm": { + "description": "Delete account confirmation message" + }, + "doDeleteAccount": "Supprimer le compte", + "@doDeleteAccount": { + "description": "Delete account button text" + }, + "deleteCredentialConfirm": "Voulez-vous vraiment supprimer cet identifiant ?", + "@deleteCredentialConfirm": { + "description": "Delete credential confirmation message" + }, + "doDelete": "Supprimer", + "@doDelete": { + "description": "Delete button text" + }, + "frontchannelLogoutMessage": "Déconnexion en cours...", + "@frontchannelLogoutMessage": { + "description": "Frontchannel logout message" + }, + "linkIdpMessage": "Association du fournisseur d’identité...", + "@linkIdpMessage": { + "description": "Link identity provider message" + }, + "idpLinkConfirmMessage": "Voulez-vous associer ce fournisseur d’identité à votre compte ?", + "@idpLinkConfirmMessage": { + "description": "IDP link confirmation message" + }, + "doLink": "Associer", + "@doLink": { + "description": "Link button text" + }, + "idpLinkConfirmOverrideMessage": "Ce fournisseur d’identité est déjà associé à un autre compte. Voulez-vous remplacer cette association ?", + "@idpLinkConfirmOverrideMessage": { + "description": "IDP link override confirmation message" + }, + "doOverride": "Remplacer", + "@doOverride": { + "description": "Override button text" + }, + "email": "E-mail", + "@email": { + "description": "Label for email input field" + }, + "firstName": "Prénom", + "@firstName": { + "description": "Label for first name input field" + }, + "lastName": "Nom", + "@lastName": { + "description": "Label for last name input field" + }, + "oauthGrantTitle": "Autoriser l’accès", + "@oauthGrantTitle": { + "description": "OAuth grant title" + }, + "oauthGrantMessage": "L’application demande l’accès à votre compte", + "@oauthGrantMessage": { + "description": "OAuth grant message" + }, + "oauthGrantScopes": "Autorisations demandées", + "@oauthGrantScopes": { + "description": "OAuth grant scopes label" + }, + "pageExpiredMessage": "Cette page a expiré. Veuillez recommencer le processus de connexion.", + "@pageExpiredMessage": { + "description": "Page expired message" + }, + "passkeysConditionalAuthenticateMessage": "Authentification par passkey...", + "@passkeysConditionalAuthenticateMessage": { + "description": "Passkeys conditional authenticate message" + }, + "recoveryAuthnCodeConfigMessage": "Configurez votre code d’authentification de récupération", + "@recoveryAuthnCodeConfigMessage": { + "description": "Recovery authentication code config message" + }, + "recoveryCode": "Code de récupération", + "@recoveryCode": { + "description": "Label for recovery code input field" + }, + "resetOtpMessage": "Votre OTP a été réinitialisé. Veuillez en configurer un nouveau.", + "@resetOtpMessage": { + "description": "Reset OTP message" + }, + "loginTotpScanBarcode": "Scannez ce code QR avec votre application d’authentification", + "@loginTotpScanBarcode": { + "description": "TOTP scan barcode instruction" + }, + "loginTotpOneTime": "Code à usage unique", + "@loginTotpOneTime": { + "description": "Label for TOTP one-time code input field" + }, + "samlPostFormMessage": "Redirection vers le fournisseur d’identité...", + "@samlPostFormMessage": { + "description": "SAML post form message" + }, + "selectAuthenticatorTitle": "Choisir un authentificateur", + "@selectAuthenticatorTitle": { + "description": "Select authenticator title" + }, + "selectOrganizationTitle": "Choisir une organisation", + "@selectOrganizationTitle": { + "description": "Select organization title" + }, + "x509InfoTitle": "Informations du certificat X.509", + "@x509InfoTitle": { + "description": "X.509 info title" + }, + "x509InfoMessage": "Veuillez fournir les informations de votre certificat X.509", + "@x509InfoMessage": { + "description": "X.509 info message" + }, + "webauthnAuthenticateMessage": "Authentifiez-vous avec votre clé de sécurité", + "@webauthnAuthenticateMessage": { + "description": "WebAuthn authenticate message" + }, + "webauthnErrorMessage": "Une erreur s’est produite lors de l’authentification WebAuthn", + "@webauthnErrorMessage": { + "description": "WebAuthn error message" + }, + "webauthnRegisterMessage": "Enregistrez votre clé de sécurité", + "@webauthnRegisterMessage": { + "description": "WebAuthn register message" + }, + "oauth2DeviceVerifyUserCodeMessage": "Saisissez le code utilisateur affiché sur votre appareil", + "@oauth2DeviceVerifyUserCodeMessage": { + "description": "OAuth2 device verify user code message" + }, + "userCode": "Code utilisateur", + "@userCode": { + "description": "Label for user code input field" + }, + "errorInvalidUsernameOrPassword": "Nom d’utilisateur ou mot de passe invalide", + "@errorInvalidUsernameOrPassword": { + "description": "Login form field error" + }, + "errorInvalidUsername": "Nom d’utilisateur invalide", + "@errorInvalidUsername": { + "description": "Username field error" + }, + "errorInvalidPassword": "Mot de passe invalide", + "@errorInvalidPassword": { + "description": "Password field error" + }, + "errorInvalidEmail": "E-mail invalide", + "@errorInvalidEmail": { + "description": "Email field error" + }, + "errorInvalidCode": "Code invalide", + "@errorInvalidCode": { + "description": "Verification code field error" + }, + "errorInvalidRecoveryCode": "Code de récupération invalide", + "@errorInvalidRecoveryCode": { + "description": "Recovery code field error" + }, + "errorInvalidUserCode": "Code utilisateur invalide", + "@errorInvalidUserCode": { + "description": "User code field error" + }, + "errorPasswordMismatch": "Les mots de passe ne correspondent pas", + "@errorPasswordMismatch": { + "description": "Password confirmation field error" + }, + "errorAccountTemporarilyDisabled": "Le compte est temporairement désactivé. Contactez votre administrateur ou réessayez plus tard.", + "@errorAccountTemporarilyDisabled": { + "description": "Account disabled error" + }, + "errorIncorrectCurrentPassword": "Mot de passe actuel incorrect", + "@errorIncorrectCurrentPassword": { + "description": "Current password field error on account" + }, + "errorInvalidExistingPassword": "Mot de passe existant invalide", + "@errorInvalidExistingPassword": { + "description": "Existing password invalid on account" + }, + "errorPleaseSpecifyPassword": "Veuillez saisir un mot de passe", + "@errorPleaseSpecifyPassword": { + "description": "Password required validation message" + }, + "successPasswordChanged": "Mot de passe modifié avec succès", + "@successPasswordChanged": { + "description": "Password change success message" + }, + "successMobileAuthenticatorConfigured": "Authentificateur mobile configuré", + "@successMobileAuthenticatorConfigured": { + "description": "TOTP/authenticator success message" + }, + "successAccountUpdated": "Votre compte a été mis à jour", + "@successAccountUpdated": { + "description": "Account update success message" + }, + "errorAccountDisabled": "Le compte est désactivé, contactez votre administrateur.", + "errorUsernameExists": "Ce nom d’utilisateur existe déjà.", + "errorEmailExists": "Cette adresse e-mail existe déjà.", + "errorExpiredCode": "Délai de connexion dépassé. Veuillez vous reconnecter.", + "errorExpiredAction": "L’action a expiré. Veuillez poursuivre la connexion maintenant.", + "errorInvalidTotp": "Code d’authentification invalide.", + "errorMissingTotp": "Veuillez saisir le code d’authentification.", + "errorConfigureTotp": "Vous devez configurer l’authentificateur mobile pour activer votre compte.", + "errorEmailSendError": "Échec de l’envoi de l’e-mail, veuillez réessayer plus tard.", + "successPasswordUpdated": "Votre mot de passe a été mis à jour.", + "successEmailSent": "Vous allez recevoir sous peu un e-mail contenant des instructions supplémentaires.", + "pageTitleLogin": "Connexion", + "pageTitleRegister": "Inscription", + "pageTitleForgotPassword": "Mot de passe oublié", + "pageTitleInfo": "Informations", + "pageTitleError": "Erreur", + "pageTitlePageDisabled": "Page désactivée", + "@pageTitlePageDisabled": { + "description": "Title for disabled/error page" + }, + "pageTitleCode": "Code de vérification", + "pageTitleLogoutConfirm": "Déconnexion", + "pageTitleTerms": "Conditions générales", + "pageTitleLoginOtp": "Code de vérification", + "pageTitleUpdatePassword": "Modifier le mot de passe", + "pageTitleEmailVerification": "Vérification de l’e-mail", + "pageTitleDeleteAccountConfirm": "Supprimer le compte", + "pageTitleDeleteCredential": "Supprimer l’identifiant", + "pageTitleFrontchannelLogout": "Déconnexion en cours", + "pageTitleIdpReviewProfile": "Mettre à jour les informations du compte", + "pageTitleLinkIdp": "Associer un fournisseur d’identité", + "pageTitleConfigTotp": "Configuration de l’authentificateur mobile", + "pageTitleIdpLinkConfirm": "Associer le compte", + "pageTitleIdpLinkConfirmOverride": "Remplacer l’association", + "pageTitleIdpLinkEmail": "Associer le compte", + "pageTitleOauth2DeviceVerifyUserCode": "Connexion de l’appareil", + "pageTitleOauthGrant": "Autoriser l’accès", + "pageTitlePageExpired": "Page expirée", + "pageTitlePasskeysConditionalAuthenticate": "Connexion par passkey", + "pageTitleLoginPassword": "Connexion", + "pageTitleRecoveryCodeConfig": "Codes de récupération", + "pageTitleRecoveryCodeInput": "Code de récupération", + "pageTitleResetOtp": "Réinitialiser l’authentificateur", + "pageTitleUpdateProfile": "Mettre à jour les informations du compte", + "pageTitleLoginUsername": "Connexion", + "pageTitleX509Info": "Certificat X.509", + "pageTitleSamlPostForm": "Redirection", + "pageTitleSelectAuthenticator": "Choisir un authentificateur", + "pageTitleSelectOrganization": "Choisir une organisation", + "pageTitleUpdateEmail": "Modifier l’e-mail", + "pageTitleWebauthnAuthenticate": "Connexion par passkey", + "pageTitleWebauthnError": "Erreur de passkey", + "pageTitleWebauthnRegister": "Enregistrement de la passkey", + "pageTitleAccount": "Compte", + "pageTitleAccountPassword": "Mot de passe", + "messageHeaderEmailVerification": "Vérification de l’e-mail", + "messageHeaderForgotPassword": "Mot de passe oublié ?", + "messageHeaderEmailUpdateConfirmation": "E-mail de confirmation envoyé", + "messageHeaderEmailUpdated": "E-mail mis à jour", + "messageHeaderUpdatePassword": "Modifier le mot de passe", + "messageHeaderSuccessCode": "Code de succès", + "messageHeaderErrorCode": "Code d’erreur", + "messageHeaderExecuteActions": "Actions requises" +} diff --git a/package-lock.json b/package-lock.json index 8c4648f..b770ba6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "id.helpwave.de", - "version": "0.6.0", + "version": "0.6.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "id.helpwave.de", - "version": "0.6.0", + "version": "0.6.2", "hasInstallScript": true, "license": "MPL-2", "dependencies": { - "@helpwave/hightide": "0.15.0", + "@helpwave/hightide": "0.17.2", "@keycloakify/email-native": "~260007.0.0", "keycloakify": "^11.14.2", "lucide-react": "^0.563.0", @@ -1051,11 +1051,12 @@ } }, "node_modules/@helpwave/hightide": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@helpwave/hightide/-/hightide-0.15.0.tgz", - "integrity": "sha512-1DtR3MpLj/E8IcN3ajBXdQ+tafC7wsUwKZwvWGlwcKw6eW7SC1uMi9dE8mA95NXZ9uCrZ8Pahn/8pfEr2LgXyg==", - "license": "MPL-2.0", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/@helpwave/hightide/-/hightide-0.17.2.tgz", + "integrity": "sha512-sbI/AjF/gyyjLRnt8+XdGr0kvXZ7bI0eEZppJL7UzDMTx90w3K6Eav89lgt31x/aAH/7pKgWvFBmdrjiuB2gOA==", + "license": "AGPL-3.0-only", "dependencies": { + "@helpwave/hightide-utils": "0.1.8", "@helpwave/internationalization": "0.4.0", "@tailwindcss/cli": "4.1.18", "@tanstack/react-table": "8.21.3", @@ -1064,14 +1065,26 @@ "lucide-react": "0.561.0", "tailwindcss": "4.1.18" }, - "bin": { - "barrel": "dist/scripts/barrel.js" - }, "peerDependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" } }, + "node_modules/@helpwave/hightide-utils": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@helpwave/hightide-utils/-/hightide-utils-0.1.8.tgz", + "integrity": "sha512-ELW2+uLFjQLyG2KXKmUKTn3WuHulcfffdKsWFl6BCRIbxBA617lT5eyAtc1Liu2WdEFhBsuOezqlJCLBev/O5w==", + "license": "AGPL-3.0-only", + "dependencies": { + "@helpwave/internationalization": "0.4.0" + }, + "bin": { + "barrel": "scripts/barrel.js" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, "node_modules/@helpwave/hightide/node_modules/lucide-react": { "version": "0.561.0", "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.561.0.tgz", diff --git a/package.json b/package.json index 1b334f3..9084983 100755 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "defaults" ], "dependencies": { - "@helpwave/hightide": "0.15.0", + "@helpwave/hightide": "0.17.2", "@keycloakify/email-native": "~260007.0.0", "keycloakify": "^11.14.2", "lucide-react": "^0.563.0", diff --git a/src/i18n/hightideConfig.ts b/src/i18n/hightideConfig.ts new file mode 100644 index 0000000..c29e1cc --- /dev/null +++ b/src/i18n/hightideConfig.ts @@ -0,0 +1,39 @@ +import type { ComponentProps } from 'react' +import type { HightideProvider, SupportedLocalesConfig } from '@helpwave/hightide' +import { HightideConfigUtils, hightideTranslation } from '@helpwave/hightide' +import { helpwaveIdTranslation, helpwaveIdTranslationLocales } from './translations' + +// Metadata for locales that hightide does not ship as defaults yet (mirrors upstream hightide). +const additionalLocales: SupportedLocalesConfig = { + 'pt-BR': { localName: 'Português (Brasil)', defaultIs24HourFormat: true, defaultStartingWeekday: 'sunday', defaultCalendarType: 'Gregorian' }, + 'es-ES': { localName: 'Español', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, + 'fr-FR': { localName: 'Français', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, + 'nl-NL': { localName: 'Nederlands', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, + 'it-IT': { localName: 'Italiano', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, + 'pl-PL': { localName: 'Polski', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, + 'tr-TR': { localName: 'Türkçe', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, + 'ro-RO': { localName: 'Română', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, + 'el-GR': { localName: 'Ελληνικά', defaultIs24HourFormat: false, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, + 'ru-RU': { localName: 'Русский', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, +} + +const hightideLocales: Record = hightideTranslation + +export const supportedLocales: SupportedLocalesConfig = Object.fromEntries( + helpwaveIdTranslationLocales.map((locale) => [ + locale, + { ...additionalLocales[locale], ...(HightideConfigUtils.defaultSupportedLocales as SupportedLocalesConfig)[locale] }, + ]) +) + +// hightide's own component strings fall back to English for locales it does not translate yet +const hightideFallbackTranslation = Object.fromEntries( + helpwaveIdTranslationLocales + .filter((locale) => !hightideLocales[locale]) + .map((locale) => [locale, hightideTranslation['en-US']]) +) + +export const hightideProviderProps: Omit, 'children'> = { + locale: { supportedLocales }, + translation: { translation: [helpwaveIdTranslation, hightideFallbackTranslation] }, +} diff --git a/src/i18n/translations.ts b/src/i18n/translations.ts index 3120bcf..00ad997 100644 --- a/src/i18n/translations.ts +++ b/src/i18n/translations.ts @@ -5,7 +5,7 @@ import type { Translation } from '@helpwave/internationalization' import { TranslationGen } from '@helpwave/internationalization' -export const helpwaveIdTranslationLocales = ['de-DE', 'en-US'] as const +export const helpwaveIdTranslationLocales = ['de-DE', 'el-GR', 'en-US', 'es-ES', 'fr-FR', 'it-IT', 'nl-NL', 'pl-PL', 'ru-RU', 'tr-TR'] as const export type HelpwaveIdTranslationLocales = typeof helpwaveIdTranslationLocales[number] @@ -367,6 +367,187 @@ Der Anmeldevorgang wird von vorne begonnen.`, 'x509InfoMessage': `Bitte geben Sie Ihre X.509 Zertifikatsinformationen an`, 'x509InfoTitle': `X.509 Zertifikatsinformationen` }, + 'el-GR': { + 'acceptPrivacy': `Έχω διαβάσει και αποδέχομαι την`, + 'acceptTerms': `Αποδέχομαι τους όρους και τις προϋποθέσεις`, + 'accountSectionProfile': `Προφίλ`, + 'accountStatusActive': `Ενεργός`, + 'backToAccount': `Επιστροφή στον λογαριασμό`, + 'backToApplication': `Επιστροφή στην εφαρμογή`, + 'backToLogin': `Επιστροφή στη σύνδεση`, + 'captchaFailed': `Η επαλήθευση captcha απέτυχε. Δοκιμάστε ξανά.`, + 'captchaLoading': `Φόρτωση captcha…`, + 'dangerZoneTitle': `Ζώνη κινδύνου`, + 'deleteAccountConfirm': `Είστε βέβαιοι ότι θέλετε να διαγράψετε τον λογαριασμό σας;`, + 'deleteCredentialConfirm': `Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το διαπιστευτήριο;`, + 'doAccept': `Αποδοχή`, + 'doCancel': `Ακύρωση`, + 'doClickHere': `Κάντε κλικ εδώ`, + 'doContinue': `Συνέχεια`, + 'doDecline': `Απόρριψη`, + 'doDelete': `Διαγραφή`, + 'doDeleteAccount': `Διαγραφή λογαριασμού`, + 'doForgotPassword': `Ξεχάσατε τον κωδικό πρόσβασης;`, + 'doLink': `Σύνδεση`, + 'doLogIn': `Σύνδεση`, + 'doLogout': `Αποσύνδεση`, + 'doOverride': `Αντικατάσταση`, + 'doRegister': `Εγγραφή`, + 'doRestart': `Επανεκκίνηση`, + 'doSave': `Αποθήκευση`, + 'doSubmit': `Υποβολή`, + 'doUpdate': `Ενημέρωση`, + 'email': `Email`, + 'emailVerificationBody': `Ελέγξτε το email σας για έναν σύνδεσμο επαλήθευσης.`, + 'emailVerificationBody1': `Ελέγξτε το email σας για έναν σύνδεσμο επαλήθευσης.`, + 'errorAccountDisabled': `Ο λογαριασμός είναι απενεργοποιημένος. Επικοινωνήστε με τον διαχειριστή σας.`, + 'errorAccountTemporarilyDisabled': `Ο λογαριασμός είναι προσωρινά απενεργοποιημένος. Επικοινωνήστε με τον διαχειριστή σας ή δοκιμάστε ξανά αργότερα.`, + 'errorConfigureTotp': `Πρέπει να ρυθμίσετε μια εφαρμογή ελέγχου ταυτότητας για να ενεργοποιήσετε τον λογαριασμό σας.`, + 'errorEmailExists': `Το email υπάρχει ήδη.`, + 'errorEmailSendError': `Η αποστολή του email απέτυχε. Δοκιμάστε ξανά αργότερα.`, + 'errorExpiredAction': `Η ενέργεια έληξε. Συνεχίστε τώρα με τη σύνδεση.`, + 'errorExpiredCode': `Η σύνδεση έληξε. Συνδεθείτε ξανά.`, + 'errorIncorrectCurrentPassword': `Λανθασμένος τρέχων κωδικός πρόσβασης`, + 'errorInvalidCode': `Μη έγκυρος κωδικός`, + 'errorInvalidEmail': `Μη έγκυρο email`, + 'errorInvalidExistingPassword': `Μη έγκυρος υπάρχων κωδικός πρόσβασης`, + 'errorInvalidPassword': `Μη έγκυρος κωδικός πρόσβασης`, + 'errorInvalidRecoveryCode': `Μη έγκυρος κωδικός ανάκτησης`, + 'errorInvalidTotp': `Μη έγκυρος κωδικός ελέγχου ταυτότητας.`, + 'errorInvalidUserCode': `Μη έγκυρος κωδικός χρήστη`, + 'errorInvalidUsername': `Μη έγκυρο όνομα χρήστη`, + 'errorInvalidUsernameOrPassword': `Μη έγκυρο όνομα χρήστη ή κωδικός πρόσβασης`, + 'errorMissingTotp': `Εισαγάγετε τον κωδικό ελέγχου ταυτότητας.`, + 'errorPasswordMismatch': `Οι κωδικοί πρόσβασης δεν ταιριάζουν`, + 'errorPleaseSpecifyPassword': `Εισαγάγετε κωδικό πρόσβασης`, + 'errorUsernameExists': `Το όνομα χρήστη υπάρχει ήδη.`, + 'firstName': `Όνομα`, + 'forgotPassword': `Ξεχάσατε τον κωδικό πρόσβασης;`, + 'frontchannelLogoutMessage': `Αποσύνδεση...`, + 'helpwaveId': `helpwave id`, + 'identity-provider-redirector': `Ή συνδεθείτε με`, + 'idpLinkConfirmMessage': `Θέλετε να συνδέσετε αυτόν τον πάροχο ταυτότητας με τον λογαριασμό σας;`, + 'idpLinkConfirmOverrideMessage': `Αυτός ο πάροχος ταυτότητας είναι ήδη συνδεδεμένος με άλλον λογαριασμό. Θέλετε να τον αντικαταστήσετε;`, + 'imprint': `Στοιχεία εκδότη`, + 'lastName': `Επώνυμο`, + 'linkIdpMessage': `Σύνδεση παρόχου ταυτότητας...`, + 'loginOtp': `Κωδικός επαλήθευσης`, + 'loginTotpOneTime': `Κωδικός μίας χρήσης`, + 'loginTotpScanBarcode': `Σαρώστε αυτόν τον κωδικό QR με την εφαρμογή ελέγχου ταυτότητας`, + 'logoutConfirmHeader': `Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε;`, + 'messageHeaderEmailUpdateConfirmation': `Το email επιβεβαίωσης στάλθηκε`, + 'messageHeaderEmailUpdated': `Το email ενημερώθηκε`, + 'messageHeaderEmailVerification': `Επαλήθευση email`, + 'messageHeaderErrorCode': `Κωδικός σφάλματος`, + 'messageHeaderExecuteActions': `Απαιτούμενες ενέργειες`, + 'messageHeaderForgotPassword': `Ξεχάσατε τον κωδικό πρόσβασής σας;`, + 'messageHeaderSuccessCode': `Κωδικός επιτυχίας`, + 'messageHeaderUpdatePassword': `Ενημέρωση κωδικού πρόσβασης`, + 'noAccount': `Δεν έχετε λογαριασμό;`, + 'nOrganization': ({ count }): string => { + return TranslationGen.resolvePlural(count, { + '=1': `${count} οργανισμός`, + 'other': `${count} οργανισμοί`, + }) + }, + 'oauth2DeviceVerifyUserCodeMessage': `Εισαγάγετε τον κωδικό χρήστη που εμφανίζεται στη συσκευή σας`, + 'oauthGrantMessage': `Η εφαρμογή ζητά πρόσβαση στον λογαριασμό σας`, + 'oauthGrantScopes': `Ζητούμενα δικαιώματα`, + 'oauthGrantTitle': `Παραχώρηση πρόσβασης`, + 'otp': `Κωδικός μίας χρήσης`, + 'pageExpiredMessage': `Αυτή η σελίδα έχει λήξει. Ξεκινήστε ξανά τη διαδικασία σύνδεσης.`, + 'pageTitleAccount': `Λογαριασμός`, + 'pageTitleAccountPassword': `Κωδικός πρόσβασης`, + 'pageTitleCode': `Κωδικός επαλήθευσης`, + 'pageTitleConfigTotp': `Ρύθμιση εφαρμογής ελέγχου ταυτότητας`, + 'pageTitleDeleteAccountConfirm': `Διαγραφή λογαριασμού`, + 'pageTitleDeleteCredential': `Διαγραφή διαπιστευτηρίου`, + 'pageTitleEmailVerification': `Επαλήθευση email`, + 'pageTitleError': `Σφάλμα`, + 'pageTitleForgotPassword': `Ξεχάσατε τον κωδικό πρόσβασης`, + 'pageTitleFrontchannelLogout': `Αποσύνδεση`, + 'pageTitleIdpLinkConfirm': `Σύνδεση λογαριασμού`, + 'pageTitleIdpLinkConfirmOverride': `Αντικατάσταση σύνδεσης`, + 'pageTitleIdpLinkEmail': `Σύνδεση λογαριασμού`, + 'pageTitleIdpReviewProfile': `Ενημέρωση στοιχείων λογαριασμού`, + 'pageTitleInfo': `Πληροφορίες`, + 'pageTitleLinkIdp': `Σύνδεση παρόχου ταυτότητας`, + 'pageTitleLogin': `Σύνδεση`, + 'pageTitleLoginOtp': `Κωδικός επαλήθευσης`, + 'pageTitleLoginPassword': `Σύνδεση`, + 'pageTitleLoginUsername': `Σύνδεση`, + 'pageTitleLogoutConfirm': `Αποσύνδεση`, + 'pageTitleOauth2DeviceVerifyUserCode': `Σύνδεση συσκευής`, + 'pageTitleOauthGrant': `Παραχώρηση πρόσβασης`, + 'pageTitlePageDisabled': `Η σελίδα είναι απενεργοποιημένη`, + 'pageTitlePageExpired': `Η σελίδα έληξε`, + 'pageTitlePasskeysConditionalAuthenticate': `Σύνδεση με passkey`, + 'pageTitleRecoveryCodeConfig': `Κωδικοί ανάκτησης`, + 'pageTitleRecoveryCodeInput': `Κωδικός ανάκτησης`, + 'pageTitleRegister': `Εγγραφή`, + 'pageTitleResetOtp': `Επαναφορά εφαρμογής ελέγχου ταυτότητας`, + 'pageTitleSamlPostForm': `Ανακατεύθυνση`, + 'pageTitleSelectAuthenticator': `Επιλογή μεθόδου ελέγχου ταυτότητας`, + 'pageTitleSelectOrganization': `Επιλογή οργανισμού`, + 'pageTitleTerms': `Όροι και προϋποθέσεις`, + 'pageTitleUpdateEmail': `Ενημέρωση email`, + 'pageTitleUpdatePassword': `Ενημέρωση κωδικού πρόσβασης`, + 'pageTitleUpdateProfile': `Ενημέρωση στοιχείων λογαριασμού`, + 'pageTitleWebauthnAuthenticate': `Σύνδεση με passkey`, + 'pageTitleWebauthnError': `Σφάλμα passkey`, + 'pageTitleWebauthnRegister': `Καταχώριση passkey`, + 'pageTitleX509Info': `Πιστοποιητικό X.509`, + 'passkeysConditionalAuthenticateMessage': `Έλεγχος ταυτότητας με passkey...`, + 'password': `Κωδικός πρόσβασης`, + 'passwordConfirm': `Επιβεβαίωση κωδικού πρόσβασης`, + 'passwordNew': `Νέος κωδικός πρόσβασης`, + 'passwordSectionTitle': `Ενημέρωση κωδικού πρόσβασης`, + 'personalInfoTitle': `Προσωπικά στοιχεία`, + 'privacy': `Απόρρητο`, + 'privacyPolicy': `πολιτική απορρήτου`, + 'privacyRequired': `Πρέπει να αποδεχτείτε την πολιτική απορρήτου για να συνεχίσετε.`, + 'profilePicture': `Εικόνα προφίλ`, + 'profilePictureComingSoon': `Μεταφόρτωση εικόνας προφίλ – σύντομα διαθέσιμη.`, + 'profilePictureHelp': `JPEG, PNG ή WebP, έως 5 MB. Η εικόνα προσαρμόζεται σε μέγεθος και αποθηκεύεται με ασφάλεια.`, + 'profilePictureTooLarge': `Το επιλεγμένο αρχείο είναι μεγαλύτερο από 5 MB.`, + 'profilePictureUploadFailed': `Η μεταφόρτωση απέτυχε. Δοκιμάστε ξανά.`, + 'profilePictureUploading': `Μεταφόρτωση…`, + 'profilePictureWrongType': `Υποστηρίζονται μόνο εικόνες JPEG, PNG ή WebP.`, + 'realmBannerAdmin': `Πύλη διαχειριστή`, + 'realmBannerOther': `Εσωτερικό realm`, + 'realmBannerSubtitleAdmin': `Πρόσβαση διαχειριστή — κάθε ενέργεια καταγράφεται.`, + 'realmBannerSubtitleOther': `Αυτή δεν είναι η κανονική σύνδεση πελατών.`, + 'realmBannerSubtitleTeam': `Συνδέεστε σε μια προνομιακή περιοχή ομάδας.`, + 'realmBannerTeam': `Χώρος εργασίας ομάδας`, + 'recoveryAuthnCodeConfigMessage': `Ρυθμίστε τον κωδικό ανάκτησης για τον έλεγχο ταυτότητας`, + 'recoveryCode': `Κωδικός ανάκτησης`, + 'register': `Εγγραφή`, + 'rememberMe': `Να με θυμάσαι`, + 'removeProfilePicture': `Αφαίρεση εικόνας`, + 'resetOtpMessage': `Ο κωδικός OTP σας επαναφέρθηκε. Ρυθμίστε έναν νέο.`, + 'samlPostFormMessage': `Ανακατεύθυνση στον πάροχο ταυτότητας...`, + 'securitySectionTitle': `Ασφάλεια`, + 'selectAuthenticatorTitle': `Επιλογή μεθόδου ελέγχου ταυτότητας`, + 'selectOrganizationTitle': `Επιλογή οργανισμού`, + 'sessionExpired': `Ο χρόνος που διατέθηκε για τη σύνδεση έχει λήξει. +Η διαδικασία σύνδεσης θα ξεκινήσει από την αρχή.`, + 'successAccountUpdated': `Ο λογαριασμός σας ενημερώθηκε`, + 'successEmailSent': `Σύντομα θα λάβετε ένα email με περαιτέρω οδηγίες.`, + 'successMobileAuthenticatorConfigured': `Η εφαρμογή ελέγχου ταυτότητας ρυθμίστηκε`, + 'successPasswordChanged': `Ο κωδικός πρόσβασης άλλαξε με επιτυχία`, + 'successPasswordUpdated': `Ο κωδικός πρόσβασής σας ενημερώθηκε.`, + 'termsText': `Κείμενο όρων και προϋποθέσεων`, + 'updatePassword': `Ενημέρωση κωδικού πρόσβασης`, + 'uploadProfilePicture': `Μεταφόρτωση εικόνας`, + 'userCode': `Κωδικός χρήστη`, + 'username': `Όνομα χρήστη`, + 'usernameOrEmail': `Όνομα χρήστη ή email`, + 'webauthnAuthenticateMessage': `Έλεγχος ταυτότητας με το κλειδί ασφαλείας σας`, + 'webauthnErrorMessage': `Παρουσιάστηκε σφάλμα κατά τον έλεγχο ταυτότητας WebAuthn`, + 'webauthnRegisterMessage': `Καταχωρίστε το κλειδί ασφαλείας σας`, + 'x509InfoMessage': `Δώστε τις πληροφορίες του πιστοποιητικού X.509 σας`, + 'x509InfoTitle': `Πληροφορίες πιστοποιητικού X.509` + }, 'en-US': { 'acceptPrivacy': `I have read and accept the`, 'acceptTerms': `I accept the terms and conditions`, @@ -547,6 +728,1256 @@ The login process will restart from the beginning.`, 'webauthnRegisterMessage': `Register your security key`, 'x509InfoMessage': `Please provide your X.509 certificate information`, 'x509InfoTitle': `X.509 Certificate Information` + }, + 'es-ES': { + 'acceptPrivacy': `He leído y acepto la`, + 'acceptTerms': `Acepto los términos y condiciones`, + 'accountSectionProfile': `Perfil`, + 'accountStatusActive': `Activa`, + 'backToAccount': `Volver a la cuenta`, + 'backToApplication': `Volver a la aplicación`, + 'backToLogin': `Volver al inicio de sesión`, + 'captchaFailed': `La verificación del captcha ha fallado. Inténtelo de nuevo.`, + 'captchaLoading': `Cargando captcha…`, + 'dangerZoneTitle': `Zona de peligro`, + 'deleteAccountConfirm': `¿Seguro que desea eliminar su cuenta?`, + 'deleteCredentialConfirm': `¿Seguro que desea eliminar esta credencial?`, + 'doAccept': `Aceptar`, + 'doCancel': `Cancelar`, + 'doClickHere': `Haga clic aquí`, + 'doContinue': `Continuar`, + 'doDecline': `Rechazar`, + 'doDelete': `Eliminar`, + 'doDeleteAccount': `Eliminar cuenta`, + 'doForgotPassword': `¿Ha olvidado su contraseña?`, + 'doLink': `Vincular`, + 'doLogIn': `Iniciar sesión`, + 'doLogout': `Cerrar sesión`, + 'doOverride': `Reemplazar`, + 'doRegister': `Registrarse`, + 'doRestart': `Reiniciar`, + 'doSave': `Guardar`, + 'doSubmit': `Enviar`, + 'doUpdate': `Actualizar`, + 'email': `Correo electrónico`, + 'emailVerificationBody': `Revise su correo electrónico para encontrar el enlace de verificación.`, + 'emailVerificationBody1': `Revise su correo electrónico para encontrar el enlace de verificación.`, + 'errorAccountDisabled': `La cuenta está desactivada. Póngase en contacto con su administrador.`, + 'errorAccountTemporarilyDisabled': `La cuenta está desactivada temporalmente. Póngase en contacto con su administrador o inténtelo de nuevo más tarde.`, + 'errorConfigureTotp': `Debe configurar el autenticador móvil para activar su cuenta.`, + 'errorEmailExists': `El correo electrónico ya existe.`, + 'errorEmailSendError': `No se ha podido enviar el correo electrónico. Inténtelo de nuevo más tarde.`, + 'errorExpiredAction': `La acción ha caducado. Continúe ahora con el inicio de sesión.`, + 'errorExpiredCode': `Se ha agotado el tiempo de inicio de sesión. Inicie sesión de nuevo.`, + 'errorIncorrectCurrentPassword': `La contraseña actual es incorrecta`, + 'errorInvalidCode': `Código no válido`, + 'errorInvalidEmail': `Correo electrónico no válido`, + 'errorInvalidExistingPassword': `La contraseña existente no es válida`, + 'errorInvalidPassword': `Contraseña no válida`, + 'errorInvalidRecoveryCode': `Código de recuperación no válido`, + 'errorInvalidTotp': `Código del autenticador no válido.`, + 'errorInvalidUserCode': `Código de usuario no válido`, + 'errorInvalidUsername': `Nombre de usuario no válido`, + 'errorInvalidUsernameOrPassword': `Nombre de usuario o contraseña no válidos`, + 'errorMissingTotp': `Introduzca el código del autenticador.`, + 'errorPasswordMismatch': `Las contraseñas no coinciden`, + 'errorPleaseSpecifyPassword': `Introduzca una contraseña`, + 'errorUsernameExists': `El nombre de usuario ya existe.`, + 'firstName': `Nombre`, + 'forgotPassword': `¿Ha olvidado su contraseña?`, + 'frontchannelLogoutMessage': `Cerrando sesión...`, + 'helpwaveId': `helpwave id`, + 'identity-provider-redirector': `O inicie sesión con`, + 'idpLinkConfirmMessage': `¿Desea vincular este proveedor de identidad a su cuenta?`, + 'idpLinkConfirmOverrideMessage': `Este proveedor de identidad ya está vinculado a otra cuenta. ¿Desea reemplazar la vinculación?`, + 'imprint': `Aviso legal`, + 'lastName': `Apellidos`, + 'linkIdpMessage': `Vinculando proveedor de identidad...`, + 'loginOtp': `Código de verificación`, + 'loginTotpOneTime': `Código de un solo uso`, + 'loginTotpScanBarcode': `Escanee este código QR con su aplicación de autenticación`, + 'logoutConfirmHeader': `¿Seguro que desea cerrar sesión?`, + 'messageHeaderEmailUpdateConfirmation': `Correo de confirmación enviado`, + 'messageHeaderEmailUpdated': `Correo electrónico actualizado`, + 'messageHeaderEmailVerification': `Verificación del correo electrónico`, + 'messageHeaderErrorCode': `Código de error`, + 'messageHeaderExecuteActions': `Acciones requeridas`, + 'messageHeaderForgotPassword': `¿Ha olvidado su contraseña?`, + 'messageHeaderSuccessCode': `Código de éxito`, + 'messageHeaderUpdatePassword': `Actualizar contraseña`, + 'noAccount': `¿No tiene cuenta?`, + 'nOrganization': ({ count }): string => { + return TranslationGen.resolvePlural(count, { + '=1': `${count} organización`, + 'other': `${count} organizaciones`, + }) + }, + 'oauth2DeviceVerifyUserCodeMessage': `Introduzca el código de usuario que aparece en su dispositivo`, + 'oauthGrantMessage': `La aplicación solicita acceso a su cuenta`, + 'oauthGrantScopes': `Permisos solicitados`, + 'oauthGrantTitle': `Conceder acceso`, + 'otp': `Contraseña de un solo uso`, + 'pageExpiredMessage': `Esta página ha caducado. Reinicie el proceso de inicio de sesión.`, + 'pageTitleAccount': `Cuenta`, + 'pageTitleAccountPassword': `Contraseña`, + 'pageTitleCode': `Código de verificación`, + 'pageTitleConfigTotp': `Configurar autenticador móvil`, + 'pageTitleDeleteAccountConfirm': `Eliminar cuenta`, + 'pageTitleDeleteCredential': `Eliminar credencial`, + 'pageTitleEmailVerification': `Verificación del correo electrónico`, + 'pageTitleError': `Error`, + 'pageTitleForgotPassword': `Contraseña olvidada`, + 'pageTitleFrontchannelLogout': `Cerrando sesión`, + 'pageTitleIdpLinkConfirm': `Vincular cuenta`, + 'pageTitleIdpLinkConfirmOverride': `Reemplazar vinculación`, + 'pageTitleIdpLinkEmail': `Vincular cuenta`, + 'pageTitleIdpReviewProfile': `Actualizar datos de la cuenta`, + 'pageTitleInfo': `Información`, + 'pageTitleLinkIdp': `Vincular proveedor de identidad`, + 'pageTitleLogin': `Iniciar sesión`, + 'pageTitleLoginOtp': `Código de verificación`, + 'pageTitleLoginPassword': `Iniciar sesión`, + 'pageTitleLoginUsername': `Iniciar sesión`, + 'pageTitleLogoutConfirm': `Cerrar sesión`, + 'pageTitleOauth2DeviceVerifyUserCode': `Inicio de sesión del dispositivo`, + 'pageTitleOauthGrant': `Conceder acceso`, + 'pageTitlePageDisabled': `Página desactivada`, + 'pageTitlePageExpired': `Página caducada`, + 'pageTitlePasskeysConditionalAuthenticate': `Inicio de sesión con passkey`, + 'pageTitleRecoveryCodeConfig': `Códigos de recuperación`, + 'pageTitleRecoveryCodeInput': `Código de recuperación`, + 'pageTitleRegister': `Registrarse`, + 'pageTitleResetOtp': `Restablecer autenticador`, + 'pageTitleSamlPostForm': `Redirigiendo`, + 'pageTitleSelectAuthenticator': `Seleccionar autenticador`, + 'pageTitleSelectOrganization': `Seleccionar organización`, + 'pageTitleTerms': `Términos y condiciones`, + 'pageTitleUpdateEmail': `Actualizar correo electrónico`, + 'pageTitleUpdatePassword': `Actualizar contraseña`, + 'pageTitleUpdateProfile': `Actualizar datos de la cuenta`, + 'pageTitleWebauthnAuthenticate': `Inicio de sesión con passkey`, + 'pageTitleWebauthnError': `Error de passkey`, + 'pageTitleWebauthnRegister': `Registro de passkey`, + 'pageTitleX509Info': `Certificado X.509`, + 'passkeysConditionalAuthenticateMessage': `Autenticando con passkey...`, + 'password': `Contraseña`, + 'passwordConfirm': `Confirmar contraseña`, + 'passwordNew': `Nueva contraseña`, + 'passwordSectionTitle': `Actualizar contraseña`, + 'personalInfoTitle': `Información personal`, + 'privacy': `Privacidad`, + 'privacyPolicy': `política de privacidad`, + 'privacyRequired': `Debe aceptar la política de privacidad para continuar.`, + 'profilePicture': `Foto de perfil`, + 'profilePictureComingSoon': `Subir foto de perfil: próximamente.`, + 'profilePictureHelp': `JPEG, PNG o WebP, máx. 5 MB. La imagen se redimensiona y se almacena de forma segura.`, + 'profilePictureTooLarge': `El archivo seleccionado supera los 5 MB.`, + 'profilePictureUploadFailed': `Error al subir. Inténtelo de nuevo.`, + 'profilePictureUploading': `Subiendo…`, + 'profilePictureWrongType': `Solo se admiten imágenes JPEG, PNG o WebP.`, + 'realmBannerAdmin': `Portal de administración`, + 'realmBannerOther': `Realm interno`, + 'realmBannerSubtitleAdmin': `Acceso administrativo: todas las acciones se auditan.`, + 'realmBannerSubtitleOther': `Este no es el inicio de sesión habitual para clientes.`, + 'realmBannerSubtitleTeam': `Está iniciando sesión en un área privilegiada del equipo.`, + 'realmBannerTeam': `Espacio de trabajo del equipo`, + 'recoveryAuthnCodeConfigMessage': `Configure su código de autenticación de recuperación`, + 'recoveryCode': `Código de recuperación`, + 'register': `Registrarse`, + 'rememberMe': `Recordarme`, + 'removeProfilePicture': `Eliminar foto`, + 'resetOtpMessage': `Su OTP se ha restablecido. Configure uno nuevo.`, + 'samlPostFormMessage': `Redirigiendo al proveedor de identidad...`, + 'securitySectionTitle': `Seguridad`, + 'selectAuthenticatorTitle': `Seleccionar autenticador`, + 'selectOrganizationTitle': `Seleccionar organización`, + 'sessionExpired': `El tiempo asignado para la conexión ha expirado. +El proceso de inicio de sesión se reiniciará desde el principio.`, + 'successAccountUpdated': `Su cuenta se ha actualizado`, + 'successEmailSent': `En breve recibirá un correo electrónico con más instrucciones.`, + 'successMobileAuthenticatorConfigured': `Autenticador móvil configurado`, + 'successPasswordChanged': `Contraseña cambiada correctamente`, + 'successPasswordUpdated': `Su contraseña se ha actualizado.`, + 'termsText': `Texto de los términos y condiciones`, + 'updatePassword': `Actualizar contraseña`, + 'uploadProfilePicture': `Subir foto`, + 'userCode': `Código de usuario`, + 'username': `Nombre de usuario`, + 'usernameOrEmail': `Nombre de usuario o correo electrónico`, + 'webauthnAuthenticateMessage': `Autentíquese con su llave de seguridad`, + 'webauthnErrorMessage': `Se ha producido un error durante la autenticación WebAuthn`, + 'webauthnRegisterMessage': `Registre su llave de seguridad`, + 'x509InfoMessage': `Proporcione la información de su certificado X.509`, + 'x509InfoTitle': `Información del certificado X.509` + }, + 'fr-FR': { + 'acceptPrivacy': `J’ai lu et j’accepte la`, + 'acceptTerms': `J’accepte les conditions générales`, + 'accountSectionProfile': `Profil`, + 'accountStatusActive': `Actif`, + 'backToAccount': `Retour au compte`, + 'backToApplication': `Retour à l’application`, + 'backToLogin': `Retour à la connexion`, + 'captchaFailed': `La vérification du captcha a échoué. Veuillez réessayer.`, + 'captchaLoading': `Chargement du captcha…`, + 'dangerZoneTitle': `Zone de danger`, + 'deleteAccountConfirm': `Voulez-vous vraiment supprimer votre compte ?`, + 'deleteCredentialConfirm': `Voulez-vous vraiment supprimer cet identifiant ?`, + 'doAccept': `Accepter`, + 'doCancel': `Annuler`, + 'doClickHere': `Cliquez ici`, + 'doContinue': `Continuer`, + 'doDecline': `Refuser`, + 'doDelete': `Supprimer`, + 'doDeleteAccount': `Supprimer le compte`, + 'doForgotPassword': `Mot de passe oublié ?`, + 'doLink': `Associer`, + 'doLogIn': `Se connecter`, + 'doLogout': `Se déconnecter`, + 'doOverride': `Remplacer`, + 'doRegister': `S’inscrire`, + 'doRestart': `Recommencer`, + 'doSave': `Enregistrer`, + 'doSubmit': `Envoyer`, + 'doUpdate': `Mettre à jour`, + 'email': `E-mail`, + 'emailVerificationBody': `Veuillez consulter vos e-mails pour trouver le lien de vérification.`, + 'emailVerificationBody1': `Veuillez consulter vos e-mails pour trouver le lien de vérification.`, + 'errorAccountDisabled': `Le compte est désactivé, contactez votre administrateur.`, + 'errorAccountTemporarilyDisabled': `Le compte est temporairement désactivé. Contactez votre administrateur ou réessayez plus tard.`, + 'errorConfigureTotp': `Vous devez configurer l’authentificateur mobile pour activer votre compte.`, + 'errorEmailExists': `Cette adresse e-mail existe déjà.`, + 'errorEmailSendError': `Échec de l’envoi de l’e-mail, veuillez réessayer plus tard.`, + 'errorExpiredAction': `L’action a expiré. Veuillez poursuivre la connexion maintenant.`, + 'errorExpiredCode': `Délai de connexion dépassé. Veuillez vous reconnecter.`, + 'errorIncorrectCurrentPassword': `Mot de passe actuel incorrect`, + 'errorInvalidCode': `Code invalide`, + 'errorInvalidEmail': `E-mail invalide`, + 'errorInvalidExistingPassword': `Mot de passe existant invalide`, + 'errorInvalidPassword': `Mot de passe invalide`, + 'errorInvalidRecoveryCode': `Code de récupération invalide`, + 'errorInvalidTotp': `Code d’authentification invalide.`, + 'errorInvalidUserCode': `Code utilisateur invalide`, + 'errorInvalidUsername': `Nom d’utilisateur invalide`, + 'errorInvalidUsernameOrPassword': `Nom d’utilisateur ou mot de passe invalide`, + 'errorMissingTotp': `Veuillez saisir le code d’authentification.`, + 'errorPasswordMismatch': `Les mots de passe ne correspondent pas`, + 'errorPleaseSpecifyPassword': `Veuillez saisir un mot de passe`, + 'errorUsernameExists': `Ce nom d’utilisateur existe déjà.`, + 'firstName': `Prénom`, + 'forgotPassword': `Mot de passe oublié ?`, + 'frontchannelLogoutMessage': `Déconnexion en cours...`, + 'helpwaveId': `helpwave id`, + 'identity-provider-redirector': `Ou se connecter avec`, + 'idpLinkConfirmMessage': `Voulez-vous associer ce fournisseur d’identité à votre compte ?`, + 'idpLinkConfirmOverrideMessage': `Ce fournisseur d’identité est déjà associé à un autre compte. Voulez-vous remplacer cette association ?`, + 'imprint': `Mentions légales`, + 'lastName': `Nom`, + 'linkIdpMessage': `Association du fournisseur d’identité...`, + 'loginOtp': `Code de vérification`, + 'loginTotpOneTime': `Code à usage unique`, + 'loginTotpScanBarcode': `Scannez ce code QR avec votre application d’authentification`, + 'logoutConfirmHeader': `Voulez-vous vraiment vous déconnecter ?`, + 'messageHeaderEmailUpdateConfirmation': `E-mail de confirmation envoyé`, + 'messageHeaderEmailUpdated': `E-mail mis à jour`, + 'messageHeaderEmailVerification': `Vérification de l’e-mail`, + 'messageHeaderErrorCode': `Code d’erreur`, + 'messageHeaderExecuteActions': `Actions requises`, + 'messageHeaderForgotPassword': `Mot de passe oublié ?`, + 'messageHeaderSuccessCode': `Code de succès`, + 'messageHeaderUpdatePassword': `Modifier le mot de passe`, + 'noAccount': `Pas de compte ?`, + 'nOrganization': ({ count }): string => { + return TranslationGen.resolvePlural(count, { + '=1': `${count} organisation`, + 'other': `${count} organisations`, + }) + }, + 'oauth2DeviceVerifyUserCodeMessage': `Saisissez le code utilisateur affiché sur votre appareil`, + 'oauthGrantMessage': `L’application demande l’accès à votre compte`, + 'oauthGrantScopes': `Autorisations demandées`, + 'oauthGrantTitle': `Autoriser l’accès`, + 'otp': `Mot de passe à usage unique`, + 'pageExpiredMessage': `Cette page a expiré. Veuillez recommencer le processus de connexion.`, + 'pageTitleAccount': `Compte`, + 'pageTitleAccountPassword': `Mot de passe`, + 'pageTitleCode': `Code de vérification`, + 'pageTitleConfigTotp': `Configuration de l’authentificateur mobile`, + 'pageTitleDeleteAccountConfirm': `Supprimer le compte`, + 'pageTitleDeleteCredential': `Supprimer l’identifiant`, + 'pageTitleEmailVerification': `Vérification de l’e-mail`, + 'pageTitleError': `Erreur`, + 'pageTitleForgotPassword': `Mot de passe oublié`, + 'pageTitleFrontchannelLogout': `Déconnexion en cours`, + 'pageTitleIdpLinkConfirm': `Associer le compte`, + 'pageTitleIdpLinkConfirmOverride': `Remplacer l’association`, + 'pageTitleIdpLinkEmail': `Associer le compte`, + 'pageTitleIdpReviewProfile': `Mettre à jour les informations du compte`, + 'pageTitleInfo': `Informations`, + 'pageTitleLinkIdp': `Associer un fournisseur d’identité`, + 'pageTitleLogin': `Connexion`, + 'pageTitleLoginOtp': `Code de vérification`, + 'pageTitleLoginPassword': `Connexion`, + 'pageTitleLoginUsername': `Connexion`, + 'pageTitleLogoutConfirm': `Déconnexion`, + 'pageTitleOauth2DeviceVerifyUserCode': `Connexion de l’appareil`, + 'pageTitleOauthGrant': `Autoriser l’accès`, + 'pageTitlePageDisabled': `Page désactivée`, + 'pageTitlePageExpired': `Page expirée`, + 'pageTitlePasskeysConditionalAuthenticate': `Connexion par passkey`, + 'pageTitleRecoveryCodeConfig': `Codes de récupération`, + 'pageTitleRecoveryCodeInput': `Code de récupération`, + 'pageTitleRegister': `Inscription`, + 'pageTitleResetOtp': `Réinitialiser l’authentificateur`, + 'pageTitleSamlPostForm': `Redirection`, + 'pageTitleSelectAuthenticator': `Choisir un authentificateur`, + 'pageTitleSelectOrganization': `Choisir une organisation`, + 'pageTitleTerms': `Conditions générales`, + 'pageTitleUpdateEmail': `Modifier l’e-mail`, + 'pageTitleUpdatePassword': `Modifier le mot de passe`, + 'pageTitleUpdateProfile': `Mettre à jour les informations du compte`, + 'pageTitleWebauthnAuthenticate': `Connexion par passkey`, + 'pageTitleWebauthnError': `Erreur de passkey`, + 'pageTitleWebauthnRegister': `Enregistrement de la passkey`, + 'pageTitleX509Info': `Certificat X.509`, + 'passkeysConditionalAuthenticateMessage': `Authentification par passkey...`, + 'password': `Mot de passe`, + 'passwordConfirm': `Confirmation du mot de passe`, + 'passwordNew': `Nouveau mot de passe`, + 'passwordSectionTitle': `Modifier le mot de passe`, + 'personalInfoTitle': `Informations personnelles`, + 'privacy': `Confidentialité`, + 'privacyPolicy': `politique de confidentialité`, + 'privacyRequired': `Vous devez accepter la politique de confidentialité pour continuer.`, + 'profilePicture': `Photo de profil`, + 'profilePictureComingSoon': `Importer une photo de profil – bientôt disponible.`, + 'profilePictureHelp': `JPEG, PNG ou WebP, 5 Mo max. L’image est redimensionnée et stockée en toute sécurité.`, + 'profilePictureTooLarge': `Le fichier sélectionné dépasse 5 Mo.`, + 'profilePictureUploadFailed': `Échec de l’importation. Veuillez réessayer.`, + 'profilePictureUploading': `Importation…`, + 'profilePictureWrongType': `Seules les images JPEG, PNG ou WebP sont prises en charge.`, + 'realmBannerAdmin': `Portail d’administration`, + 'realmBannerOther': `Realm interne`, + 'realmBannerSubtitleAdmin': `Accès administrateur – chaque action est journalisée.`, + 'realmBannerSubtitleOther': `Ceci n’est pas la connexion habituelle des clients.`, + 'realmBannerSubtitleTeam': `Vous vous connectez à un espace d’équipe à accès privilégié.`, + 'realmBannerTeam': `Espace de travail de l’équipe`, + 'recoveryAuthnCodeConfigMessage': `Configurez votre code d’authentification de récupération`, + 'recoveryCode': `Code de récupération`, + 'register': `S’inscrire`, + 'rememberMe': `Se souvenir de moi`, + 'removeProfilePicture': `Supprimer la photo`, + 'resetOtpMessage': `Votre OTP a été réinitialisé. Veuillez en configurer un nouveau.`, + 'samlPostFormMessage': `Redirection vers le fournisseur d’identité...`, + 'securitySectionTitle': `Sécurité`, + 'selectAuthenticatorTitle': `Choisir un authentificateur`, + 'selectOrganizationTitle': `Choisir une organisation`, + 'sessionExpired': `Le délai imparti pour la connexion est écoulé. +Le processus de connexion va recommencer depuis le début.`, + 'successAccountUpdated': `Votre compte a été mis à jour`, + 'successEmailSent': `Vous allez recevoir sous peu un e-mail contenant des instructions supplémentaires.`, + 'successMobileAuthenticatorConfigured': `Authentificateur mobile configuré`, + 'successPasswordChanged': `Mot de passe modifié avec succès`, + 'successPasswordUpdated': `Votre mot de passe a été mis à jour.`, + 'termsText': `Texte des conditions générales`, + 'updatePassword': `Modifier le mot de passe`, + 'uploadProfilePicture': `Importer une photo`, + 'userCode': `Code utilisateur`, + 'username': `Nom d’utilisateur`, + 'usernameOrEmail': `Nom d’utilisateur ou e-mail`, + 'webauthnAuthenticateMessage': `Authentifiez-vous avec votre clé de sécurité`, + 'webauthnErrorMessage': `Une erreur s’est produite lors de l’authentification WebAuthn`, + 'webauthnRegisterMessage': `Enregistrez votre clé de sécurité`, + 'x509InfoMessage': `Veuillez fournir les informations de votre certificat X.509`, + 'x509InfoTitle': `Informations du certificat X.509` + }, + 'it-IT': { + 'acceptPrivacy': `Ho letto e accetto la`, + 'acceptTerms': `Accetto i termini e le condizioni`, + 'accountSectionProfile': `Profilo`, + 'accountStatusActive': `Attivo`, + 'captchaFailed': `Verifica captcha non riuscita. Riprovi.`, + 'captchaLoading': `Caricamento captcha…`, + 'dangerZoneTitle': `Zona pericolosa`, + 'deleteAccountConfirm': `Vuole davvero eliminare il Suo account?`, + 'deleteCredentialConfirm': `Vuole davvero eliminare questa credenziale?`, + 'doAccept': `Accetta`, + 'doCancel': `Annulla`, + 'doClickHere': `Clicchi qui`, + 'doContinue': `Continua`, + 'doDecline': `Rifiuta`, + 'doDelete': `Elimina`, + 'doDeleteAccount': `Elimina account`, + 'doForgotPassword': `Password dimenticata?`, + 'doLink': `Collega`, + 'doLogIn': `Accedi`, + 'doLogout': `Esci`, + 'doOverride': `Sovrascrivi`, + 'doRegister': `Registrati`, + 'doRestart': `Ricomincia`, + 'doSave': `Salva`, + 'doSubmit': `Invia`, + 'doUpdate': `Aggiorna`, + 'email': `E-mail`, + 'emailVerificationBody': `Controlli la Sua e-mail per trovare il link di verifica.`, + 'emailVerificationBody1': `Controlli la Sua e-mail per trovare il link di verifica.`, + 'errorAccountDisabled': `Laccount è disattivato. Contatti lamministratore.`, + 'errorAccountTemporarilyDisabled': `Laccount è temporaneamente disattivato. Contatti lamministratore o riprovi più tardi.`, + 'errorIncorrectCurrentPassword': `Password attuale errata`, + 'errorInvalidCode': `Codice non valido`, + 'errorInvalidEmail': `E-mail non valida`, + 'errorInvalidExistingPassword': `Password esistente non valida`, + 'errorInvalidPassword': `Password non valida`, + 'errorInvalidRecoveryCode': `Codice di recupero non valido`, + 'errorInvalidTotp': `Codice di autenticazione non valido.`, + 'errorInvalidUserCode': `Codice utente non valido`, + 'errorInvalidUsername': `Nome utente non valido`, + 'errorInvalidUsernameOrPassword': `Nome utente o password non validi`, + 'errorMissingTotp': `Inserisca il codice di autenticazione.`, + 'errorPasswordMismatch': `Le password non corrispondono`, + 'errorPleaseSpecifyPassword': `Inserisca la password`, + 'errorUsernameExists': `Il nome utente esiste già.`, + 'firstName': `Nome`, + 'forgotPassword': `Password dimenticata?`, + 'frontchannelLogoutMessage': `Disconnessione in corso...`, + 'helpwaveId': `helpwave id`, + 'identity-provider-redirector': `Oppure accedi con`, + 'idpLinkConfirmMessage': `Vuole collegare questo provider di identità al Suo account?`, + 'idpLinkConfirmOverrideMessage': `Questo provider di identità è già collegato a un altro account. Vuole sovrascrivere il collegamento?`, + 'imprint': `Note legali`, + 'lastName': `Cognome`, + 'linkIdpMessage': `Collegamento del provider di identità...`, + 'loginOtp': `Codice di verifica`, + 'loginTotpOneTime': `Codice monouso`, + 'loginTotpScanBarcode': `Scansioni questo codice QR con la Sua app di autenticazione`, + 'logoutConfirmHeader': `Vuole davvero disconnettersi?`, + 'messageHeaderEmailUpdateConfirmation': `E-mail di conferma inviata`, + 'messageHeaderEmailUpdated': `E-mail aggiornata`, + 'messageHeaderEmailVerification': `Verifica e-mail`, + 'messageHeaderErrorCode': `Codice di errore`, + 'messageHeaderExecuteActions': `Azioni richieste`, + 'messageHeaderForgotPassword': `Ha dimenticato la password?`, + 'messageHeaderSuccessCode': `Codice di successo`, + 'messageHeaderUpdatePassword': `Aggiorna password`, + 'noAccount': `Non ha un account?`, + 'nOrganization': ({ count }): string => { + return TranslationGen.resolvePlural(count, { + '=1': `${count} organizzazione`, + 'other': `${count} organizzazioni`, + }) + }, + 'oauth2DeviceVerifyUserCodeMessage': `Inserisca il codice utente visualizzato sul Suo dispositivo`, + 'oauthGrantMessage': `Lapplicazione richiede laccesso al Suo account`, + 'oauthGrantScopes': `Autorizzazioni richieste`, + 'oauthGrantTitle': `Concedi accesso`, + 'otp': `Password monouso`, + 'pageExpiredMessage': `Questa pagina è scaduta. Ricominci la procedura di accesso.`, + 'pageTitleAccount': `Account`, + 'pageTitleAccountPassword': `Password`, + 'pageTitleCode': `Codice di verifica`, + 'pageTitleConfigTotp': `Configurazione autenticatore mobile`, + 'pageTitleDeleteAccountConfirm': `Elimina account`, + 'pageTitleDeleteCredential': `Elimina credenziale`, + 'pageTitleEmailVerification': `Verifica e-mail`, + 'pageTitleError': `Errore`, + 'pageTitleForgotPassword': `Password dimenticata`, + 'pageTitleFrontchannelLogout': `Disconnessione in corso`, + 'pageTitleIdpLinkConfirm': `Collega account`, + 'pageTitleIdpLinkConfirmOverride': `Sovrascrivi collegamento`, + 'pageTitleIdpLinkEmail': `Collega account`, + 'pageTitleInfo': `Informazioni`, + 'pageTitleLinkIdp': `Collega provider di identità`, + 'pageTitleLogin': `Accedi`, + 'pageTitleLoginOtp': `Codice di verifica`, + 'pageTitleLoginPassword': `Accedi`, + 'pageTitleLoginUsername': `Accedi`, + 'pageTitleLogoutConfirm': `Disconnessione`, + 'pageTitleOauth2DeviceVerifyUserCode': `Accesso dal dispositivo`, + 'pageTitleOauthGrant': `Concedi accesso`, + 'pageTitlePageDisabled': `Pagina disattivata`, + 'pageTitlePageExpired': `Pagina scaduta`, + 'pageTitlePasskeysConditionalAuthenticate': `Accesso con passkey`, + 'pageTitleRecoveryCodeConfig': `Codici di recupero`, + 'pageTitleRecoveryCodeInput': `Codice di recupero`, + 'pageTitleRegister': `Registrazione`, + 'pageTitleResetOtp': `Reimposta autenticatore`, + 'pageTitleSamlPostForm': `Reindirizzamento`, + 'pageTitleSelectAuthenticator': `Seleziona metodo di autenticazione`, + 'pageTitleSelectOrganization': `Seleziona organizzazione`, + 'pageTitleTerms': `Termini e condizioni`, + 'pageTitleUpdateEmail': `Aggiorna e-mail`, + 'pageTitleUpdatePassword': `Aggiorna password`, + 'pageTitleWebauthnAuthenticate': `Accesso con passkey`, + 'pageTitleWebauthnError': `Errore passkey`, + 'pageTitleWebauthnRegister': `Registrazione passkey`, + 'pageTitleX509Info': `Certificato X.509`, + 'passkeysConditionalAuthenticateMessage': `Autenticazione con passkey...`, + 'password': `Password`, + 'passwordConfirm': `Conferma password`, + 'passwordNew': `Nuova password`, + 'passwordSectionTitle': `Aggiorna password`, + 'personalInfoTitle': `Informazioni personali`, + 'privacy': `Privacy`, + 'privacyPolicy': `informativa sulla privacy`, + 'profilePicture': `Immagine del profilo`, + 'profilePictureTooLarge': `Il file selezionato supera i 5 MB.`, + 'profilePictureUploadFailed': `Caricamento non riuscito. Riprovi.`, + 'profilePictureUploading': `Caricamento in corso…`, + 'profilePictureWrongType': `Sono supportate solo immagini JPEG, PNG o WebP.`, + 'realmBannerAdmin': `Portale amministratore`, + 'realmBannerOther': `Realm interno`, + 'realmBannerSubtitleAdmin': `Accesso amministrativo — ogni azione viene registrata.`, + 'realmBannerTeam': `Area di lavoro del team`, + 'recoveryCode': `Codice di recupero`, + 'register': `Registrati`, + 'rememberMe': `Ricordami`, + 'removeProfilePicture': `Rimuovi immagine`, + 'resetOtpMessage': `Il Suo OTP è stato reimpostato. Ne configuri uno nuovo.`, + 'samlPostFormMessage': `Reindirizzamento al provider di identità...`, + 'securitySectionTitle': `Sicurezza`, + 'selectAuthenticatorTitle': `Seleziona metodo di autenticazione`, + 'selectOrganizationTitle': `Seleziona organizzazione`, + 'successAccountUpdated': `Il Suo account è stato aggiornato`, + 'successMobileAuthenticatorConfigured': `Autenticatore mobile configurato`, + 'successPasswordChanged': `Password modificata correttamente`, + 'successPasswordUpdated': `La Sua password è stata aggiornata.`, + 'termsText': `Testo dei termini e condizioni`, + 'updatePassword': `Aggiorna password`, + 'uploadProfilePicture': `Carica immagine`, + 'userCode': `Codice utente`, + 'username': `Nome utente`, + 'usernameOrEmail': `Nome utente o e-mail`, + 'webauthnAuthenticateMessage': `Si autentichi con la Sua chiave di sicurezza`, + 'webauthnRegisterMessage': `Registri la Sua chiave di sicurezza`, + 'x509InfoMessage': `Fornisca le informazioni del Suo certificato X.509`, + 'x509InfoTitle': `Informazioni sul certificato X.509` + }, + 'nl-NL': { + 'acceptPrivacy': `Ik heb het`, + 'acceptTerms': `Ik ga akkoord met de algemene voorwaarden`, + 'accountSectionProfile': `Profiel`, + 'accountStatusActive': `Actief`, + 'backToAccount': `Terug naar account`, + 'backToApplication': `Terug naar de applicatie`, + 'backToLogin': `Terug naar inloggen`, + 'captchaFailed': `Captcha-verificatie mislukt. Probeer het opnieuw.`, + 'captchaLoading': `Captcha laden…`, + 'dangerZoneTitle': `Gevarenzone`, + 'deleteAccountConfirm': `Weet u zeker dat u uw account wilt verwijderen?`, + 'deleteCredentialConfirm': `Weet u zeker dat u deze inloggegevens wilt verwijderen?`, + 'doAccept': `Accepteren`, + 'doCancel': `Annuleren`, + 'doClickHere': `Klik hier`, + 'doContinue': `Doorgaan`, + 'doDecline': `Weigeren`, + 'doDelete': `Verwijderen`, + 'doDeleteAccount': `Account verwijderen`, + 'doForgotPassword': `Wachtwoord vergeten?`, + 'doLink': `Koppelen`, + 'doLogIn': `Inloggen`, + 'doLogout': `Uitloggen`, + 'doOverride': `Overschrijven`, + 'doRegister': `Registreren`, + 'doRestart': `Opnieuw beginnen`, + 'doSave': `Opslaan`, + 'doSubmit': `Verzenden`, + 'doUpdate': `Bijwerken`, + 'email': `E-mailadres`, + 'emailVerificationBody': `Controleer uw e-mail voor een verificatielink.`, + 'emailVerificationBody1': `Controleer uw e-mail voor een verificatielink.`, + 'errorAccountDisabled': `Account is uitgeschakeld, neem contact op met uw beheerder.`, + 'errorAccountTemporarilyDisabled': `Account is tijdelijk uitgeschakeld. Neem contact op met uw beheerder of probeer het later opnieuw.`, + 'errorConfigureTotp': `U moet een mobiele authenticator instellen om uw account te activeren.`, + 'errorEmailExists': `E-mailadres bestaat al.`, + 'errorEmailSendError': `Verzenden van e-mail mislukt, probeer het later opnieuw.`, + 'errorExpiredAction': `Actie verlopen. Ga nu verder met inloggen.`, + 'errorExpiredCode': `Inlogtijd verlopen. Log opnieuw in.`, + 'errorIncorrectCurrentPassword': `Huidig wachtwoord onjuist`, + 'errorInvalidCode': `Ongeldige code`, + 'errorInvalidEmail': `Ongeldig e-mailadres`, + 'errorInvalidExistingPassword': `Bestaand wachtwoord ongeldig`, + 'errorInvalidPassword': `Ongeldig wachtwoord`, + 'errorInvalidRecoveryCode': `Ongeldige herstelcode`, + 'errorInvalidTotp': `Ongeldige authenticatorcode.`, + 'errorInvalidUserCode': `Ongeldige gebruikerscode`, + 'errorInvalidUsername': `Ongeldige gebruikersnaam`, + 'errorInvalidUsernameOrPassword': `Ongeldige gebruikersnaam of ongeldig wachtwoord`, + 'errorMissingTotp': `Voer de authenticatorcode in.`, + 'errorPasswordMismatch': `Wachtwoorden komen niet overeen`, + 'errorPleaseSpecifyPassword': `Voer een wachtwoord in`, + 'errorUsernameExists': `Gebruikersnaam bestaat al.`, + 'firstName': `Voornaam`, + 'forgotPassword': `Wachtwoord vergeten?`, + 'frontchannelLogoutMessage': `Bezig met uitloggen…`, + 'helpwaveId': `helpwave id`, + 'identity-provider-redirector': `Of inloggen met`, + 'idpLinkConfirmMessage': `Wilt u deze identiteitsprovider aan uw account koppelen?`, + 'idpLinkConfirmOverrideMessage': `Deze identiteitsprovider is al aan een ander account gekoppeld. Wilt u deze koppeling overschrijven?`, + 'imprint': `Colofon`, + 'lastName': `Achternaam`, + 'linkIdpMessage': `Identiteitsprovider koppelen…`, + 'loginOtp': `Verificatiecode`, + 'loginTotpOneTime': `Eenmalige code`, + 'loginTotpScanBarcode': `Scan deze QR-code met uw authenticator-app`, + 'logoutConfirmHeader': `Weet u zeker dat u wilt uitloggen?`, + 'messageHeaderEmailUpdateConfirmation': `Bevestigingsmail verzonden`, + 'messageHeaderEmailUpdated': `E-mailadres bijgewerkt`, + 'messageHeaderEmailVerification': `E-mailverificatie`, + 'messageHeaderErrorCode': `Foutcode`, + 'messageHeaderExecuteActions': `Vereiste acties`, + 'messageHeaderForgotPassword': `Wachtwoord vergeten?`, + 'messageHeaderSuccessCode': `Succescode`, + 'messageHeaderUpdatePassword': `Wachtwoord wijzigen`, + 'noAccount': `Geen account?`, + 'nOrganization': ({ count }): string => { + return TranslationGen.resolvePlural(count, { + '=1': `${count} organisatie`, + 'other': `${count} organisaties`, + }) + }, + 'oauth2DeviceVerifyUserCodeMessage': `Voer de gebruikerscode in die op uw apparaat wordt weergegeven`, + 'oauthGrantMessage': `De applicatie vraagt toegang tot uw account`, + 'oauthGrantScopes': `Gevraagde rechten`, + 'oauthGrantTitle': `Toegang verlenen`, + 'otp': `Eenmalig wachtwoord`, + 'pageExpiredMessage': `Deze pagina is verlopen. Start het inlogproces opnieuw.`, + 'pageTitleAccount': `Account`, + 'pageTitleAccountPassword': `Wachtwoord`, + 'pageTitleCode': `Verificatiecode`, + 'pageTitleConfigTotp': `Mobiele authenticator instellen`, + 'pageTitleDeleteAccountConfirm': `Account verwijderen`, + 'pageTitleDeleteCredential': `Inloggegevens verwijderen`, + 'pageTitleEmailVerification': `E-mailverificatie`, + 'pageTitleError': `Fout`, + 'pageTitleForgotPassword': `Wachtwoord vergeten`, + 'pageTitleFrontchannelLogout': `Bezig met uitloggen`, + 'pageTitleIdpLinkConfirm': `Account koppelen`, + 'pageTitleIdpLinkConfirmOverride': `Koppeling overschrijven`, + 'pageTitleIdpLinkEmail': `Account koppelen`, + 'pageTitleIdpReviewProfile': `Accountgegevens bijwerken`, + 'pageTitleInfo': `Informatie`, + 'pageTitleLinkIdp': `Identiteitsprovider koppelen`, + 'pageTitleLogin': `Inloggen`, + 'pageTitleLoginOtp': `Verificatiecode`, + 'pageTitleLoginPassword': `Inloggen`, + 'pageTitleLoginUsername': `Inloggen`, + 'pageTitleLogoutConfirm': `Uitloggen`, + 'pageTitleOauth2DeviceVerifyUserCode': `Inloggen op apparaat`, + 'pageTitleOauthGrant': `Toegang verlenen`, + 'pageTitlePageDisabled': `Pagina uitgeschakeld`, + 'pageTitlePageExpired': `Pagina verlopen`, + 'pageTitlePasskeysConditionalAuthenticate': `Inloggen met passkey`, + 'pageTitleRecoveryCodeConfig': `Herstelcodes`, + 'pageTitleRecoveryCodeInput': `Herstelcode`, + 'pageTitleRegister': `Registreren`, + 'pageTitleResetOtp': `Authenticator resetten`, + 'pageTitleSamlPostForm': `Doorsturen`, + 'pageTitleSelectAuthenticator': `Authenticator kiezen`, + 'pageTitleSelectOrganization': `Organisatie kiezen`, + 'pageTitleTerms': `Algemene voorwaarden`, + 'pageTitleUpdateEmail': `E-mailadres wijzigen`, + 'pageTitleUpdatePassword': `Wachtwoord wijzigen`, + 'pageTitleUpdateProfile': `Accountgegevens bijwerken`, + 'pageTitleWebauthnAuthenticate': `Inloggen met passkey`, + 'pageTitleWebauthnError': `Passkey-fout`, + 'pageTitleWebauthnRegister': `Passkey registreren`, + 'pageTitleX509Info': `X.509-certificaat`, + 'passkeysConditionalAuthenticateMessage': `Authenticeren met passkey…`, + 'password': `Wachtwoord`, + 'passwordConfirm': `Wachtwoord bevestigen`, + 'passwordNew': `Nieuw wachtwoord`, + 'passwordSectionTitle': `Wachtwoord wijzigen`, + 'personalInfoTitle': `Persoonlijke gegevens`, + 'privacy': `Privacy`, + 'privacyPolicy': `privacybeleid gelezen en ga ermee akkoord`, + 'privacyRequired': `U moet het privacybeleid accepteren om verder te gaan.`, + 'profilePicture': `Profielfoto`, + 'profilePictureComingSoon': `Profielfoto uploaden – binnenkort beschikbaar.`, + 'profilePictureHelp': `JPEG, PNG of WebP, max. 5 MB. De afbeelding wordt geschaald en veilig opgeslagen.`, + 'profilePictureTooLarge': `Het geselecteerde bestand is groter dan 5 MB.`, + 'profilePictureUploadFailed': `Uploaden mislukt. Probeer het opnieuw.`, + 'profilePictureUploading': `Uploaden…`, + 'profilePictureWrongType': `Alleen JPEG-, PNG- of WebP-afbeeldingen worden ondersteund.`, + 'realmBannerAdmin': `Beheerdersportaal`, + 'realmBannerOther': `Interne realm`, + 'realmBannerSubtitleAdmin': `Beheerderstoegang – elke actie wordt vastgelegd.`, + 'realmBannerSubtitleOther': `Dit is niet de gewone klantenlogin.`, + 'realmBannerSubtitleTeam': `U meldt zich aan bij een beveiligde teamomgeving.`, + 'realmBannerTeam': `Teamwerkruimte`, + 'recoveryAuthnCodeConfigMessage': `Stel uw herstelcode voor authenticatie in`, + 'recoveryCode': `Herstelcode`, + 'register': `Registreren`, + 'rememberMe': `Ingelogd blijven`, + 'removeProfilePicture': `Foto verwijderen`, + 'resetOtpMessage': `Uw OTP is gereset. Stel een nieuwe in.`, + 'samlPostFormMessage': `Doorsturen naar identiteitsprovider…`, + 'securitySectionTitle': `Beveiliging`, + 'selectAuthenticatorTitle': `Authenticator kiezen`, + 'selectOrganizationTitle': `Organisatie kiezen`, + 'sessionExpired': `De beschikbare tijd voor de verbinding is verstreken. +Het inlogproces wordt opnieuw gestart.`, + 'successAccountUpdated': `Uw account is bijgewerkt`, + 'successEmailSent': `U ontvangt binnenkort een e-mail met verdere instructies.`, + 'successMobileAuthenticatorConfigured': `Mobiele authenticator ingesteld`, + 'successPasswordChanged': `Wachtwoord succesvol gewijzigd`, + 'successPasswordUpdated': `Uw wachtwoord is bijgewerkt.`, + 'termsText': `Tekst van de algemene voorwaarden`, + 'updatePassword': `Wachtwoord wijzigen`, + 'uploadProfilePicture': `Foto uploaden`, + 'userCode': `Gebruikerscode`, + 'username': `Gebruikersnaam`, + 'usernameOrEmail': `Gebruikersnaam of e-mailadres`, + 'webauthnAuthenticateMessage': `Authenticeer met uw beveiligingssleutel`, + 'webauthnErrorMessage': `Er is een fout opgetreden bij de WebAuthn-authenticatie`, + 'webauthnRegisterMessage': `Registreer uw beveiligingssleutel`, + 'x509InfoMessage': `Geef de informatie van uw X.509-certificaat op`, + 'x509InfoTitle': `Informatie over X.509-certificaat` + }, + 'pl-PL': { + 'acceptPrivacy': `Potwierdzam zapoznanie się i akceptuję`, + 'acceptTerms': `Akceptuję regulamin`, + 'accountSectionProfile': `Profil`, + 'accountStatusActive': `Aktywne`, + 'backToAccount': `Powrót do konta`, + 'backToApplication': `Powrót do aplikacji`, + 'backToLogin': `Powrót do logowania`, + 'captchaFailed': `Weryfikacja captcha nie powiodła się. Spróbuj ponownie.`, + 'captchaLoading': `Ładowanie captcha…`, + 'dangerZoneTitle': `Strefa zagrożenia`, + 'deleteAccountConfirm': `Czy na pewno chcesz usunąć swoje konto?`, + 'deleteCredentialConfirm': `Czy na pewno chcesz usunąć te dane uwierzytelniające?`, + 'doAccept': `Akceptuj`, + 'doCancel': `Anuluj`, + 'doClickHere': `Kliknij tutaj`, + 'doContinue': `Dalej`, + 'doDecline': `Odrzuć`, + 'doDelete': `Usuń`, + 'doDeleteAccount': `Usuń konto`, + 'doForgotPassword': `Nie pamiętasz hasła?`, + 'doLink': `Połącz`, + 'doLogIn': `Zaloguj się`, + 'doLogout': `Wyloguj się`, + 'doOverride': `Zastąp`, + 'doRegister': `Zarejestruj się`, + 'doRestart': `Zacznij od nowa`, + 'doSave': `Zapisz`, + 'doSubmit': `Wyślij`, + 'doUpdate': `Aktualizuj`, + 'email': `E-mail`, + 'emailVerificationBody': `Sprawdź skrzynkę e-mail – wysłaliśmy link weryfikacyjny.`, + 'emailVerificationBody1': `Sprawdź skrzynkę e-mail – wysłaliśmy link weryfikacyjny.`, + 'errorAccountDisabled': `Konto jest wyłączone. Skontaktuj się z administratorem.`, + 'errorAccountTemporarilyDisabled': `Konto jest tymczasowo zablokowane. Skontaktuj się z administratorem lub spróbuj ponownie później.`, + 'errorConfigureTotp': `Aby aktywować konto, należy skonfigurować aplikację uwierzytelniającą.`, + 'errorEmailExists': `Adres e-mail już istnieje.`, + 'errorEmailSendError': `Nie udało się wysłać wiadomości e-mail. Spróbuj ponownie później.`, + 'errorExpiredAction': `Czynność wygasła. Kontynuuj logowanie.`, + 'errorExpiredCode': `Przekroczono czas logowania. Zaloguj się ponownie.`, + 'errorIncorrectCurrentPassword': `Nieprawidłowe obecne hasło`, + 'errorInvalidCode': `Nieprawidłowy kod`, + 'errorInvalidEmail': `Nieprawidłowy adres e-mail`, + 'errorInvalidExistingPassword': `Nieprawidłowe dotychczasowe hasło`, + 'errorInvalidPassword': `Nieprawidłowe hasło`, + 'errorInvalidRecoveryCode': `Nieprawidłowy kod odzyskiwania`, + 'errorInvalidTotp': `Nieprawidłowy kod uwierzytelniający.`, + 'errorInvalidUserCode': `Nieprawidłowy kod użytkownika`, + 'errorInvalidUsername': `Nieprawidłowa nazwa użytkownika`, + 'errorInvalidUsernameOrPassword': `Nieprawidłowa nazwa użytkownika lub hasło`, + 'errorMissingTotp': `Podaj kod uwierzytelniający.`, + 'errorPasswordMismatch': `Hasła nie są zgodne`, + 'errorPleaseSpecifyPassword': `Podaj hasło`, + 'errorUsernameExists': `Nazwa użytkownika już istnieje.`, + 'firstName': `Imię`, + 'forgotPassword': `Nie pamiętasz hasła?`, + 'frontchannelLogoutMessage': `Wylogowywanie…`, + 'helpwaveId': `helpwave id`, + 'identity-provider-redirector': `Lub zaloguj się przez`, + 'idpLinkConfirmMessage': `Czy chcesz połączyć tego dostawcę tożsamości ze swoim kontem?`, + 'idpLinkConfirmOverrideMessage': `Ten dostawca tożsamości jest już połączony z innym kontem. Czy chcesz zastąpić to powiązanie?`, + 'imprint': `Nota prawna`, + 'lastName': `Nazwisko`, + 'linkIdpMessage': `Łączenie dostawcy tożsamości…`, + 'loginOtp': `Kod weryfikacyjny`, + 'loginTotpOneTime': `Kod jednorazowy`, + 'loginTotpScanBarcode': `Zeskanuj ten kod QR w aplikacji uwierzytelniającej`, + 'logoutConfirmHeader': `Czy na pewno chcesz się wylogować?`, + 'messageHeaderEmailUpdateConfirmation': `Wysłano wiadomość potwierdzającą`, + 'messageHeaderEmailUpdated': `Adres e-mail zaktualizowany`, + 'messageHeaderEmailVerification': `Weryfikacja adresu e-mail`, + 'messageHeaderErrorCode': `Kod błędu`, + 'messageHeaderExecuteActions': `Wymagane czynności`, + 'messageHeaderForgotPassword': `Nie pamiętasz hasła?`, + 'messageHeaderSuccessCode': `Kod powodzenia`, + 'messageHeaderUpdatePassword': `Zmień hasło`, + 'noAccount': `Nie masz konta?`, + 'nOrganization': ({ count }): string => { + return TranslationGen.resolvePlural(count, { + '=1': `${count} organizacja`, + 'few': `${count} organizacje`, + 'many': `${count} organizacji`, + 'other': `${count} organizacji`, + }) + }, + 'oauth2DeviceVerifyUserCodeMessage': `Wprowadź kod użytkownika wyświetlany na urządzeniu`, + 'oauthGrantMessage': `Aplikacja prosi o dostęp do Twojego konta`, + 'oauthGrantScopes': `Żądane uprawnienia`, + 'oauthGrantTitle': `Udziel dostępu`, + 'otp': `Hasło jednorazowe`, + 'pageExpiredMessage': `Ta strona wygasła. Rozpocznij logowanie od nowa.`, + 'pageTitleAccount': `Konto`, + 'pageTitleAccountPassword': `Hasło`, + 'pageTitleCode': `Kod weryfikacyjny`, + 'pageTitleConfigTotp': `Konfiguracja aplikacji uwierzytelniającej`, + 'pageTitleDeleteAccountConfirm': `Usuwanie konta`, + 'pageTitleDeleteCredential': `Usuwanie danych uwierzytelniających`, + 'pageTitleEmailVerification': `Weryfikacja adresu e-mail`, + 'pageTitleError': `Błąd`, + 'pageTitleForgotPassword': `Nie pamiętam hasła`, + 'pageTitleFrontchannelLogout': `Wylogowywanie`, + 'pageTitleIdpLinkConfirm': `Łączenie konta`, + 'pageTitleIdpLinkConfirmOverride': `Zastąpienie powiązania`, + 'pageTitleIdpLinkEmail': `Łączenie konta`, + 'pageTitleIdpReviewProfile': `Aktualizacja danych konta`, + 'pageTitleInfo': `Informacja`, + 'pageTitleLinkIdp': `Łączenie dostawcy tożsamości`, + 'pageTitleLogin': `Logowanie`, + 'pageTitleLoginOtp': `Kod weryfikacyjny`, + 'pageTitleLoginPassword': `Logowanie`, + 'pageTitleLoginUsername': `Logowanie`, + 'pageTitleLogoutConfirm': `Wylogowanie`, + 'pageTitleOauth2DeviceVerifyUserCode': `Logowanie na urządzeniu`, + 'pageTitleOauthGrant': `Udzielanie dostępu`, + 'pageTitlePageDisabled': `Strona wyłączona`, + 'pageTitlePageExpired': `Strona wygasła`, + 'pageTitlePasskeysConditionalAuthenticate': `Logowanie kluczem dostępu`, + 'pageTitleRecoveryCodeConfig': `Kody odzyskiwania`, + 'pageTitleRecoveryCodeInput': `Kod odzyskiwania`, + 'pageTitleRegister': `Rejestracja`, + 'pageTitleResetOtp': `Resetowanie uwierzytelniania`, + 'pageTitleSamlPostForm': `Przekierowywanie`, + 'pageTitleSelectAuthenticator': `Wybór metody uwierzytelniania`, + 'pageTitleSelectOrganization': `Wybór organizacji`, + 'pageTitleTerms': `Regulamin`, + 'pageTitleUpdateEmail': `Zmiana adresu e-mail`, + 'pageTitleUpdatePassword': `Zmiana hasła`, + 'pageTitleUpdateProfile': `Aktualizacja danych konta`, + 'pageTitleWebauthnAuthenticate': `Logowanie kluczem dostępu`, + 'pageTitleWebauthnError': `Błąd klucza dostępu`, + 'pageTitleWebauthnRegister': `Rejestracja klucza dostępu`, + 'pageTitleX509Info': `Certyfikat X.509`, + 'passkeysConditionalAuthenticateMessage': `Uwierzytelnianie kluczem dostępu…`, + 'password': `Hasło`, + 'passwordConfirm': `Potwierdź hasło`, + 'passwordNew': `Nowe hasło`, + 'passwordSectionTitle': `Zmień hasło`, + 'personalInfoTitle': `Dane osobowe`, + 'privacy': `Prywatność`, + 'privacyPolicy': `politykę prywatności`, + 'privacyRequired': `Aby kontynuować, należy zaakceptować politykę prywatności.`, + 'profilePicture': `Zdjęcie profilowe`, + 'profilePictureComingSoon': `Przesyłanie zdjęcia profilowego – wkrótce.`, + 'profilePictureHelp': `JPEG, PNG lub WebP, maks. 5 MB. Obraz zostanie przeskalowany i bezpiecznie zapisany.`, + 'profilePictureTooLarge': `Wybrany plik jest większy niż 5 MB.`, + 'profilePictureUploadFailed': `Przesyłanie nie powiodło się. Spróbuj ponownie.`, + 'profilePictureUploading': `Przesyłanie…`, + 'profilePictureWrongType': `Obsługiwane są tylko obrazy JPEG, PNG lub WebP.`, + 'realmBannerAdmin': `Portal administratora`, + 'realmBannerOther': `Wewnętrzny realm`, + 'realmBannerSubtitleAdmin': `Dostęp administracyjny – każda czynność jest rejestrowana.`, + 'realmBannerSubtitleOther': `To nie jest standardowe logowanie dla klientów.`, + 'realmBannerSubtitleTeam': `Logujesz się do uprzywilejowanej strefy zespołu.`, + 'realmBannerTeam': `Przestrzeń zespołu`, + 'recoveryAuthnCodeConfigMessage': `Skonfiguruj kod odzyskiwania uwierzytelniania`, + 'recoveryCode': `Kod odzyskiwania`, + 'register': `Zarejestruj się`, + 'rememberMe': `Zapamiętaj mnie`, + 'removeProfilePicture': `Usuń zdjęcie`, + 'resetOtpMessage': `Kod OTP został zresetowany. Skonfiguruj nowy.`, + 'samlPostFormMessage': `Przekierowywanie do dostawcy tożsamości…`, + 'securitySectionTitle': `Bezpieczeństwo`, + 'selectAuthenticatorTitle': `Wybierz metodę uwierzytelniania`, + 'selectOrganizationTitle': `Wybierz organizację`, + 'sessionExpired': `Upłynął czas przeznaczony na połączenie. +Proces logowania rozpocznie się od nowa.`, + 'successAccountUpdated': `Konto zostało zaktualizowane`, + 'successEmailSent': `Wkrótce otrzymasz wiadomość e-mail z dalszymi instrukcjami.`, + 'successMobileAuthenticatorConfigured': `Skonfigurowano aplikację uwierzytelniającą`, + 'successPasswordChanged': `Hasło zostało zmienione`, + 'successPasswordUpdated': `Hasło zostało zaktualizowane.`, + 'termsText': `Treść regulaminu`, + 'updatePassword': `Zmień hasło`, + 'uploadProfilePicture': `Prześlij zdjęcie`, + 'userCode': `Kod użytkownika`, + 'username': `Nazwa użytkownika`, + 'usernameOrEmail': `Nazwa użytkownika lub e-mail`, + 'webauthnAuthenticateMessage': `Uwierzytelnij się kluczem bezpieczeństwa`, + 'webauthnErrorMessage': `Wystąpił błąd podczas uwierzytelniania WebAuthn`, + 'webauthnRegisterMessage': `Zarejestruj klucz bezpieczeństwa`, + 'x509InfoMessage': `Podaj informacje o certyfikacie X.509`, + 'x509InfoTitle': `Informacje o certyfikacie X.509` + }, + 'ru-RU': { + 'acceptPrivacy': `Я прочитал(а) и принимаю`, + 'acceptTerms': `Я принимаю условия использования`, + 'accountSectionProfile': `Профиль`, + 'accountStatusActive': `Активен`, + 'backToAccount': `Вернуться к учётной записи`, + 'backToApplication': `Вернуться в приложение`, + 'backToLogin': `Вернуться ко входу`, + 'captchaFailed': `Не удалось пройти проверку CAPTCHA. Пожалуйста, попробуйте ещё раз.`, + 'captchaLoading': `Загрузка CAPTCHA…`, + 'dangerZoneTitle': `Опасная зона`, + 'deleteAccountConfirm': `Вы действительно хотите удалить свою учётную запись?`, + 'deleteCredentialConfirm': `Вы действительно хотите удалить эти учётные данные?`, + 'doAccept': `Принять`, + 'doCancel': `Отмена`, + 'doClickHere': `Нажмите здесь`, + 'doContinue': `Продолжить`, + 'doDecline': `Отклонить`, + 'doDelete': `Удалить`, + 'doDeleteAccount': `Удалить учётную запись`, + 'doForgotPassword': `Забыли пароль?`, + 'doLink': `Привязать`, + 'doLogIn': `Войти`, + 'doLogout': `Выйти`, + 'doOverride': `Заменить`, + 'doRegister': `Зарегистрироваться`, + 'doRestart': `Начать заново`, + 'doSave': `Сохранить`, + 'doSubmit': `Отправить`, + 'doUpdate': `Обновить`, + 'email': `Эл. почта`, + 'emailVerificationBody': `Пожалуйста, проверьте почту: мы отправили Вам ссылку для подтверждения.`, + 'emailVerificationBody1': `Пожалуйста, проверьте почту: мы отправили Вам ссылку для подтверждения.`, + 'errorAccountDisabled': `Учётная запись заблокирована, обратитесь к администратору.`, + 'errorAccountTemporarilyDisabled': `Учётная запись временно заблокирована. Обратитесь к администратору или повторите попытку позже.`, + 'errorConfigureTotp': `Для активации учётной записи необходимо настроить мобильный аутентификатор.`, + 'errorEmailExists': `Этот адрес эл. почты уже используется.`, + 'errorEmailSendError': `Не удалось отправить письмо. Пожалуйста, повторите попытку позже.`, + 'errorExpiredAction': `Срок действия истёк. Пожалуйста, продолжите вход.`, + 'errorExpiredCode': `Время входа истекло. Пожалуйста, войдите снова.`, + 'errorIncorrectCurrentPassword': `Неверный текущий пароль`, + 'errorInvalidCode': `Неверный код`, + 'errorInvalidEmail': `Неверный адрес эл. почты`, + 'errorInvalidExistingPassword': `Неверный текущий пароль`, + 'errorInvalidPassword': `Неверный пароль`, + 'errorInvalidRecoveryCode': `Неверный код восстановления`, + 'errorInvalidTotp': `Неверный код аутентификатора.`, + 'errorInvalidUserCode': `Неверный код пользователя`, + 'errorInvalidUsername': `Неверное имя пользователя`, + 'errorInvalidUsernameOrPassword': `Неверное имя пользователя или пароль`, + 'errorMissingTotp': `Пожалуйста, введите код аутентификатора.`, + 'errorPasswordMismatch': `Пароли не совпадают`, + 'errorPleaseSpecifyPassword': `Пожалуйста, введите пароль`, + 'errorUsernameExists': `Имя пользователя уже занято.`, + 'firstName': `Имя`, + 'forgotPassword': `Забыли пароль?`, + 'frontchannelLogoutMessage': `Выполняется выход…`, + 'helpwaveId': `helpwave id`, + 'identity-provider-redirector': `Или войдите с помощью`, + 'idpLinkConfirmMessage': `Привязать этого поставщика удостоверений к Вашей учётной записи?`, + 'idpLinkConfirmOverrideMessage': `Этот поставщик удостоверений уже привязан к другой учётной записи. Заменить привязку?`, + 'imprint': `Выходные данные`, + 'lastName': `Фамилия`, + 'linkIdpMessage': `Привязка поставщика удостоверений…`, + 'loginOtp': `Код подтверждения`, + 'loginTotpOneTime': `Одноразовый код`, + 'loginTotpScanBarcode': `Отсканируйте этот QR-код в приложении-аутентификаторе`, + 'logoutConfirmHeader': `Вы действительно хотите выйти?`, + 'messageHeaderEmailUpdateConfirmation': `Письмо с подтверждением отправлено`, + 'messageHeaderEmailUpdated': `Адрес эл. почты обновлён`, + 'messageHeaderEmailVerification': `Подтверждение эл. почты`, + 'messageHeaderErrorCode': `Код ошибки`, + 'messageHeaderExecuteActions': `Необходимые действия`, + 'messageHeaderForgotPassword': `Забыли пароль?`, + 'messageHeaderSuccessCode': `Код успеха`, + 'messageHeaderUpdatePassword': `Изменение пароля`, + 'noAccount': `Нет учётной записи?`, + 'nOrganization': ({ count }): string => { + return TranslationGen.resolvePlural(count, { + 'one': `${count} организация`, + 'few': `${count} организации`, + 'many': `${count} организаций`, + 'other': `${count} организации`, + }) + }, + 'oauth2DeviceVerifyUserCodeMessage': `Введите код пользователя, отображаемый на Вашем устройстве`, + 'oauthGrantMessage': `Приложение запрашивает доступ к Вашей учётной записи`, + 'oauthGrantScopes': `Запрашиваемые разрешения`, + 'oauthGrantTitle': `Предоставление доступа`, + 'otp': `Одноразовый пароль`, + 'pageExpiredMessage': `Срок действия этой страницы истёк. Пожалуйста, начните вход заново.`, + 'pageTitleAccount': `Учётная запись`, + 'pageTitleAccountPassword': `Пароль`, + 'pageTitleCode': `Код подтверждения`, + 'pageTitleConfigTotp': `Настройка мобильного аутентификатора`, + 'pageTitleDeleteAccountConfirm': `Удаление учётной записи`, + 'pageTitleDeleteCredential': `Удаление учётных данных`, + 'pageTitleEmailVerification': `Подтверждение эл. почты`, + 'pageTitleError': `Ошибка`, + 'pageTitleForgotPassword': `Восстановление пароля`, + 'pageTitleFrontchannelLogout': `Выход из системы`, + 'pageTitleIdpLinkConfirm': `Привязка учётной записи`, + 'pageTitleIdpLinkConfirmOverride': `Замена привязки`, + 'pageTitleIdpLinkEmail': `Привязка учётной записи`, + 'pageTitleIdpReviewProfile': `Обновление данных учётной записи`, + 'pageTitleInfo': `Информация`, + 'pageTitleLinkIdp': `Привязка поставщика удостоверений`, + 'pageTitleLogin': `Вход`, + 'pageTitleLoginOtp': `Код подтверждения`, + 'pageTitleLoginPassword': `Вход`, + 'pageTitleLoginUsername': `Вход`, + 'pageTitleLogoutConfirm': `Выход`, + 'pageTitleOauth2DeviceVerifyUserCode': `Вход с устройства`, + 'pageTitleOauthGrant': `Предоставление доступа`, + 'pageTitlePageDisabled': `Страница отключена`, + 'pageTitlePageExpired': `Срок действия страницы истёк`, + 'pageTitlePasskeysConditionalAuthenticate': `Вход с ключом доступа`, + 'pageTitleRecoveryCodeConfig': `Коды восстановления`, + 'pageTitleRecoveryCodeInput': `Код восстановления`, + 'pageTitleRegister': `Регистрация`, + 'pageTitleResetOtp': `Сброс аутентификатора`, + 'pageTitleSamlPostForm': `Перенаправление`, + 'pageTitleSelectAuthenticator': `Выбор способа аутентификации`, + 'pageTitleSelectOrganization': `Выбор организации`, + 'pageTitleTerms': `Условия использования`, + 'pageTitleUpdateEmail': `Изменение эл. почты`, + 'pageTitleUpdatePassword': `Изменение пароля`, + 'pageTitleUpdateProfile': `Обновление данных учётной записи`, + 'pageTitleWebauthnAuthenticate': `Вход с ключом доступа`, + 'pageTitleWebauthnError': `Ошибка ключа доступа`, + 'pageTitleWebauthnRegister': `Регистрация ключа доступа`, + 'pageTitleX509Info': `Сертификат X.509`, + 'passkeysConditionalAuthenticateMessage': `Вход с помощью ключа доступа…`, + 'password': `Пароль`, + 'passwordConfirm': `Подтверждение пароля`, + 'passwordNew': `Новый пароль`, + 'passwordSectionTitle': `Изменение пароля`, + 'personalInfoTitle': `Личные данные`, + 'privacy': `Конфиденциальность`, + 'privacyPolicy': `политику конфиденциальности`, + 'privacyRequired': `Чтобы продолжить, необходимо принять политику конфиденциальности.`, + 'profilePicture': `Фото профиля`, + 'profilePictureComingSoon': `Загрузка фото профиля — скоро.`, + 'profilePictureHelp': `JPEG, PNG или WebP, не более 5 МБ. Изображение масштабируется и надёжно хранится.`, + 'profilePictureTooLarge': `Размер выбранного файла превышает 5 МБ.`, + 'profilePictureUploadFailed': `Не удалось загрузить. Пожалуйста, попробуйте ещё раз.`, + 'profilePictureUploading': `Загрузка…`, + 'profilePictureWrongType': `Поддерживаются только изображения JPEG, PNG и WebP.`, + 'realmBannerAdmin': `Портал администратора`, + 'realmBannerOther': `Внутренняя область`, + 'realmBannerSubtitleAdmin': `Административный доступ — все действия протоколируются.`, + 'realmBannerSubtitleOther': `Это не стандартный вход для клиентов.`, + 'realmBannerSubtitleTeam': `Вы входите в привилегированную командную область.`, + 'realmBannerTeam': `Рабочая область команды`, + 'recoveryAuthnCodeConfigMessage': `Настройте коды восстановления`, + 'recoveryCode': `Код восстановления`, + 'register': `Зарегистрироваться`, + 'rememberMe': `Запомнить меня`, + 'removeProfilePicture': `Удалить фото`, + 'resetOtpMessage': `Ваш одноразовый пароль (OTP) сброшен. Пожалуйста, настройте новый.`, + 'samlPostFormMessage': `Перенаправление к поставщику удостоверений…`, + 'securitySectionTitle': `Безопасность`, + 'selectAuthenticatorTitle': `Выберите способ аутентификации`, + 'selectOrganizationTitle': `Выберите организацию`, + 'sessionExpired': `Время, отведённое на подключение, истекло. +Вход будет начат заново.`, + 'successAccountUpdated': `Ваша учётная запись обновлена`, + 'successEmailSent': `В ближайшее время Вы получите письмо с дальнейшими инструкциями.`, + 'successMobileAuthenticatorConfigured': `Мобильный аутентификатор настроен`, + 'successPasswordChanged': `Пароль успешно изменён`, + 'successPasswordUpdated': `Ваш пароль обновлён.`, + 'termsText': `Текст условий использования`, + 'updatePassword': `Изменить пароль`, + 'uploadProfilePicture': `Загрузить фото`, + 'userCode': `Код пользователя`, + 'username': `Имя пользователя`, + 'usernameOrEmail': `Имя пользователя или эл. почта`, + 'webauthnAuthenticateMessage': `Выполните вход с помощью ключа безопасности`, + 'webauthnErrorMessage': `При аутентификации WebAuthn произошла ошибка`, + 'webauthnRegisterMessage': `Зарегистрируйте свой ключ безопасности`, + 'x509InfoMessage': `Пожалуйста, укажите сведения о Вашем сертификате X.509`, + 'x509InfoTitle': `Сведения о сертификате X.509` + }, + 'tr-TR': { + 'acceptPrivacy': `Okudum ve kabul ediyorum:`, + 'acceptTerms': `Kullanım koşullarını kabul ediyorum`, + 'accountSectionProfile': `Profil`, + 'accountStatusActive': `Aktif`, + 'backToAccount': `Hesaba dön`, + 'backToApplication': `Uygulamaya dön`, + 'backToLogin': `Girişe dön`, + 'captchaFailed': `CAPTCHA doğrulaması başarısız oldu. Lütfen tekrar deneyin.`, + 'captchaLoading': `CAPTCHA yükleniyor…`, + 'dangerZoneTitle': `Tehlikeli bölge`, + 'deleteAccountConfirm': `Hesabınızı silmek istediğinizden emin misiniz?`, + 'deleteCredentialConfirm': `Bu kimlik bilgisini silmek istediğinizden emin misiniz?`, + 'doAccept': `Kabul et`, + 'doCancel': `İptal`, + 'doClickHere': `Buraya tıklayın`, + 'doContinue': `Devam et`, + 'doDecline': `Reddet`, + 'doDelete': `Sil`, + 'doDeleteAccount': `Hesabı sil`, + 'doForgotPassword': `Şifrenizi mi unuttunuz?`, + 'doLink': `Bağla`, + 'doLogIn': `Giriş yap`, + 'doLogout': `Çıkış yap`, + 'doOverride': `Değiştir`, + 'doRegister': `Kaydol`, + 'doRestart': `Yeniden başlat`, + 'doSave': `Kaydet`, + 'doSubmit': `Gönder`, + 'doUpdate': `Güncelle`, + 'email': `E-posta`, + 'emailVerificationBody': `Lütfen doğrulama bağlantısı için e-postanızı kontrol edin.`, + 'emailVerificationBody1': `Lütfen doğrulama bağlantısı için e-postanızı kontrol edin.`, + 'errorAccountDisabled': `Hesap devre dışı, yöneticinize başvurun.`, + 'errorAccountTemporarilyDisabled': `Hesap geçici olarak devre dışı. Yöneticinize başvurun veya daha sonra tekrar deneyin.`, + 'errorConfigureTotp': `Hesabınızı etkinleştirmek için mobil kimlik doğrulayıcıyı kurmanız gerekir.`, + 'errorEmailExists': `Bu e-posta adresi zaten kullanılıyor.`, + 'errorEmailSendError': `E-posta gönderilemedi, lütfen daha sonra tekrar deneyin.`, + 'errorExpiredAction': `İşlemin süresi doldu. Lütfen şimdi girişe devam edin.`, + 'errorExpiredCode': `Giriş zaman aşımına uğradı. Lütfen tekrar giriş yapın.`, + 'errorIncorrectCurrentPassword': `Mevcut şifre yanlış`, + 'errorInvalidCode': `Geçersiz kod`, + 'errorInvalidEmail': `Geçersiz e-posta`, + 'errorInvalidExistingPassword': `Geçersiz mevcut şifre`, + 'errorInvalidPassword': `Geçersiz şifre`, + 'errorInvalidRecoveryCode': `Geçersiz kurtarma kodu`, + 'errorInvalidTotp': `Geçersiz kimlik doğrulayıcı kodu.`, + 'errorInvalidUserCode': `Geçersiz kullanıcı kodu`, + 'errorInvalidUsername': `Geçersiz kullanıcı adı`, + 'errorInvalidUsernameOrPassword': `Geçersiz kullanıcı adı veya şifre`, + 'errorMissingTotp': `Lütfen kimlik doğrulayıcı kodunu girin.`, + 'errorPasswordMismatch': `Şifreler eşleşmiyor`, + 'errorPleaseSpecifyPassword': `Lütfen şifre girin`, + 'errorUsernameExists': `Bu kullanıcı adı zaten mevcut.`, + 'firstName': `Ad`, + 'forgotPassword': `Şifrenizi mi unuttunuz?`, + 'frontchannelLogoutMessage': `Çıkış yapılıyor…`, + 'helpwaveId': `helpwave id`, + 'identity-provider-redirector': `Veya şununla giriş yapın`, + 'idpLinkConfirmMessage': `Bu kimlik sağlayıcıyı hesabınıza bağlamak istiyor musunuz?`, + 'idpLinkConfirmOverrideMessage': `Bu kimlik sağlayıcı zaten başka bir hesaba bağlı. Bağlantıyı değiştirmek istiyor musunuz?`, + 'imprint': `Künye`, + 'lastName': `Soyad`, + 'linkIdpMessage': `Kimlik sağlayıcı bağlanıyor…`, + 'loginOtp': `Doğrulama kodu`, + 'loginTotpOneTime': `Tek kullanımlık kod`, + 'loginTotpScanBarcode': `Bu QR kodunu kimlik doğrulama uygulamanızla tarayın`, + 'logoutConfirmHeader': `Çıkış yapmak istediğinizden emin misiniz?`, + 'messageHeaderEmailUpdateConfirmation': `Onay e-postası gönderildi`, + 'messageHeaderEmailUpdated': `E-posta güncellendi`, + 'messageHeaderEmailVerification': `E-posta doğrulama`, + 'messageHeaderErrorCode': `Hata kodu`, + 'messageHeaderExecuteActions': `Gerekli işlemler`, + 'messageHeaderForgotPassword': `Şifrenizi mi unuttunuz?`, + 'messageHeaderSuccessCode': `Başarı kodu`, + 'messageHeaderUpdatePassword': `Şifreyi güncelle`, + 'noAccount': `Hesabınız yok mu?`, + 'nOrganization': ({ count }): string => { + return TranslationGen.resolvePlural(count, { + '=1': `${count} kuruluş`, + 'other': `${count} kuruluş`, + }) + }, + 'oauth2DeviceVerifyUserCodeMessage': `Cihazınızda görüntülenen kullanıcı kodunu girin`, + 'oauthGrantMessage': `Uygulama hesabınıza erişim istiyor`, + 'oauthGrantScopes': `İstenen izinler`, + 'oauthGrantTitle': `Erişim izni ver`, + 'otp': `Tek kullanımlık şifre`, + 'pageExpiredMessage': `Bu sayfanın süresi doldu. Lütfen giriş işlemini yeniden başlatın.`, + 'pageTitleAccount': `Hesap`, + 'pageTitleAccountPassword': `Şifre`, + 'pageTitleCode': `Doğrulama kodu`, + 'pageTitleConfigTotp': `Mobil kimlik doğrulayıcı kurulumu`, + 'pageTitleDeleteAccountConfirm': `Hesabı sil`, + 'pageTitleDeleteCredential': `Kimlik bilgisini sil`, + 'pageTitleEmailVerification': `E-posta doğrulama`, + 'pageTitleError': `Hata`, + 'pageTitleForgotPassword': `Şifremi unuttum`, + 'pageTitleFrontchannelLogout': `Çıkış yapılıyor`, + 'pageTitleIdpLinkConfirm': `Hesabı bağla`, + 'pageTitleIdpLinkConfirmOverride': `Bağlantıyı değiştir`, + 'pageTitleIdpLinkEmail': `Hesabı bağla`, + 'pageTitleIdpReviewProfile': `Hesap bilgilerini güncelle`, + 'pageTitleInfo': `Bilgi`, + 'pageTitleLinkIdp': `Kimlik sağlayıcı bağla`, + 'pageTitleLogin': `Giriş yap`, + 'pageTitleLoginOtp': `Doğrulama kodu`, + 'pageTitleLoginPassword': `Giriş yap`, + 'pageTitleLoginUsername': `Giriş yap`, + 'pageTitleLogoutConfirm': `Çıkış yap`, + 'pageTitleOauth2DeviceVerifyUserCode': `Cihaz girişi`, + 'pageTitleOauthGrant': `Erişim izni ver`, + 'pageTitlePageDisabled': `Sayfa devre dışı`, + 'pageTitlePageExpired': `Sayfanın süresi doldu`, + 'pageTitlePasskeysConditionalAuthenticate': `Geçiş anahtarıyla giriş`, + 'pageTitleRecoveryCodeConfig': `Kurtarma kodları`, + 'pageTitleRecoveryCodeInput': `Kurtarma kodu`, + 'pageTitleRegister': `Kaydol`, + 'pageTitleResetOtp': `Kimlik doğrulayıcıyı sıfırla`, + 'pageTitleSamlPostForm': `Yönlendiriliyor`, + 'pageTitleSelectAuthenticator': `Kimlik doğrulayıcı seçin`, + 'pageTitleSelectOrganization': `Kuruluş seçin`, + 'pageTitleTerms': `Kullanım koşulları`, + 'pageTitleUpdateEmail': `E-postayı güncelle`, + 'pageTitleUpdatePassword': `Şifreyi güncelle`, + 'pageTitleUpdateProfile': `Hesap bilgilerini güncelle`, + 'pageTitleWebauthnAuthenticate': `Geçiş anahtarıyla giriş`, + 'pageTitleWebauthnError': `Geçiş anahtarı hatası`, + 'pageTitleWebauthnRegister': `Geçiş anahtarı kaydı`, + 'pageTitleX509Info': `X.509 sertifikası`, + 'passkeysConditionalAuthenticateMessage': `Geçiş anahtarıyla kimlik doğrulanıyor…`, + 'password': `Şifre`, + 'passwordConfirm': `Şifre onayı`, + 'passwordNew': `Yeni şifre`, + 'passwordSectionTitle': `Şifreyi güncelle`, + 'personalInfoTitle': `Kişisel bilgiler`, + 'privacy': `Gizlilik`, + 'privacyPolicy': `gizlilik politikası`, + 'privacyRequired': `Devam etmek için gizlilik politikasını kabul etmeniz gerekir.`, + 'profilePicture': `Profil fotoğrafı`, + 'profilePictureComingSoon': `Profil fotoğrafı yükleme — yakında.`, + 'profilePictureHelp': `JPEG, PNG veya WebP, en fazla 5 MB. Görsel ölçeklendirilir ve güvenli şekilde saklanır.`, + 'profilePictureUploadFailed': `Yükleme başarısız oldu. Lütfen tekrar deneyin.`, + 'profilePictureUploading': `Yükleniyor…`, + 'profilePictureWrongType': `Yalnızca JPEG, PNG veya WebP görselleri desteklenir.`, + 'realmBannerAdmin': `Yönetici portalı`, + 'realmBannerOther': `Dahili alan`, + 'realmBannerSubtitleAdmin': `Yönetici erişimi — her işlem denetim kaydına alınır.`, + 'realmBannerSubtitleOther': `Bu, normal müşteri girişi değildir.`, + 'realmBannerSubtitleTeam': `Ayrıcalıklı bir ekip alanında oturum açıyorsunuz.`, + 'realmBannerTeam': `Ekip çalışma alanı`, + 'recoveryAuthnCodeConfigMessage': `Kurtarma kodlarınızı yapılandırın`, + 'recoveryCode': `Kurtarma kodu`, + 'register': `Kaydolun`, + 'rememberMe': `Beni hatırla`, + 'removeProfilePicture': `Fotoğrafı kaldır`, + 'resetOtpMessage': `Tek kullanımlık şifreniz (OTP) sıfırlandı. Lütfen yenisini yapılandırın.`, + 'samlPostFormMessage': `Kimlik sağlayıcıya yönlendiriliyor…`, + 'securitySectionTitle': `Güvenlik`, + 'selectAuthenticatorTitle': `Kimlik doğrulayıcı seçin`, + 'selectOrganizationTitle': `Kuruluş seçin`, + 'sessionExpired': `Bağlantı için ayrılan süre doldu. +Giriş işlemi baştan başlatılacak.`, + 'successAccountUpdated': `Hesabınız güncellendi`, + 'successEmailSent': `Kısa süre içinde ek talimatlar içeren bir e-posta alacaksınız.`, + 'successMobileAuthenticatorConfigured': `Mobil kimlik doğrulayıcı yapılandırıldı`, + 'successPasswordChanged': `Şifre başarıyla değiştirildi`, + 'successPasswordUpdated': `Şifreniz güncellendi.`, + 'termsText': `Kullanım koşulları metni`, + 'updatePassword': `Şifreyi güncelle`, + 'uploadProfilePicture': `Fotoğraf yükle`, + 'userCode': `Kullanıcı kodu`, + 'username': `Kullanıcı adı`, + 'usernameOrEmail': `Kullanıcı adı veya e-posta`, + 'webauthnAuthenticateMessage': `Güvenlik anahtarınızla kimliğinizi doğrulayın`, + 'webauthnErrorMessage': `WebAuthn kimlik doğrulaması sırasında bir hata oluştu`, + 'webauthnRegisterMessage': `Güvenlik anahtarınızı kaydedin`, + 'x509InfoMessage': `Lütfen X.509 sertifika bilgilerinizi girin`, + 'x509InfoTitle': `X.509 sertifika bilgileri` } } diff --git a/src/i18n/useTranslation.ts b/src/i18n/useTranslation.ts index 508e777..5d3e65f 100644 --- a/src/i18n/useTranslation.ts +++ b/src/i18n/useTranslation.ts @@ -1,4 +1,4 @@ -import { helpwaveIdTranslation } from './translations' -import { useHightideTranslation } from '@helpwave/hightide' +import type { HelpwaveIdTranslationEntries, HelpwaveIdTranslationLocales } from './translations' +import { useTranslation as useHightideContextTranslation } from '@helpwave/hightide' -export const useTranslation = () => useHightideTranslation(helpwaveIdTranslation) +export const useTranslation = () => useHightideContextTranslation() diff --git a/src/login/pages/LoginOtp.tsx b/src/login/pages/LoginOtp.tsx index a8a6adc..11f4467 100644 --- a/src/login/pages/LoginOtp.tsx +++ b/src/login/pages/LoginOtp.tsx @@ -1,6 +1,6 @@ import { useState } from 'react' import { LogIn } from 'lucide-react' -import { Button, Input, FormFieldLayout, Select, SelectOption } from '@helpwave/hightide' +import { Button, Input, FormFieldLayout, Select } from '@helpwave/hightide' import type { KcContext } from '../KcContext' import { useI18n } from '../i18n' import Template from 'keycloakify/login/Template' @@ -62,10 +62,10 @@ export default function LoginOtp({ kcContext }: LoginOtpProps) { value={selectedCredentialId} onValueChange={(value: string) => setSelectedCredentialId(value)} onEditComplete={() => {}} - buttonProps={{ id, ...ariaAttributes }} + triggerProps={{ id, ...ariaAttributes }} > {credentials.map((c) => ( - + ))} )} diff --git a/src/main.tsx b/src/main.tsx index 1dd5891..c863c92 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -5,6 +5,7 @@ import '@helpwave/hightide/style/globals.css' import './fonts.css' import './index.css' import { HelpwaveLogo, HightideProvider } from '@helpwave/hightide' +import { hightideProviderProps } from './i18n/hightideConfig' // The following block can be uncommented to test a specific page with `yarn dev` // Don't forget to comment back or your bundle size will increase @@ -21,7 +22,7 @@ if (import.meta.env.DEV) { createRoot(document.getElementById('root')!).render( - + {!window.kcContext ? (
From 4104055128d50ccf8320194ec2fa173af74959ba Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 13 Oct 2026 10:13:11 +0000 Subject: [PATCH 2/6] Add Greek, Italian, Dutch, Polish, Russian and Turkish translations Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_018UdLmpCT1rJ39n1d22CkJn --- locales/el-GR.arb | 522 ++++++++++++++++++++++++++++++++++++++++++++++ locales/it-IT.arb | 522 ++++++++++++++++++++++++++++++++++++++++++++++ locales/nl-NL.arb | 522 ++++++++++++++++++++++++++++++++++++++++++++++ locales/pl-PL.arb | 522 ++++++++++++++++++++++++++++++++++++++++++++++ locales/ru-RU.arb | 522 ++++++++++++++++++++++++++++++++++++++++++++++ locales/tr-TR.arb | 522 ++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 3132 insertions(+) create mode 100644 locales/el-GR.arb create mode 100644 locales/it-IT.arb create mode 100644 locales/nl-NL.arb create mode 100644 locales/pl-PL.arb create mode 100644 locales/ru-RU.arb create mode 100644 locales/tr-TR.arb diff --git a/locales/el-GR.arb b/locales/el-GR.arb new file mode 100644 index 0000000..f5de8c1 --- /dev/null +++ b/locales/el-GR.arb @@ -0,0 +1,522 @@ +{ + "@@locale": "el-GR", + "helpwaveId": "helpwave id", + "@helpwaveId": { + "description": "Title for helpwave id badge" + }, + "nOrganization": "{count, plural, =1{# οργανισμός} other{# οργανισμοί}}", + "@nOrganization": { + "placeholders": { + "count": { + "type": "number" + } + } + }, + "imprint": "Στοιχεία εκδότη", + "@imprint": { + "description": "Link text for imprint" + }, + "privacy": "Απόρρητο", + "@privacy": { + "description": "Link text for privacy policy" + }, + "forgotPassword": "Ξεχάσατε τον κωδικό πρόσβασης;", + "@forgotPassword": { + "description": "Link text for forgot password" + }, + "noAccount": "Δεν έχετε λογαριασμό;", + "@noAccount": { + "description": "Text before register link" + }, + "register": "Εγγραφή", + "@register": { + "description": "Register button text" + }, + "backToLogin": "Επιστροφή στη σύνδεση", + "@backToLogin": { + "description": "Back to login link text" + }, + "usernameOrEmail": "Όνομα χρήστη ή email", + "@usernameOrEmail": { + "description": "Label for username or email input field" + }, + "username": "Όνομα χρήστη", + "@username": { + "description": "Label for username input field" + }, + "password": "Κωδικός πρόσβασης", + "@password": { + "description": "Label for password input field" + }, + "rememberMe": "Να με θυμάσαι", + "@rememberMe": { + "description": "Label for remember me checkbox" + }, + "doLogIn": "Σύνδεση", + "@doLogIn": { + "description": "Log in button text" + }, + "doForgotPassword": "Ξεχάσατε τον κωδικό πρόσβασης;", + "@doForgotPassword": { + "description": "Forgot password button text" + }, + "doRegister": "Εγγραφή", + "@doRegister": { + "description": "Register button text" + }, + "identity-provider-redirector": "Ή συνδεθείτε με", + "@identity-provider-redirector": { + "description": "Text before social login providers" + }, + "acceptTerms": "Αποδέχομαι τους όρους και τις προϋποθέσεις", + "@acceptTerms": { + "description": "Text for terms acceptance checkbox" + }, + "acceptPrivacy": "Έχω διαβάσει και αποδέχομαι την", + "@acceptPrivacy": { + "description": "Privacy policy acceptance prefix" + }, + "privacyPolicy": "πολιτική απορρήτου", + "@privacyPolicy": { + "description": "Privacy policy link text" + }, + "privacyRequired": "Πρέπει να αποδεχτείτε την πολιτική απορρήτου για να συνεχίσετε.", + "@privacyRequired": { + "description": "Error when privacy not accepted" + }, + "captchaFailed": "Η επαλήθευση captcha απέτυχε. Δοκιμάστε ξανά.", + "@captchaFailed": { + "description": "Error when captcha verification fails" + }, + "captchaLoading": "Φόρτωση captcha…", + "@captchaLoading": { + "description": "Captcha loading placeholder" + }, + "realmBannerTeam": "Χώρος εργασίας ομάδας", + "@realmBannerTeam": { + "description": "Banner headline shown on every page of the team realm" + }, + "realmBannerAdmin": "Πύλη διαχειριστή", + "@realmBannerAdmin": { + "description": "Banner headline shown on every page of the admin/master realm" + }, + "realmBannerOther": "Εσωτερικό realm", + "@realmBannerOther": { + "description": "Banner headline shown on every page of a non-customer realm" + }, + "realmBannerSubtitleTeam": "Συνδέεστε σε μια προνομιακή περιοχή ομάδας.", + "@realmBannerSubtitleTeam": { + "description": "Subtitle below the team realm banner" + }, + "realmBannerSubtitleAdmin": "Πρόσβαση διαχειριστή — κάθε ενέργεια καταγράφεται.", + "@realmBannerSubtitleAdmin": { + "description": "Subtitle below the admin realm banner" + }, + "realmBannerSubtitleOther": "Αυτή δεν είναι η κανονική σύνδεση πελατών.", + "@realmBannerSubtitleOther": { + "description": "Subtitle below the fallback realm banner" + }, + "passwordNew": "Νέος κωδικός πρόσβασης", + "@passwordNew": { + "description": "Label for new password input field" + }, + "passwordConfirm": "Επιβεβαίωση κωδικού πρόσβασης", + "@passwordConfirm": { + "description": "Label for password confirmation input field" + }, + "doSubmit": "Υποβολή", + "@doSubmit": { + "description": "Submit button text" + }, + "otp": "Κωδικός μίας χρήσης", + "@otp": { + "description": "Label for OTP input field" + }, + "loginOtp": "Κωδικός επαλήθευσης", + "@loginOtp": { + "description": "Label for login OTP/verification code input field" + }, + "termsText": "Κείμενο όρων και προϋποθέσεων", + "@termsText": { + "description": "Default terms and conditions text" + }, + "doAccept": "Αποδοχή", + "@doAccept": { + "description": "Accept button text" + }, + "doDecline": "Απόρριψη", + "@doDecline": { + "description": "Decline button text" + }, + "logoutConfirmHeader": "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε;", + "@logoutConfirmHeader": { + "description": "Logout confirmation message" + }, + "doLogout": "Αποσύνδεση", + "@doLogout": { + "description": "Logout button text" + }, + "doSave": "Αποθήκευση", + "@doSave": { + "description": "Save button text" + }, + "doUpdate": "Ενημέρωση", + "@doUpdate": { + "description": "Update button text for password form" + }, + "updatePassword": "Ενημέρωση κωδικού πρόσβασης", + "@updatePassword": { + "description": "Update password button text" + }, + "accountStatusActive": "Ενεργός", + "@accountStatusActive": { + "description": "Account status label when signed in" + }, + "profilePicture": "Εικόνα προφίλ", + "@profilePicture": { + "description": "Profile picture section heading" + }, + "profilePictureComingSoon": "Μεταφόρτωση εικόνας προφίλ – σύντομα διαθέσιμη.", + "@profilePictureComingSoon": { + "description": "Placeholder for profile picture upload" + }, + "uploadProfilePicture": "Μεταφόρτωση εικόνας", + "@uploadProfilePicture": { + "description": "Button to upload profile picture" + }, + "removeProfilePicture": "Αφαίρεση εικόνας", + "@removeProfilePicture": { + "description": "Button to remove profile picture" + }, + "profilePictureUploading": "Μεταφόρτωση…", + "@profilePictureUploading": { + "description": "Status while profile picture is being uploaded" + }, + "profilePictureUploadFailed": "Η μεταφόρτωση απέτυχε. Δοκιμάστε ξανά.", + "@profilePictureUploadFailed": { + "description": "Error when profile picture upload fails" + }, + "profilePictureTooLarge": "Το επιλεγμένο αρχείο είναι μεγαλύτερο από 5 MB.", + "@profilePictureTooLarge": { + "description": "Error when picture exceeds size limit" + }, + "profilePictureWrongType": "Υποστηρίζονται μόνο εικόνες JPEG, PNG ή WebP.", + "@profilePictureWrongType": { + "description": "Error when picture has unsupported type" + }, + "profilePictureHelp": "JPEG, PNG ή WebP, έως 5 MB. Η εικόνα προσαρμόζεται σε μέγεθος και αποθηκεύεται με ασφάλεια.", + "@profilePictureHelp": { + "description": "Helper text below upload button" + }, + "accountSectionProfile": "Προφίλ", + "@accountSectionProfile": { + "description": "Account profile section title" + }, + "personalInfoTitle": "Προσωπικά στοιχεία", + "@personalInfoTitle": { + "description": "Personal info section title" + }, + "passwordSectionTitle": "Ενημέρωση κωδικού πρόσβασης", + "@passwordSectionTitle": { + "description": "Password section title" + }, + "securitySectionTitle": "Ασφάλεια", + "@securitySectionTitle": { + "description": "Security section title" + }, + "dangerZoneTitle": "Ζώνη κινδύνου", + "@dangerZoneTitle": { + "description": "Danger zone section title" + }, + "doCancel": "Ακύρωση", + "@doCancel": { + "description": "Cancel button text" + }, + "backToApplication": "Επιστροφή στην εφαρμογή", + "@backToApplication": { + "description": "Back to application button text" + }, + "backToAccount": "Επιστροφή στον λογαριασμό", + "@backToAccount": { + "description": "Back to account button text in account console" + }, + "doContinue": "Συνέχεια", + "@doContinue": { + "description": "Continue button text" + }, + "emailVerificationBody1": "Ελέγξτε το email σας για έναν σύνδεσμο επαλήθευσης.", + "@emailVerificationBody1": { + "description": "Email verification instruction text" + }, + "emailVerificationBody": "Ελέγξτε το email σας για έναν σύνδεσμο επαλήθευσης.", + "@emailVerificationBody": { + "description": "Email verification instruction text (alternative key)" + }, + "doClickHere": "Κάντε κλικ εδώ", + "@doClickHere": { + "description": "Click here button/link text" + }, + "doRestart": "Επανεκκίνηση", + "@doRestart": { + "description": "Restart button text" + }, + "sessionExpired": "Ο χρόνος που διατέθηκε για τη σύνδεση έχει λήξει.\nΗ διαδικασία σύνδεσης θα ξεκινήσει από την αρχή.", + "@sessionExpired": { + "description": "Session/timeout expired message" + }, + "deleteAccountConfirm": "Είστε βέβαιοι ότι θέλετε να διαγράψετε τον λογαριασμό σας;", + "@deleteAccountConfirm": { + "description": "Delete account confirmation message" + }, + "doDeleteAccount": "Διαγραφή λογαριασμού", + "@doDeleteAccount": { + "description": "Delete account button text" + }, + "deleteCredentialConfirm": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το διαπιστευτήριο;", + "@deleteCredentialConfirm": { + "description": "Delete credential confirmation message" + }, + "doDelete": "Διαγραφή", + "@doDelete": { + "description": "Delete button text" + }, + "frontchannelLogoutMessage": "Αποσύνδεση...", + "@frontchannelLogoutMessage": { + "description": "Frontchannel logout message" + }, + "linkIdpMessage": "Σύνδεση παρόχου ταυτότητας...", + "@linkIdpMessage": { + "description": "Link identity provider message" + }, + "idpLinkConfirmMessage": "Θέλετε να συνδέσετε αυτόν τον πάροχο ταυτότητας με τον λογαριασμό σας;", + "@idpLinkConfirmMessage": { + "description": "IDP link confirmation message" + }, + "doLink": "Συσχέτιση", + "@doLink": { + "description": "Link button text" + }, + "idpLinkConfirmOverrideMessage": "Αυτός ο πάροχος ταυτότητας είναι ήδη συνδεδεμένος με άλλον λογαριασμό. Θέλετε να τον αντικαταστήσετε;", + "@idpLinkConfirmOverrideMessage": { + "description": "IDP link override confirmation message" + }, + "doOverride": "Αντικατάσταση", + "@doOverride": { + "description": "Override button text" + }, + "email": "Email", + "@email": { + "description": "Label for email input field" + }, + "firstName": "Όνομα", + "@firstName": { + "description": "Label for first name input field" + }, + "lastName": "Επώνυμο", + "@lastName": { + "description": "Label for last name input field" + }, + "oauthGrantTitle": "Παραχώρηση πρόσβασης", + "@oauthGrantTitle": { + "description": "OAuth grant title" + }, + "oauthGrantMessage": "Η εφαρμογή ζητά πρόσβαση στον λογαριασμό σας", + "@oauthGrantMessage": { + "description": "OAuth grant message" + }, + "oauthGrantScopes": "Ζητούμενα δικαιώματα", + "@oauthGrantScopes": { + "description": "OAuth grant scopes label" + }, + "pageExpiredMessage": "Αυτή η σελίδα έχει λήξει. Ξεκινήστε ξανά τη διαδικασία σύνδεσης.", + "@pageExpiredMessage": { + "description": "Page expired message" + }, + "passkeysConditionalAuthenticateMessage": "Έλεγχος ταυτότητας με passkey...", + "@passkeysConditionalAuthenticateMessage": { + "description": "Passkeys conditional authenticate message" + }, + "recoveryAuthnCodeConfigMessage": "Ρυθμίστε τον κωδικό ανάκτησης για τον έλεγχο ταυτότητας", + "@recoveryAuthnCodeConfigMessage": { + "description": "Recovery authentication code config message" + }, + "recoveryCode": "Κωδικός ανάκτησης", + "@recoveryCode": { + "description": "Label for recovery code input field" + }, + "resetOtpMessage": "Ο κωδικός OTP σας επαναφέρθηκε. Ρυθμίστε έναν νέο.", + "@resetOtpMessage": { + "description": "Reset OTP message" + }, + "loginTotpScanBarcode": "Σαρώστε αυτόν τον κωδικό QR με την εφαρμογή ελέγχου ταυτότητας", + "@loginTotpScanBarcode": { + "description": "TOTP scan barcode instruction" + }, + "loginTotpOneTime": "Κωδικός μίας χρήσης", + "@loginTotpOneTime": { + "description": "Label for TOTP one-time code input field" + }, + "samlPostFormMessage": "Ανακατεύθυνση στον πάροχο ταυτότητας...", + "@samlPostFormMessage": { + "description": "SAML post form message" + }, + "selectAuthenticatorTitle": "Επιλογή μεθόδου ελέγχου ταυτότητας", + "@selectAuthenticatorTitle": { + "description": "Select authenticator title" + }, + "selectOrganizationTitle": "Επιλογή οργανισμού", + "@selectOrganizationTitle": { + "description": "Select organization title" + }, + "x509InfoTitle": "Πληροφορίες πιστοποιητικού X.509", + "@x509InfoTitle": { + "description": "X.509 info title" + }, + "x509InfoMessage": "Δώστε τις πληροφορίες του πιστοποιητικού X.509 σας", + "@x509InfoMessage": { + "description": "X.509 info message" + }, + "webauthnAuthenticateMessage": "Έλεγχος ταυτότητας με το κλειδί ασφαλείας σας", + "@webauthnAuthenticateMessage": { + "description": "WebAuthn authenticate message" + }, + "webauthnErrorMessage": "Παρουσιάστηκε σφάλμα κατά τον έλεγχο ταυτότητας WebAuthn", + "@webauthnErrorMessage": { + "description": "WebAuthn error message" + }, + "webauthnRegisterMessage": "Καταχωρίστε το κλειδί ασφαλείας σας", + "@webauthnRegisterMessage": { + "description": "WebAuthn register message" + }, + "oauth2DeviceVerifyUserCodeMessage": "Εισαγάγετε τον κωδικό χρήστη που εμφανίζεται στη συσκευή σας", + "@oauth2DeviceVerifyUserCodeMessage": { + "description": "OAuth2 device verify user code message" + }, + "userCode": "Κωδικός χρήστη", + "@userCode": { + "description": "Label for user code input field" + }, + "errorInvalidUsernameOrPassword": "Μη έγκυρο όνομα χρήστη ή κωδικός πρόσβασης", + "@errorInvalidUsernameOrPassword": { + "description": "Login form field error" + }, + "errorInvalidUsername": "Μη έγκυρο όνομα χρήστη", + "@errorInvalidUsername": { + "description": "Username field error" + }, + "errorInvalidPassword": "Μη έγκυρος κωδικός πρόσβασης", + "@errorInvalidPassword": { + "description": "Password field error" + }, + "errorInvalidEmail": "Μη έγκυρο email", + "@errorInvalidEmail": { + "description": "Email field error" + }, + "errorInvalidCode": "Μη έγκυρος κωδικός", + "@errorInvalidCode": { + "description": "Verification code field error" + }, + "errorInvalidRecoveryCode": "Μη έγκυρος κωδικός ανάκτησης", + "@errorInvalidRecoveryCode": { + "description": "Recovery code field error" + }, + "errorInvalidUserCode": "Μη έγκυρος κωδικός χρήστη", + "@errorInvalidUserCode": { + "description": "User code field error" + }, + "errorPasswordMismatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν", + "@errorPasswordMismatch": { + "description": "Password confirmation field error" + }, + "errorAccountTemporarilyDisabled": "Ο λογαριασμός είναι προσωρινά απενεργοποιημένος. Επικοινωνήστε με τον διαχειριστή σας ή δοκιμάστε ξανά αργότερα.", + "@errorAccountTemporarilyDisabled": { + "description": "Account disabled error" + }, + "errorIncorrectCurrentPassword": "Λανθασμένος τρέχων κωδικός πρόσβασης", + "@errorIncorrectCurrentPassword": { + "description": "Current password field error on account" + }, + "errorInvalidExistingPassword": "Μη έγκυρος υπάρχων κωδικός πρόσβασης", + "@errorInvalidExistingPassword": { + "description": "Existing password invalid on account" + }, + "errorPleaseSpecifyPassword": "Εισαγάγετε κωδικό πρόσβασης", + "@errorPleaseSpecifyPassword": { + "description": "Password required validation message" + }, + "successPasswordChanged": "Ο κωδικός πρόσβασης άλλαξε με επιτυχία", + "@successPasswordChanged": { + "description": "Password change success message" + }, + "successMobileAuthenticatorConfigured": "Η εφαρμογή ελέγχου ταυτότητας ρυθμίστηκε", + "@successMobileAuthenticatorConfigured": { + "description": "TOTP/authenticator success message" + }, + "successAccountUpdated": "Ο λογαριασμός σας ενημερώθηκε", + "@successAccountUpdated": { + "description": "Account update success message" + }, + "errorAccountDisabled": "Ο λογαριασμός είναι απενεργοποιημένος. Επικοινωνήστε με τον διαχειριστή σας.", + "errorUsernameExists": "Το όνομα χρήστη υπάρχει ήδη.", + "errorEmailExists": "Το email υπάρχει ήδη.", + "errorExpiredCode": "Η σύνδεση έληξε. Συνδεθείτε ξανά.", + "errorExpiredAction": "Η ενέργεια έληξε. Συνεχίστε τώρα με τη σύνδεση.", + "errorInvalidTotp": "Μη έγκυρος κωδικός ελέγχου ταυτότητας.", + "errorMissingTotp": "Εισαγάγετε τον κωδικό ελέγχου ταυτότητας.", + "errorConfigureTotp": "Πρέπει να ρυθμίσετε μια εφαρμογή ελέγχου ταυτότητας για να ενεργοποιήσετε τον λογαριασμό σας.", + "errorEmailSendError": "Η αποστολή του email απέτυχε. Δοκιμάστε ξανά αργότερα.", + "successPasswordUpdated": "Ο κωδικός πρόσβασής σας ενημερώθηκε.", + "successEmailSent": "Σύντομα θα λάβετε ένα email με περαιτέρω οδηγίες.", + "pageTitleLogin": "Σύνδεση", + "pageTitleRegister": "Εγγραφή", + "pageTitleForgotPassword": "Ξεχάσατε τον κωδικό πρόσβασης", + "pageTitleInfo": "Πληροφορίες", + "pageTitleError": "Σφάλμα", + "pageTitlePageDisabled": "Η σελίδα είναι απενεργοποιημένη", + "@pageTitlePageDisabled": { + "description": "Title for disabled/error page" + }, + "pageTitleCode": "Κωδικός επαλήθευσης", + "pageTitleLogoutConfirm": "Αποσύνδεση", + "pageTitleTerms": "Όροι και προϋποθέσεις", + "pageTitleLoginOtp": "Κωδικός επαλήθευσης", + "pageTitleUpdatePassword": "Ενημέρωση κωδικού πρόσβασης", + "pageTitleEmailVerification": "Επαλήθευση email", + "pageTitleDeleteAccountConfirm": "Διαγραφή λογαριασμού", + "pageTitleDeleteCredential": "Διαγραφή διαπιστευτηρίου", + "pageTitleFrontchannelLogout": "Αποσύνδεση", + "pageTitleIdpReviewProfile": "Ενημέρωση στοιχείων λογαριασμού", + "pageTitleLinkIdp": "Σύνδεση παρόχου ταυτότητας", + "pageTitleConfigTotp": "Ρύθμιση εφαρμογής ελέγχου ταυτότητας", + "pageTitleIdpLinkConfirm": "Συσχέτιση λογαριασμού", + "pageTitleIdpLinkConfirmOverride": "Αντικατάσταση σύνδεσης", + "pageTitleIdpLinkEmail": "Σύνδεση λογαριασμού", + "pageTitleOauth2DeviceVerifyUserCode": "Σύνδεση συσκευής", + "pageTitleOauthGrant": "Παραχώρηση πρόσβασης", + "pageTitlePageExpired": "Η σελίδα έληξε", + "pageTitlePasskeysConditionalAuthenticate": "Σύνδεση με passkey", + "pageTitleLoginPassword": "Σύνδεση", + "pageTitleRecoveryCodeConfig": "Κωδικοί ανάκτησης", + "pageTitleRecoveryCodeInput": "Κωδικός ανάκτησης", + "pageTitleResetOtp": "Επαναφορά εφαρμογής ελέγχου ταυτότητας", + "pageTitleUpdateProfile": "Ενημέρωση στοιχείων λογαριασμού", + "pageTitleLoginUsername": "Σύνδεση", + "pageTitleX509Info": "Πιστοποιητικό X.509", + "pageTitleSamlPostForm": "Ανακατεύθυνση", + "pageTitleSelectAuthenticator": "Επιλογή μεθόδου ελέγχου ταυτότητας", + "pageTitleSelectOrganization": "Επιλογή οργανισμού", + "pageTitleUpdateEmail": "Ενημέρωση email", + "pageTitleWebauthnAuthenticate": "Σύνδεση με passkey", + "pageTitleWebauthnError": "Σφάλμα passkey", + "pageTitleWebauthnRegister": "Καταχώριση passkey", + "pageTitleAccount": "Λογαριασμός", + "pageTitleAccountPassword": "Κωδικός πρόσβασης", + "messageHeaderEmailVerification": "Επαλήθευση email", + "messageHeaderForgotPassword": "Ξεχάσατε τον κωδικό πρόσβασής σας;", + "messageHeaderEmailUpdateConfirmation": "Το email επιβεβαίωσης στάλθηκε", + "messageHeaderEmailUpdated": "Το email ενημερώθηκε", + "messageHeaderUpdatePassword": "Ενημέρωση κωδικού πρόσβασης", + "messageHeaderSuccessCode": "Κωδικός επιτυχίας", + "messageHeaderErrorCode": "Κωδικός σφάλματος", + "messageHeaderExecuteActions": "Απαιτούμενες ενέργειες" +} diff --git a/locales/it-IT.arb b/locales/it-IT.arb new file mode 100644 index 0000000..85e1cef --- /dev/null +++ b/locales/it-IT.arb @@ -0,0 +1,522 @@ +{ + "@@locale": "it-IT", + "helpwaveId": "helpwave id", + "@helpwaveId": { + "description": "Title for helpwave id badge" + }, + "nOrganization": "{count, plural, =1{# organizzazione} other{# organizzazioni}}", + "@nOrganization": { + "placeholders": { + "count": { + "type": "number" + } + } + }, + "imprint": "Note legali", + "@imprint": { + "description": "Link text for imprint" + }, + "privacy": "Privacy", + "@privacy": { + "description": "Link text for privacy policy" + }, + "forgotPassword": "Password dimenticata?", + "@forgotPassword": { + "description": "Link text for forgot password" + }, + "noAccount": "Non ha un account?", + "@noAccount": { + "description": "Text before register link" + }, + "register": "Registrati", + "@register": { + "description": "Register button text" + }, + "backToLogin": "Torna all'accesso", + "@backToLogin": { + "description": "Back to login link text" + }, + "usernameOrEmail": "Nome utente o e-mail", + "@usernameOrEmail": { + "description": "Label for username or email input field" + }, + "username": "Nome utente", + "@username": { + "description": "Label for username input field" + }, + "password": "Password", + "@password": { + "description": "Label for password input field" + }, + "rememberMe": "Ricordami", + "@rememberMe": { + "description": "Label for remember me checkbox" + }, + "doLogIn": "Accedi", + "@doLogIn": { + "description": "Log in button text" + }, + "doForgotPassword": "Password dimenticata?", + "@doForgotPassword": { + "description": "Forgot password button text" + }, + "doRegister": "Registrati", + "@doRegister": { + "description": "Register button text" + }, + "identity-provider-redirector": "Oppure accedi con", + "@identity-provider-redirector": { + "description": "Text before social login providers" + }, + "acceptTerms": "Accetto i termini e le condizioni", + "@acceptTerms": { + "description": "Text for terms acceptance checkbox" + }, + "acceptPrivacy": "Ho letto e accetto la", + "@acceptPrivacy": { + "description": "Privacy policy acceptance prefix" + }, + "privacyPolicy": "informativa sulla privacy", + "@privacyPolicy": { + "description": "Privacy policy link text" + }, + "privacyRequired": "Per continuare deve accettare l'informativa sulla privacy.", + "@privacyRequired": { + "description": "Error when privacy not accepted" + }, + "captchaFailed": "Verifica captcha non riuscita. Riprovi.", + "@captchaFailed": { + "description": "Error when captcha verification fails" + }, + "captchaLoading": "Caricamento captcha…", + "@captchaLoading": { + "description": "Captcha loading placeholder" + }, + "realmBannerTeam": "Area di lavoro del team", + "@realmBannerTeam": { + "description": "Banner headline shown on every page of the team realm" + }, + "realmBannerAdmin": "Portale amministratore", + "@realmBannerAdmin": { + "description": "Banner headline shown on every page of the admin/master realm" + }, + "realmBannerOther": "Realm interno", + "@realmBannerOther": { + "description": "Banner headline shown on every page of a non-customer realm" + }, + "realmBannerSubtitleTeam": "Sta accedendo a un'area del team con privilegi elevati.", + "@realmBannerSubtitleTeam": { + "description": "Subtitle below the team realm banner" + }, + "realmBannerSubtitleAdmin": "Accesso amministrativo — ogni azione viene registrata.", + "@realmBannerSubtitleAdmin": { + "description": "Subtitle below the admin realm banner" + }, + "realmBannerSubtitleOther": "Questo non è l'accesso standard per i clienti.", + "@realmBannerSubtitleOther": { + "description": "Subtitle below the fallback realm banner" + }, + "passwordNew": "Nuova password", + "@passwordNew": { + "description": "Label for new password input field" + }, + "passwordConfirm": "Conferma password", + "@passwordConfirm": { + "description": "Label for password confirmation input field" + }, + "doSubmit": "Invia", + "@doSubmit": { + "description": "Submit button text" + }, + "otp": "Password monouso", + "@otp": { + "description": "Label for OTP input field" + }, + "loginOtp": "Codice di verifica", + "@loginOtp": { + "description": "Label for login OTP/verification code input field" + }, + "termsText": "Testo dei termini e condizioni", + "@termsText": { + "description": "Default terms and conditions text" + }, + "doAccept": "Accetta", + "@doAccept": { + "description": "Accept button text" + }, + "doDecline": "Rifiuta", + "@doDecline": { + "description": "Decline button text" + }, + "logoutConfirmHeader": "Vuole davvero disconnettersi?", + "@logoutConfirmHeader": { + "description": "Logout confirmation message" + }, + "doLogout": "Esci", + "@doLogout": { + "description": "Logout button text" + }, + "doSave": "Salva", + "@doSave": { + "description": "Save button text" + }, + "doUpdate": "Aggiorna", + "@doUpdate": { + "description": "Update button text for password form" + }, + "updatePassword": "Aggiorna password", + "@updatePassword": { + "description": "Update password button text" + }, + "accountStatusActive": "Attivo", + "@accountStatusActive": { + "description": "Account status label when signed in" + }, + "profilePicture": "Immagine del profilo", + "@profilePicture": { + "description": "Profile picture section heading" + }, + "profilePictureComingSoon": "Caricamento dell'immagine del profilo – presto disponibile.", + "@profilePictureComingSoon": { + "description": "Placeholder for profile picture upload" + }, + "uploadProfilePicture": "Carica immagine", + "@uploadProfilePicture": { + "description": "Button to upload profile picture" + }, + "removeProfilePicture": "Rimuovi immagine", + "@removeProfilePicture": { + "description": "Button to remove profile picture" + }, + "profilePictureUploading": "Caricamento in corso…", + "@profilePictureUploading": { + "description": "Status while profile picture is being uploaded" + }, + "profilePictureUploadFailed": "Caricamento non riuscito. Riprovi.", + "@profilePictureUploadFailed": { + "description": "Error when profile picture upload fails" + }, + "profilePictureTooLarge": "Il file selezionato supera i 5 MB.", + "@profilePictureTooLarge": { + "description": "Error when picture exceeds size limit" + }, + "profilePictureWrongType": "Sono supportate solo immagini JPEG, PNG o WebP.", + "@profilePictureWrongType": { + "description": "Error when picture has unsupported type" + }, + "profilePictureHelp": "JPEG, PNG o WebP, max. 5 MB. L'immagine viene ridimensionata e archiviata in modo sicuro.", + "@profilePictureHelp": { + "description": "Helper text below upload button" + }, + "accountSectionProfile": "Profilo", + "@accountSectionProfile": { + "description": "Account profile section title" + }, + "personalInfoTitle": "Informazioni personali", + "@personalInfoTitle": { + "description": "Personal info section title" + }, + "passwordSectionTitle": "Aggiorna password", + "@passwordSectionTitle": { + "description": "Password section title" + }, + "securitySectionTitle": "Sicurezza", + "@securitySectionTitle": { + "description": "Security section title" + }, + "dangerZoneTitle": "Zona pericolosa", + "@dangerZoneTitle": { + "description": "Danger zone section title" + }, + "doCancel": "Annulla", + "@doCancel": { + "description": "Cancel button text" + }, + "backToApplication": "Torna all'applicazione", + "@backToApplication": { + "description": "Back to application button text" + }, + "backToAccount": "Torna all'account", + "@backToAccount": { + "description": "Back to account button text in account console" + }, + "doContinue": "Continua", + "@doContinue": { + "description": "Continue button text" + }, + "emailVerificationBody1": "Controlli la Sua e-mail per trovare il link di verifica.", + "@emailVerificationBody1": { + "description": "Email verification instruction text" + }, + "emailVerificationBody": "Controlli la Sua e-mail per trovare il link di verifica.", + "@emailVerificationBody": { + "description": "Email verification instruction text (alternative key)" + }, + "doClickHere": "Clicchi qui", + "@doClickHere": { + "description": "Click here button/link text" + }, + "doRestart": "Ricomincia", + "@doRestart": { + "description": "Restart button text" + }, + "sessionExpired": "Il tempo previsto per la connessione è scaduto.\nLa procedura di accesso ricomincerà dall'inizio.", + "@sessionExpired": { + "description": "Session/timeout expired message" + }, + "deleteAccountConfirm": "Vuole davvero eliminare il Suo account?", + "@deleteAccountConfirm": { + "description": "Delete account confirmation message" + }, + "doDeleteAccount": "Elimina account", + "@doDeleteAccount": { + "description": "Delete account button text" + }, + "deleteCredentialConfirm": "Vuole davvero eliminare questa credenziale?", + "@deleteCredentialConfirm": { + "description": "Delete credential confirmation message" + }, + "doDelete": "Elimina", + "@doDelete": { + "description": "Delete button text" + }, + "frontchannelLogoutMessage": "Disconnessione in corso...", + "@frontchannelLogoutMessage": { + "description": "Frontchannel logout message" + }, + "linkIdpMessage": "Collegamento del provider di identità...", + "@linkIdpMessage": { + "description": "Link identity provider message" + }, + "idpLinkConfirmMessage": "Vuole collegare questo provider di identità al Suo account?", + "@idpLinkConfirmMessage": { + "description": "IDP link confirmation message" + }, + "doLink": "Collega", + "@doLink": { + "description": "Link button text" + }, + "idpLinkConfirmOverrideMessage": "Questo provider di identità è già collegato a un altro account. Vuole sovrascrivere il collegamento?", + "@idpLinkConfirmOverrideMessage": { + "description": "IDP link override confirmation message" + }, + "doOverride": "Sovrascrivi", + "@doOverride": { + "description": "Override button text" + }, + "email": "E-mail", + "@email": { + "description": "Label for email input field" + }, + "firstName": "Nome", + "@firstName": { + "description": "Label for first name input field" + }, + "lastName": "Cognome", + "@lastName": { + "description": "Label for last name input field" + }, + "oauthGrantTitle": "Concedi accesso", + "@oauthGrantTitle": { + "description": "OAuth grant title" + }, + "oauthGrantMessage": "L'applicazione richiede l'accesso al Suo account", + "@oauthGrantMessage": { + "description": "OAuth grant message" + }, + "oauthGrantScopes": "Autorizzazioni richieste", + "@oauthGrantScopes": { + "description": "OAuth grant scopes label" + }, + "pageExpiredMessage": "Questa pagina è scaduta. Ricominci la procedura di accesso.", + "@pageExpiredMessage": { + "description": "Page expired message" + }, + "passkeysConditionalAuthenticateMessage": "Autenticazione con passkey...", + "@passkeysConditionalAuthenticateMessage": { + "description": "Passkeys conditional authenticate message" + }, + "recoveryAuthnCodeConfigMessage": "Configuri il Suo codice di recupero per l'autenticazione", + "@recoveryAuthnCodeConfigMessage": { + "description": "Recovery authentication code config message" + }, + "recoveryCode": "Codice di recupero", + "@recoveryCode": { + "description": "Label for recovery code input field" + }, + "resetOtpMessage": "Il Suo OTP è stato reimpostato. Ne configuri uno nuovo.", + "@resetOtpMessage": { + "description": "Reset OTP message" + }, + "loginTotpScanBarcode": "Scansioni questo codice QR con la Sua app di autenticazione", + "@loginTotpScanBarcode": { + "description": "TOTP scan barcode instruction" + }, + "loginTotpOneTime": "Codice monouso", + "@loginTotpOneTime": { + "description": "Label for TOTP one-time code input field" + }, + "samlPostFormMessage": "Reindirizzamento al provider di identità...", + "@samlPostFormMessage": { + "description": "SAML post form message" + }, + "selectAuthenticatorTitle": "Seleziona metodo di autenticazione", + "@selectAuthenticatorTitle": { + "description": "Select authenticator title" + }, + "selectOrganizationTitle": "Seleziona organizzazione", + "@selectOrganizationTitle": { + "description": "Select organization title" + }, + "x509InfoTitle": "Informazioni sul certificato X.509", + "@x509InfoTitle": { + "description": "X.509 info title" + }, + "x509InfoMessage": "Fornisca le informazioni del Suo certificato X.509", + "@x509InfoMessage": { + "description": "X.509 info message" + }, + "webauthnAuthenticateMessage": "Si autentichi con la Sua chiave di sicurezza", + "@webauthnAuthenticateMessage": { + "description": "WebAuthn authenticate message" + }, + "webauthnErrorMessage": "Si è verificato un errore durante l'autenticazione WebAuthn", + "@webauthnErrorMessage": { + "description": "WebAuthn error message" + }, + "webauthnRegisterMessage": "Registri la Sua chiave di sicurezza", + "@webauthnRegisterMessage": { + "description": "WebAuthn register message" + }, + "oauth2DeviceVerifyUserCodeMessage": "Inserisca il codice utente visualizzato sul Suo dispositivo", + "@oauth2DeviceVerifyUserCodeMessage": { + "description": "OAuth2 device verify user code message" + }, + "userCode": "Codice utente", + "@userCode": { + "description": "Label for user code input field" + }, + "errorInvalidUsernameOrPassword": "Nome utente o password non validi", + "@errorInvalidUsernameOrPassword": { + "description": "Login form field error" + }, + "errorInvalidUsername": "Nome utente non valido", + "@errorInvalidUsername": { + "description": "Username field error" + }, + "errorInvalidPassword": "Password non valida", + "@errorInvalidPassword": { + "description": "Password field error" + }, + "errorInvalidEmail": "E-mail non valida", + "@errorInvalidEmail": { + "description": "Email field error" + }, + "errorInvalidCode": "Codice non valido", + "@errorInvalidCode": { + "description": "Verification code field error" + }, + "errorInvalidRecoveryCode": "Codice di recupero non valido", + "@errorInvalidRecoveryCode": { + "description": "Recovery code field error" + }, + "errorInvalidUserCode": "Codice utente non valido", + "@errorInvalidUserCode": { + "description": "User code field error" + }, + "errorPasswordMismatch": "Le password non corrispondono", + "@errorPasswordMismatch": { + "description": "Password confirmation field error" + }, + "errorAccountTemporarilyDisabled": "L'account è temporaneamente disattivato. Contatti l'amministratore o riprovi più tardi.", + "@errorAccountTemporarilyDisabled": { + "description": "Account disabled error" + }, + "errorIncorrectCurrentPassword": "Password attuale errata", + "@errorIncorrectCurrentPassword": { + "description": "Current password field error on account" + }, + "errorInvalidExistingPassword": "Password esistente non valida", + "@errorInvalidExistingPassword": { + "description": "Existing password invalid on account" + }, + "errorPleaseSpecifyPassword": "Inserisca la password", + "@errorPleaseSpecifyPassword": { + "description": "Password required validation message" + }, + "successPasswordChanged": "Password modificata correttamente", + "@successPasswordChanged": { + "description": "Password change success message" + }, + "successMobileAuthenticatorConfigured": "Autenticatore mobile configurato", + "@successMobileAuthenticatorConfigured": { + "description": "TOTP/authenticator success message" + }, + "successAccountUpdated": "Il Suo account è stato aggiornato", + "@successAccountUpdated": { + "description": "Account update success message" + }, + "errorAccountDisabled": "L'account è disattivato. Contatti l'amministratore.", + "errorUsernameExists": "Il nome utente esiste già.", + "errorEmailExists": "L'indirizzo e-mail esiste già.", + "errorExpiredCode": "Accesso scaduto. Effettui di nuovo l'accesso.", + "errorExpiredAction": "Azione scaduta. Prosegua ora con l'accesso.", + "errorInvalidTotp": "Codice di autenticazione non valido.", + "errorMissingTotp": "Inserisca il codice di autenticazione.", + "errorConfigureTotp": "Per attivare l'account deve configurare un autenticatore mobile.", + "errorEmailSendError": "Invio dell'e-mail non riuscito. Riprovi più tardi.", + "successPasswordUpdated": "La Sua password è stata aggiornata.", + "successEmailSent": "A breve riceverà un'e-mail con ulteriori istruzioni.", + "pageTitleLogin": "Accedi", + "pageTitleRegister": "Registrazione", + "pageTitleForgotPassword": "Password dimenticata", + "pageTitleInfo": "Informazioni", + "pageTitleError": "Errore", + "pageTitlePageDisabled": "Pagina disattivata", + "@pageTitlePageDisabled": { + "description": "Title for disabled/error page" + }, + "pageTitleCode": "Codice di verifica", + "pageTitleLogoutConfirm": "Disconnessione", + "pageTitleTerms": "Termini e condizioni", + "pageTitleLoginOtp": "Codice di verifica", + "pageTitleUpdatePassword": "Aggiorna password", + "pageTitleEmailVerification": "Verifica e-mail", + "pageTitleDeleteAccountConfirm": "Elimina account", + "pageTitleDeleteCredential": "Elimina credenziale", + "pageTitleFrontchannelLogout": "Disconnessione in corso", + "pageTitleIdpReviewProfile": "Aggiorna i dati dell'account", + "pageTitleLinkIdp": "Collega provider di identità", + "pageTitleConfigTotp": "Configurazione autenticatore mobile", + "pageTitleIdpLinkConfirm": "Collega account", + "pageTitleIdpLinkConfirmOverride": "Sovrascrivi collegamento", + "pageTitleIdpLinkEmail": "Collega account", + "pageTitleOauth2DeviceVerifyUserCode": "Accesso dal dispositivo", + "pageTitleOauthGrant": "Concedi accesso", + "pageTitlePageExpired": "Pagina scaduta", + "pageTitlePasskeysConditionalAuthenticate": "Accesso con passkey", + "pageTitleLoginPassword": "Accedi", + "pageTitleRecoveryCodeConfig": "Codici di recupero", + "pageTitleRecoveryCodeInput": "Codice di recupero", + "pageTitleResetOtp": "Reimposta autenticatore", + "pageTitleUpdateProfile": "Aggiorna i dati dell'account", + "pageTitleLoginUsername": "Accedi", + "pageTitleX509Info": "Certificato X.509", + "pageTitleSamlPostForm": "Reindirizzamento", + "pageTitleSelectAuthenticator": "Seleziona metodo di autenticazione", + "pageTitleSelectOrganization": "Seleziona organizzazione", + "pageTitleUpdateEmail": "Aggiorna e-mail", + "pageTitleWebauthnAuthenticate": "Accesso con passkey", + "pageTitleWebauthnError": "Errore passkey", + "pageTitleWebauthnRegister": "Registrazione passkey", + "pageTitleAccount": "Account", + "pageTitleAccountPassword": "Password", + "messageHeaderEmailVerification": "Verifica e-mail", + "messageHeaderForgotPassword": "Ha dimenticato la password?", + "messageHeaderEmailUpdateConfirmation": "E-mail di conferma inviata", + "messageHeaderEmailUpdated": "E-mail aggiornata", + "messageHeaderUpdatePassword": "Aggiorna password", + "messageHeaderSuccessCode": "Codice di successo", + "messageHeaderErrorCode": "Codice di errore", + "messageHeaderExecuteActions": "Azioni richieste" +} diff --git a/locales/nl-NL.arb b/locales/nl-NL.arb new file mode 100644 index 0000000..d6c9b1e --- /dev/null +++ b/locales/nl-NL.arb @@ -0,0 +1,522 @@ +{ + "@@locale": "nl-NL", + "helpwaveId": "helpwave id", + "@helpwaveId": { + "description": "Title for helpwave id badge" + }, + "nOrganization": "{count, plural, =1{# organisatie} other{# organisaties}}", + "@nOrganization": { + "placeholders": { + "count": { + "type": "number" + } + } + }, + "imprint": "Colofon", + "@imprint": { + "description": "Link text for imprint" + }, + "privacy": "Privacy", + "@privacy": { + "description": "Link text for privacy policy" + }, + "forgotPassword": "Wachtwoord vergeten?", + "@forgotPassword": { + "description": "Link text for forgot password" + }, + "noAccount": "Geen account?", + "@noAccount": { + "description": "Text before register link" + }, + "register": "Registreren", + "@register": { + "description": "Register button text" + }, + "backToLogin": "Terug naar inloggen", + "@backToLogin": { + "description": "Back to login link text" + }, + "usernameOrEmail": "Gebruikersnaam of e-mailadres", + "@usernameOrEmail": { + "description": "Label for username or email input field" + }, + "username": "Gebruikersnaam", + "@username": { + "description": "Label for username input field" + }, + "password": "Wachtwoord", + "@password": { + "description": "Label for password input field" + }, + "rememberMe": "Ingelogd blijven", + "@rememberMe": { + "description": "Label for remember me checkbox" + }, + "doLogIn": "Inloggen", + "@doLogIn": { + "description": "Log in button text" + }, + "doForgotPassword": "Wachtwoord vergeten?", + "@doForgotPassword": { + "description": "Forgot password button text" + }, + "doRegister": "Registreren", + "@doRegister": { + "description": "Register button text" + }, + "identity-provider-redirector": "Of inloggen met", + "@identity-provider-redirector": { + "description": "Text before social login providers" + }, + "acceptTerms": "Ik ga akkoord met de algemene voorwaarden", + "@acceptTerms": { + "description": "Text for terms acceptance checkbox" + }, + "acceptPrivacy": "Ik heb het", + "@acceptPrivacy": { + "description": "Privacy policy acceptance prefix" + }, + "privacyPolicy": "privacybeleid gelezen en ga ermee akkoord", + "@privacyPolicy": { + "description": "Privacy policy link text" + }, + "privacyRequired": "U moet het privacybeleid accepteren om verder te gaan.", + "@privacyRequired": { + "description": "Error when privacy not accepted" + }, + "captchaFailed": "Captcha-verificatie mislukt. Probeer het opnieuw.", + "@captchaFailed": { + "description": "Error when captcha verification fails" + }, + "captchaLoading": "Captcha laden…", + "@captchaLoading": { + "description": "Captcha loading placeholder" + }, + "realmBannerTeam": "Teamwerkruimte", + "@realmBannerTeam": { + "description": "Banner headline shown on every page of the team realm" + }, + "realmBannerAdmin": "Beheerdersportaal", + "@realmBannerAdmin": { + "description": "Banner headline shown on every page of the admin/master realm" + }, + "realmBannerOther": "Interne realm", + "@realmBannerOther": { + "description": "Banner headline shown on every page of a non-customer realm" + }, + "realmBannerSubtitleTeam": "U meldt zich aan bij een beveiligde teamomgeving.", + "@realmBannerSubtitleTeam": { + "description": "Subtitle below the team realm banner" + }, + "realmBannerSubtitleAdmin": "Beheerderstoegang – elke actie wordt vastgelegd.", + "@realmBannerSubtitleAdmin": { + "description": "Subtitle below the admin realm banner" + }, + "realmBannerSubtitleOther": "Dit is niet de gewone klantenlogin.", + "@realmBannerSubtitleOther": { + "description": "Subtitle below the fallback realm banner" + }, + "passwordNew": "Nieuw wachtwoord", + "@passwordNew": { + "description": "Label for new password input field" + }, + "passwordConfirm": "Wachtwoord bevestigen", + "@passwordConfirm": { + "description": "Label for password confirmation input field" + }, + "doSubmit": "Verzenden", + "@doSubmit": { + "description": "Submit button text" + }, + "otp": "Eenmalig wachtwoord", + "@otp": { + "description": "Label for OTP input field" + }, + "loginOtp": "Verificatiecode", + "@loginOtp": { + "description": "Label for login OTP/verification code input field" + }, + "termsText": "Tekst van de algemene voorwaarden", + "@termsText": { + "description": "Default terms and conditions text" + }, + "doAccept": "Accepteren", + "@doAccept": { + "description": "Accept button text" + }, + "doDecline": "Weigeren", + "@doDecline": { + "description": "Decline button text" + }, + "logoutConfirmHeader": "Weet u zeker dat u wilt uitloggen?", + "@logoutConfirmHeader": { + "description": "Logout confirmation message" + }, + "doLogout": "Uitloggen", + "@doLogout": { + "description": "Logout button text" + }, + "doSave": "Opslaan", + "@doSave": { + "description": "Save button text" + }, + "doUpdate": "Bijwerken", + "@doUpdate": { + "description": "Update button text for password form" + }, + "updatePassword": "Wachtwoord wijzigen", + "@updatePassword": { + "description": "Update password button text" + }, + "accountStatusActive": "Actief", + "@accountStatusActive": { + "description": "Account status label when signed in" + }, + "profilePicture": "Profielfoto", + "@profilePicture": { + "description": "Profile picture section heading" + }, + "profilePictureComingSoon": "Profielfoto uploaden – binnenkort beschikbaar.", + "@profilePictureComingSoon": { + "description": "Placeholder for profile picture upload" + }, + "uploadProfilePicture": "Foto uploaden", + "@uploadProfilePicture": { + "description": "Button to upload profile picture" + }, + "removeProfilePicture": "Foto verwijderen", + "@removeProfilePicture": { + "description": "Button to remove profile picture" + }, + "profilePictureUploading": "Uploaden…", + "@profilePictureUploading": { + "description": "Status while profile picture is being uploaded" + }, + "profilePictureUploadFailed": "Uploaden mislukt. Probeer het opnieuw.", + "@profilePictureUploadFailed": { + "description": "Error when profile picture upload fails" + }, + "profilePictureTooLarge": "Het geselecteerde bestand is groter dan 5 MB.", + "@profilePictureTooLarge": { + "description": "Error when picture exceeds size limit" + }, + "profilePictureWrongType": "Alleen JPEG-, PNG- of WebP-afbeeldingen worden ondersteund.", + "@profilePictureWrongType": { + "description": "Error when picture has unsupported type" + }, + "profilePictureHelp": "JPEG, PNG of WebP, max. 5 MB. De afbeelding wordt geschaald en veilig opgeslagen.", + "@profilePictureHelp": { + "description": "Helper text below upload button" + }, + "accountSectionProfile": "Profiel", + "@accountSectionProfile": { + "description": "Account profile section title" + }, + "personalInfoTitle": "Persoonlijke gegevens", + "@personalInfoTitle": { + "description": "Personal info section title" + }, + "passwordSectionTitle": "Wachtwoord wijzigen", + "@passwordSectionTitle": { + "description": "Password section title" + }, + "securitySectionTitle": "Beveiliging", + "@securitySectionTitle": { + "description": "Security section title" + }, + "dangerZoneTitle": "Gevarenzone", + "@dangerZoneTitle": { + "description": "Danger zone section title" + }, + "doCancel": "Annuleren", + "@doCancel": { + "description": "Cancel button text" + }, + "backToApplication": "Terug naar de applicatie", + "@backToApplication": { + "description": "Back to application button text" + }, + "backToAccount": "Terug naar account", + "@backToAccount": { + "description": "Back to account button text in account console" + }, + "doContinue": "Doorgaan", + "@doContinue": { + "description": "Continue button text" + }, + "emailVerificationBody1": "Controleer uw e-mail voor een verificatielink.", + "@emailVerificationBody1": { + "description": "Email verification instruction text" + }, + "emailVerificationBody": "Controleer uw e-mail voor een verificatielink.", + "@emailVerificationBody": { + "description": "Email verification instruction text (alternative key)" + }, + "doClickHere": "Klik hier", + "@doClickHere": { + "description": "Click here button/link text" + }, + "doRestart": "Opnieuw beginnen", + "@doRestart": { + "description": "Restart button text" + }, + "sessionExpired": "De beschikbare tijd voor de verbinding is verstreken.\nHet inlogproces wordt opnieuw gestart.", + "@sessionExpired": { + "description": "Session/timeout expired message" + }, + "deleteAccountConfirm": "Weet u zeker dat u uw account wilt verwijderen?", + "@deleteAccountConfirm": { + "description": "Delete account confirmation message" + }, + "doDeleteAccount": "Account verwijderen", + "@doDeleteAccount": { + "description": "Delete account button text" + }, + "deleteCredentialConfirm": "Weet u zeker dat u deze inloggegevens wilt verwijderen?", + "@deleteCredentialConfirm": { + "description": "Delete credential confirmation message" + }, + "doDelete": "Verwijderen", + "@doDelete": { + "description": "Delete button text" + }, + "frontchannelLogoutMessage": "Bezig met uitloggen…", + "@frontchannelLogoutMessage": { + "description": "Frontchannel logout message" + }, + "linkIdpMessage": "Identiteitsprovider koppelen…", + "@linkIdpMessage": { + "description": "Link identity provider message" + }, + "idpLinkConfirmMessage": "Wilt u deze identiteitsprovider aan uw account koppelen?", + "@idpLinkConfirmMessage": { + "description": "IDP link confirmation message" + }, + "doLink": "Koppelen", + "@doLink": { + "description": "Link button text" + }, + "idpLinkConfirmOverrideMessage": "Deze identiteitsprovider is al aan een ander account gekoppeld. Wilt u deze koppeling overschrijven?", + "@idpLinkConfirmOverrideMessage": { + "description": "IDP link override confirmation message" + }, + "doOverride": "Overschrijven", + "@doOverride": { + "description": "Override button text" + }, + "email": "E-mailadres", + "@email": { + "description": "Label for email input field" + }, + "firstName": "Voornaam", + "@firstName": { + "description": "Label for first name input field" + }, + "lastName": "Achternaam", + "@lastName": { + "description": "Label for last name input field" + }, + "oauthGrantTitle": "Toegang verlenen", + "@oauthGrantTitle": { + "description": "OAuth grant title" + }, + "oauthGrantMessage": "De applicatie vraagt toegang tot uw account", + "@oauthGrantMessage": { + "description": "OAuth grant message" + }, + "oauthGrantScopes": "Gevraagde rechten", + "@oauthGrantScopes": { + "description": "OAuth grant scopes label" + }, + "pageExpiredMessage": "Deze pagina is verlopen. Start het inlogproces opnieuw.", + "@pageExpiredMessage": { + "description": "Page expired message" + }, + "passkeysConditionalAuthenticateMessage": "Authenticeren met passkey…", + "@passkeysConditionalAuthenticateMessage": { + "description": "Passkeys conditional authenticate message" + }, + "recoveryAuthnCodeConfigMessage": "Stel uw herstelcode voor authenticatie in", + "@recoveryAuthnCodeConfigMessage": { + "description": "Recovery authentication code config message" + }, + "recoveryCode": "Herstelcode", + "@recoveryCode": { + "description": "Label for recovery code input field" + }, + "resetOtpMessage": "Uw OTP is gereset. Stel een nieuwe in.", + "@resetOtpMessage": { + "description": "Reset OTP message" + }, + "loginTotpScanBarcode": "Scan deze QR-code met uw authenticator-app", + "@loginTotpScanBarcode": { + "description": "TOTP scan barcode instruction" + }, + "loginTotpOneTime": "Eenmalige code", + "@loginTotpOneTime": { + "description": "Label for TOTP one-time code input field" + }, + "samlPostFormMessage": "Doorsturen naar identiteitsprovider…", + "@samlPostFormMessage": { + "description": "SAML post form message" + }, + "selectAuthenticatorTitle": "Authenticator kiezen", + "@selectAuthenticatorTitle": { + "description": "Select authenticator title" + }, + "selectOrganizationTitle": "Organisatie kiezen", + "@selectOrganizationTitle": { + "description": "Select organization title" + }, + "x509InfoTitle": "Informatie over X.509-certificaat", + "@x509InfoTitle": { + "description": "X.509 info title" + }, + "x509InfoMessage": "Geef de informatie van uw X.509-certificaat op", + "@x509InfoMessage": { + "description": "X.509 info message" + }, + "webauthnAuthenticateMessage": "Authenticeer met uw beveiligingssleutel", + "@webauthnAuthenticateMessage": { + "description": "WebAuthn authenticate message" + }, + "webauthnErrorMessage": "Er is een fout opgetreden bij de WebAuthn-authenticatie", + "@webauthnErrorMessage": { + "description": "WebAuthn error message" + }, + "webauthnRegisterMessage": "Registreer uw beveiligingssleutel", + "@webauthnRegisterMessage": { + "description": "WebAuthn register message" + }, + "oauth2DeviceVerifyUserCodeMessage": "Voer de gebruikerscode in die op uw apparaat wordt weergegeven", + "@oauth2DeviceVerifyUserCodeMessage": { + "description": "OAuth2 device verify user code message" + }, + "userCode": "Gebruikerscode", + "@userCode": { + "description": "Label for user code input field" + }, + "errorInvalidUsernameOrPassword": "Ongeldige gebruikersnaam of ongeldig wachtwoord", + "@errorInvalidUsernameOrPassword": { + "description": "Login form field error" + }, + "errorInvalidUsername": "Ongeldige gebruikersnaam", + "@errorInvalidUsername": { + "description": "Username field error" + }, + "errorInvalidPassword": "Ongeldig wachtwoord", + "@errorInvalidPassword": { + "description": "Password field error" + }, + "errorInvalidEmail": "Ongeldig e-mailadres", + "@errorInvalidEmail": { + "description": "Email field error" + }, + "errorInvalidCode": "Ongeldige code", + "@errorInvalidCode": { + "description": "Verification code field error" + }, + "errorInvalidRecoveryCode": "Ongeldige herstelcode", + "@errorInvalidRecoveryCode": { + "description": "Recovery code field error" + }, + "errorInvalidUserCode": "Ongeldige gebruikerscode", + "@errorInvalidUserCode": { + "description": "User code field error" + }, + "errorPasswordMismatch": "Wachtwoorden komen niet overeen", + "@errorPasswordMismatch": { + "description": "Password confirmation field error" + }, + "errorAccountTemporarilyDisabled": "Account is tijdelijk uitgeschakeld. Neem contact op met uw beheerder of probeer het later opnieuw.", + "@errorAccountTemporarilyDisabled": { + "description": "Account disabled error" + }, + "errorIncorrectCurrentPassword": "Huidig wachtwoord onjuist", + "@errorIncorrectCurrentPassword": { + "description": "Current password field error on account" + }, + "errorInvalidExistingPassword": "Bestaand wachtwoord ongeldig", + "@errorInvalidExistingPassword": { + "description": "Existing password invalid on account" + }, + "errorPleaseSpecifyPassword": "Voer een wachtwoord in", + "@errorPleaseSpecifyPassword": { + "description": "Password required validation message" + }, + "successPasswordChanged": "Wachtwoord succesvol gewijzigd", + "@successPasswordChanged": { + "description": "Password change success message" + }, + "successMobileAuthenticatorConfigured": "Mobiele authenticator ingesteld", + "@successMobileAuthenticatorConfigured": { + "description": "TOTP/authenticator success message" + }, + "successAccountUpdated": "Uw account is bijgewerkt", + "@successAccountUpdated": { + "description": "Account update success message" + }, + "errorAccountDisabled": "Account is uitgeschakeld, neem contact op met uw beheerder.", + "errorUsernameExists": "Gebruikersnaam bestaat al.", + "errorEmailExists": "E-mailadres bestaat al.", + "errorExpiredCode": "Inlogtijd verlopen. Log opnieuw in.", + "errorExpiredAction": "Actie verlopen. Ga nu verder met inloggen.", + "errorInvalidTotp": "Ongeldige authenticatorcode.", + "errorMissingTotp": "Voer de authenticatorcode in.", + "errorConfigureTotp": "U moet een mobiele authenticator instellen om uw account te activeren.", + "errorEmailSendError": "Verzenden van e-mail mislukt, probeer het later opnieuw.", + "successPasswordUpdated": "Uw wachtwoord is bijgewerkt.", + "successEmailSent": "U ontvangt binnenkort een e-mail met verdere instructies.", + "pageTitleLogin": "Inloggen", + "pageTitleRegister": "Registreren", + "pageTitleForgotPassword": "Wachtwoord vergeten", + "pageTitleInfo": "Informatie", + "pageTitleError": "Fout", + "pageTitlePageDisabled": "Pagina uitgeschakeld", + "@pageTitlePageDisabled": { + "description": "Title for disabled/error page" + }, + "pageTitleCode": "Verificatiecode", + "pageTitleLogoutConfirm": "Uitloggen", + "pageTitleTerms": "Algemene voorwaarden", + "pageTitleLoginOtp": "Verificatiecode", + "pageTitleUpdatePassword": "Wachtwoord wijzigen", + "pageTitleEmailVerification": "E-mailverificatie", + "pageTitleDeleteAccountConfirm": "Account verwijderen", + "pageTitleDeleteCredential": "Inloggegevens verwijderen", + "pageTitleFrontchannelLogout": "Bezig met uitloggen", + "pageTitleIdpReviewProfile": "Accountgegevens bijwerken", + "pageTitleLinkIdp": "Identiteitsprovider koppelen", + "pageTitleConfigTotp": "Mobiele authenticator instellen", + "pageTitleIdpLinkConfirm": "Account koppelen", + "pageTitleIdpLinkConfirmOverride": "Koppeling overschrijven", + "pageTitleIdpLinkEmail": "Account koppelen", + "pageTitleOauth2DeviceVerifyUserCode": "Inloggen op apparaat", + "pageTitleOauthGrant": "Toegang verlenen", + "pageTitlePageExpired": "Pagina verlopen", + "pageTitlePasskeysConditionalAuthenticate": "Inloggen met passkey", + "pageTitleLoginPassword": "Inloggen", + "pageTitleRecoveryCodeConfig": "Herstelcodes", + "pageTitleRecoveryCodeInput": "Herstelcode", + "pageTitleResetOtp": "Authenticator resetten", + "pageTitleUpdateProfile": "Accountgegevens bijwerken", + "pageTitleLoginUsername": "Inloggen", + "pageTitleX509Info": "X.509-certificaat", + "pageTitleSamlPostForm": "Doorsturen", + "pageTitleSelectAuthenticator": "Authenticator kiezen", + "pageTitleSelectOrganization": "Organisatie kiezen", + "pageTitleUpdateEmail": "E-mailadres wijzigen", + "pageTitleWebauthnAuthenticate": "Inloggen met passkey", + "pageTitleWebauthnError": "Passkey-fout", + "pageTitleWebauthnRegister": "Passkey registreren", + "pageTitleAccount": "Account", + "pageTitleAccountPassword": "Wachtwoord", + "messageHeaderEmailVerification": "E-mailverificatie", + "messageHeaderForgotPassword": "Wachtwoord vergeten?", + "messageHeaderEmailUpdateConfirmation": "Bevestigingsmail verzonden", + "messageHeaderEmailUpdated": "E-mailadres bijgewerkt", + "messageHeaderUpdatePassword": "Wachtwoord wijzigen", + "messageHeaderSuccessCode": "Succescode", + "messageHeaderErrorCode": "Foutcode", + "messageHeaderExecuteActions": "Vereiste acties" +} diff --git a/locales/pl-PL.arb b/locales/pl-PL.arb new file mode 100644 index 0000000..c1a8fbd --- /dev/null +++ b/locales/pl-PL.arb @@ -0,0 +1,522 @@ +{ + "@@locale": "pl-PL", + "helpwaveId": "helpwave id", + "@helpwaveId": { + "description": "Title for helpwave id badge" + }, + "nOrganization": "{count, plural, =1{# organizacja} few{# organizacje} many{# organizacji} other{# organizacji}}", + "@nOrganization": { + "placeholders": { + "count": { + "type": "number" + } + } + }, + "imprint": "Nota prawna", + "@imprint": { + "description": "Link text for imprint" + }, + "privacy": "Prywatność", + "@privacy": { + "description": "Link text for privacy policy" + }, + "forgotPassword": "Nie pamiętasz hasła?", + "@forgotPassword": { + "description": "Link text for forgot password" + }, + "noAccount": "Nie masz konta?", + "@noAccount": { + "description": "Text before register link" + }, + "register": "Zarejestruj się", + "@register": { + "description": "Register button text" + }, + "backToLogin": "Powrót do logowania", + "@backToLogin": { + "description": "Back to login link text" + }, + "usernameOrEmail": "Nazwa użytkownika lub e-mail", + "@usernameOrEmail": { + "description": "Label for username or email input field" + }, + "username": "Nazwa użytkownika", + "@username": { + "description": "Label for username input field" + }, + "password": "Hasło", + "@password": { + "description": "Label for password input field" + }, + "rememberMe": "Zapamiętaj mnie", + "@rememberMe": { + "description": "Label for remember me checkbox" + }, + "doLogIn": "Zaloguj się", + "@doLogIn": { + "description": "Log in button text" + }, + "doForgotPassword": "Nie pamiętasz hasła?", + "@doForgotPassword": { + "description": "Forgot password button text" + }, + "doRegister": "Zarejestruj się", + "@doRegister": { + "description": "Register button text" + }, + "identity-provider-redirector": "Lub zaloguj się przez", + "@identity-provider-redirector": { + "description": "Text before social login providers" + }, + "acceptTerms": "Akceptuję regulamin", + "@acceptTerms": { + "description": "Text for terms acceptance checkbox" + }, + "acceptPrivacy": "Potwierdzam zapoznanie się i akceptuję", + "@acceptPrivacy": { + "description": "Privacy policy acceptance prefix" + }, + "privacyPolicy": "politykę prywatności", + "@privacyPolicy": { + "description": "Privacy policy link text" + }, + "privacyRequired": "Aby kontynuować, należy zaakceptować politykę prywatności.", + "@privacyRequired": { + "description": "Error when privacy not accepted" + }, + "captchaFailed": "Weryfikacja captcha nie powiodła się. Spróbuj ponownie.", + "@captchaFailed": { + "description": "Error when captcha verification fails" + }, + "captchaLoading": "Ładowanie captcha…", + "@captchaLoading": { + "description": "Captcha loading placeholder" + }, + "realmBannerTeam": "Przestrzeń zespołu", + "@realmBannerTeam": { + "description": "Banner headline shown on every page of the team realm" + }, + "realmBannerAdmin": "Portal administratora", + "@realmBannerAdmin": { + "description": "Banner headline shown on every page of the admin/master realm" + }, + "realmBannerOther": "Wewnętrzny realm", + "@realmBannerOther": { + "description": "Banner headline shown on every page of a non-customer realm" + }, + "realmBannerSubtitleTeam": "Logujesz się do uprzywilejowanej strefy zespołu.", + "@realmBannerSubtitleTeam": { + "description": "Subtitle below the team realm banner" + }, + "realmBannerSubtitleAdmin": "Dostęp administracyjny – każda czynność jest rejestrowana.", + "@realmBannerSubtitleAdmin": { + "description": "Subtitle below the admin realm banner" + }, + "realmBannerSubtitleOther": "To nie jest standardowe logowanie dla klientów.", + "@realmBannerSubtitleOther": { + "description": "Subtitle below the fallback realm banner" + }, + "passwordNew": "Nowe hasło", + "@passwordNew": { + "description": "Label for new password input field" + }, + "passwordConfirm": "Potwierdź hasło", + "@passwordConfirm": { + "description": "Label for password confirmation input field" + }, + "doSubmit": "Wyślij", + "@doSubmit": { + "description": "Submit button text" + }, + "otp": "Hasło jednorazowe", + "@otp": { + "description": "Label for OTP input field" + }, + "loginOtp": "Kod weryfikacyjny", + "@loginOtp": { + "description": "Label for login OTP/verification code input field" + }, + "termsText": "Treść regulaminu", + "@termsText": { + "description": "Default terms and conditions text" + }, + "doAccept": "Akceptuj", + "@doAccept": { + "description": "Accept button text" + }, + "doDecline": "Odrzuć", + "@doDecline": { + "description": "Decline button text" + }, + "logoutConfirmHeader": "Czy na pewno chcesz się wylogować?", + "@logoutConfirmHeader": { + "description": "Logout confirmation message" + }, + "doLogout": "Wyloguj się", + "@doLogout": { + "description": "Logout button text" + }, + "doSave": "Zapisz", + "@doSave": { + "description": "Save button text" + }, + "doUpdate": "Aktualizuj", + "@doUpdate": { + "description": "Update button text for password form" + }, + "updatePassword": "Zmień hasło", + "@updatePassword": { + "description": "Update password button text" + }, + "accountStatusActive": "Aktywne", + "@accountStatusActive": { + "description": "Account status label when signed in" + }, + "profilePicture": "Zdjęcie profilowe", + "@profilePicture": { + "description": "Profile picture section heading" + }, + "profilePictureComingSoon": "Przesyłanie zdjęcia profilowego – wkrótce.", + "@profilePictureComingSoon": { + "description": "Placeholder for profile picture upload" + }, + "uploadProfilePicture": "Prześlij zdjęcie", + "@uploadProfilePicture": { + "description": "Button to upload profile picture" + }, + "removeProfilePicture": "Usuń zdjęcie", + "@removeProfilePicture": { + "description": "Button to remove profile picture" + }, + "profilePictureUploading": "Przesyłanie…", + "@profilePictureUploading": { + "description": "Status while profile picture is being uploaded" + }, + "profilePictureUploadFailed": "Przesyłanie nie powiodło się. Spróbuj ponownie.", + "@profilePictureUploadFailed": { + "description": "Error when profile picture upload fails" + }, + "profilePictureTooLarge": "Wybrany plik jest większy niż 5 MB.", + "@profilePictureTooLarge": { + "description": "Error when picture exceeds size limit" + }, + "profilePictureWrongType": "Obsługiwane są tylko obrazy JPEG, PNG lub WebP.", + "@profilePictureWrongType": { + "description": "Error when picture has unsupported type" + }, + "profilePictureHelp": "JPEG, PNG lub WebP, maks. 5 MB. Obraz zostanie przeskalowany i bezpiecznie zapisany.", + "@profilePictureHelp": { + "description": "Helper text below upload button" + }, + "accountSectionProfile": "Profil", + "@accountSectionProfile": { + "description": "Account profile section title" + }, + "personalInfoTitle": "Dane osobowe", + "@personalInfoTitle": { + "description": "Personal info section title" + }, + "passwordSectionTitle": "Zmień hasło", + "@passwordSectionTitle": { + "description": "Password section title" + }, + "securitySectionTitle": "Bezpieczeństwo", + "@securitySectionTitle": { + "description": "Security section title" + }, + "dangerZoneTitle": "Strefa zagrożenia", + "@dangerZoneTitle": { + "description": "Danger zone section title" + }, + "doCancel": "Anuluj", + "@doCancel": { + "description": "Cancel button text" + }, + "backToApplication": "Powrót do aplikacji", + "@backToApplication": { + "description": "Back to application button text" + }, + "backToAccount": "Powrót do konta", + "@backToAccount": { + "description": "Back to account button text in account console" + }, + "doContinue": "Dalej", + "@doContinue": { + "description": "Continue button text" + }, + "emailVerificationBody1": "Sprawdź skrzynkę e-mail – wysłaliśmy link weryfikacyjny.", + "@emailVerificationBody1": { + "description": "Email verification instruction text" + }, + "emailVerificationBody": "Sprawdź skrzynkę e-mail – wysłaliśmy link weryfikacyjny.", + "@emailVerificationBody": { + "description": "Email verification instruction text (alternative key)" + }, + "doClickHere": "Kliknij tutaj", + "@doClickHere": { + "description": "Click here button/link text" + }, + "doRestart": "Zacznij od nowa", + "@doRestart": { + "description": "Restart button text" + }, + "sessionExpired": "Upłynął czas przeznaczony na połączenie.\nProces logowania rozpocznie się od nowa.", + "@sessionExpired": { + "description": "Session/timeout expired message" + }, + "deleteAccountConfirm": "Czy na pewno chcesz usunąć swoje konto?", + "@deleteAccountConfirm": { + "description": "Delete account confirmation message" + }, + "doDeleteAccount": "Usuń konto", + "@doDeleteAccount": { + "description": "Delete account button text" + }, + "deleteCredentialConfirm": "Czy na pewno chcesz usunąć te dane uwierzytelniające?", + "@deleteCredentialConfirm": { + "description": "Delete credential confirmation message" + }, + "doDelete": "Usuń", + "@doDelete": { + "description": "Delete button text" + }, + "frontchannelLogoutMessage": "Wylogowywanie…", + "@frontchannelLogoutMessage": { + "description": "Frontchannel logout message" + }, + "linkIdpMessage": "Łączenie dostawcy tożsamości…", + "@linkIdpMessage": { + "description": "Link identity provider message" + }, + "idpLinkConfirmMessage": "Czy chcesz połączyć tego dostawcę tożsamości ze swoim kontem?", + "@idpLinkConfirmMessage": { + "description": "IDP link confirmation message" + }, + "doLink": "Połącz", + "@doLink": { + "description": "Link button text" + }, + "idpLinkConfirmOverrideMessage": "Ten dostawca tożsamości jest już połączony z innym kontem. Czy chcesz zastąpić to powiązanie?", + "@idpLinkConfirmOverrideMessage": { + "description": "IDP link override confirmation message" + }, + "doOverride": "Zastąp", + "@doOverride": { + "description": "Override button text" + }, + "email": "E-mail", + "@email": { + "description": "Label for email input field" + }, + "firstName": "Imię", + "@firstName": { + "description": "Label for first name input field" + }, + "lastName": "Nazwisko", + "@lastName": { + "description": "Label for last name input field" + }, + "oauthGrantTitle": "Udziel dostępu", + "@oauthGrantTitle": { + "description": "OAuth grant title" + }, + "oauthGrantMessage": "Aplikacja prosi o dostęp do Twojego konta", + "@oauthGrantMessage": { + "description": "OAuth grant message" + }, + "oauthGrantScopes": "Żądane uprawnienia", + "@oauthGrantScopes": { + "description": "OAuth grant scopes label" + }, + "pageExpiredMessage": "Ta strona wygasła. Rozpocznij logowanie od nowa.", + "@pageExpiredMessage": { + "description": "Page expired message" + }, + "passkeysConditionalAuthenticateMessage": "Uwierzytelnianie kluczem dostępu…", + "@passkeysConditionalAuthenticateMessage": { + "description": "Passkeys conditional authenticate message" + }, + "recoveryAuthnCodeConfigMessage": "Skonfiguruj kod odzyskiwania uwierzytelniania", + "@recoveryAuthnCodeConfigMessage": { + "description": "Recovery authentication code config message" + }, + "recoveryCode": "Kod odzyskiwania", + "@recoveryCode": { + "description": "Label for recovery code input field" + }, + "resetOtpMessage": "Kod OTP został zresetowany. Skonfiguruj nowy.", + "@resetOtpMessage": { + "description": "Reset OTP message" + }, + "loginTotpScanBarcode": "Zeskanuj ten kod QR w aplikacji uwierzytelniającej", + "@loginTotpScanBarcode": { + "description": "TOTP scan barcode instruction" + }, + "loginTotpOneTime": "Kod jednorazowy", + "@loginTotpOneTime": { + "description": "Label for TOTP one-time code input field" + }, + "samlPostFormMessage": "Przekierowywanie do dostawcy tożsamości…", + "@samlPostFormMessage": { + "description": "SAML post form message" + }, + "selectAuthenticatorTitle": "Wybierz metodę uwierzytelniania", + "@selectAuthenticatorTitle": { + "description": "Select authenticator title" + }, + "selectOrganizationTitle": "Wybierz organizację", + "@selectOrganizationTitle": { + "description": "Select organization title" + }, + "x509InfoTitle": "Informacje o certyfikacie X.509", + "@x509InfoTitle": { + "description": "X.509 info title" + }, + "x509InfoMessage": "Podaj informacje o certyfikacie X.509", + "@x509InfoMessage": { + "description": "X.509 info message" + }, + "webauthnAuthenticateMessage": "Uwierzytelnij się kluczem bezpieczeństwa", + "@webauthnAuthenticateMessage": { + "description": "WebAuthn authenticate message" + }, + "webauthnErrorMessage": "Wystąpił błąd podczas uwierzytelniania WebAuthn", + "@webauthnErrorMessage": { + "description": "WebAuthn error message" + }, + "webauthnRegisterMessage": "Zarejestruj klucz bezpieczeństwa", + "@webauthnRegisterMessage": { + "description": "WebAuthn register message" + }, + "oauth2DeviceVerifyUserCodeMessage": "Wprowadź kod użytkownika wyświetlany na urządzeniu", + "@oauth2DeviceVerifyUserCodeMessage": { + "description": "OAuth2 device verify user code message" + }, + "userCode": "Kod użytkownika", + "@userCode": { + "description": "Label for user code input field" + }, + "errorInvalidUsernameOrPassword": "Nieprawidłowa nazwa użytkownika lub hasło", + "@errorInvalidUsernameOrPassword": { + "description": "Login form field error" + }, + "errorInvalidUsername": "Nieprawidłowa nazwa użytkownika", + "@errorInvalidUsername": { + "description": "Username field error" + }, + "errorInvalidPassword": "Nieprawidłowe hasło", + "@errorInvalidPassword": { + "description": "Password field error" + }, + "errorInvalidEmail": "Nieprawidłowy adres e-mail", + "@errorInvalidEmail": { + "description": "Email field error" + }, + "errorInvalidCode": "Nieprawidłowy kod", + "@errorInvalidCode": { + "description": "Verification code field error" + }, + "errorInvalidRecoveryCode": "Nieprawidłowy kod odzyskiwania", + "@errorInvalidRecoveryCode": { + "description": "Recovery code field error" + }, + "errorInvalidUserCode": "Nieprawidłowy kod użytkownika", + "@errorInvalidUserCode": { + "description": "User code field error" + }, + "errorPasswordMismatch": "Hasła nie są zgodne", + "@errorPasswordMismatch": { + "description": "Password confirmation field error" + }, + "errorAccountTemporarilyDisabled": "Konto jest tymczasowo zablokowane. Skontaktuj się z administratorem lub spróbuj ponownie później.", + "@errorAccountTemporarilyDisabled": { + "description": "Account disabled error" + }, + "errorIncorrectCurrentPassword": "Nieprawidłowe obecne hasło", + "@errorIncorrectCurrentPassword": { + "description": "Current password field error on account" + }, + "errorInvalidExistingPassword": "Nieprawidłowe dotychczasowe hasło", + "@errorInvalidExistingPassword": { + "description": "Existing password invalid on account" + }, + "errorPleaseSpecifyPassword": "Podaj hasło", + "@errorPleaseSpecifyPassword": { + "description": "Password required validation message" + }, + "successPasswordChanged": "Hasło zostało zmienione", + "@successPasswordChanged": { + "description": "Password change success message" + }, + "successMobileAuthenticatorConfigured": "Skonfigurowano aplikację uwierzytelniającą", + "@successMobileAuthenticatorConfigured": { + "description": "TOTP/authenticator success message" + }, + "successAccountUpdated": "Konto zostało zaktualizowane", + "@successAccountUpdated": { + "description": "Account update success message" + }, + "errorAccountDisabled": "Konto jest wyłączone. Skontaktuj się z administratorem.", + "errorUsernameExists": "Nazwa użytkownika już istnieje.", + "errorEmailExists": "Adres e-mail już istnieje.", + "errorExpiredCode": "Przekroczono czas logowania. Zaloguj się ponownie.", + "errorExpiredAction": "Czynność wygasła. Kontynuuj logowanie.", + "errorInvalidTotp": "Nieprawidłowy kod uwierzytelniający.", + "errorMissingTotp": "Podaj kod uwierzytelniający.", + "errorConfigureTotp": "Aby aktywować konto, należy skonfigurować aplikację uwierzytelniającą.", + "errorEmailSendError": "Nie udało się wysłać wiadomości e-mail. Spróbuj ponownie później.", + "successPasswordUpdated": "Hasło zostało zaktualizowane.", + "successEmailSent": "Wkrótce otrzymasz wiadomość e-mail z dalszymi instrukcjami.", + "pageTitleLogin": "Logowanie", + "pageTitleRegister": "Rejestracja", + "pageTitleForgotPassword": "Nie pamiętam hasła", + "pageTitleInfo": "Informacja", + "pageTitleError": "Błąd", + "pageTitlePageDisabled": "Strona wyłączona", + "@pageTitlePageDisabled": { + "description": "Title for disabled/error page" + }, + "pageTitleCode": "Kod weryfikacyjny", + "pageTitleLogoutConfirm": "Wylogowanie", + "pageTitleTerms": "Regulamin", + "pageTitleLoginOtp": "Kod weryfikacyjny", + "pageTitleUpdatePassword": "Zmiana hasła", + "pageTitleEmailVerification": "Weryfikacja adresu e-mail", + "pageTitleDeleteAccountConfirm": "Usuwanie konta", + "pageTitleDeleteCredential": "Usuwanie danych uwierzytelniających", + "pageTitleFrontchannelLogout": "Wylogowywanie", + "pageTitleIdpReviewProfile": "Aktualizacja danych konta", + "pageTitleLinkIdp": "Łączenie dostawcy tożsamości", + "pageTitleConfigTotp": "Konfiguracja aplikacji uwierzytelniającej", + "pageTitleIdpLinkConfirm": "Łączenie konta", + "pageTitleIdpLinkConfirmOverride": "Zastąpienie powiązania", + "pageTitleIdpLinkEmail": "Łączenie konta", + "pageTitleOauth2DeviceVerifyUserCode": "Logowanie na urządzeniu", + "pageTitleOauthGrant": "Udzielanie dostępu", + "pageTitlePageExpired": "Strona wygasła", + "pageTitlePasskeysConditionalAuthenticate": "Logowanie kluczem dostępu", + "pageTitleLoginPassword": "Logowanie", + "pageTitleRecoveryCodeConfig": "Kody odzyskiwania", + "pageTitleRecoveryCodeInput": "Kod odzyskiwania", + "pageTitleResetOtp": "Resetowanie uwierzytelniania", + "pageTitleUpdateProfile": "Aktualizacja danych konta", + "pageTitleLoginUsername": "Logowanie", + "pageTitleX509Info": "Certyfikat X.509", + "pageTitleSamlPostForm": "Przekierowywanie", + "pageTitleSelectAuthenticator": "Wybór metody uwierzytelniania", + "pageTitleSelectOrganization": "Wybór organizacji", + "pageTitleUpdateEmail": "Zmiana adresu e-mail", + "pageTitleWebauthnAuthenticate": "Logowanie kluczem dostępu", + "pageTitleWebauthnError": "Błąd klucza dostępu", + "pageTitleWebauthnRegister": "Rejestracja klucza dostępu", + "pageTitleAccount": "Konto", + "pageTitleAccountPassword": "Hasło", + "messageHeaderEmailVerification": "Weryfikacja adresu e-mail", + "messageHeaderForgotPassword": "Nie pamiętasz hasła?", + "messageHeaderEmailUpdateConfirmation": "Wysłano wiadomość potwierdzającą", + "messageHeaderEmailUpdated": "Adres e-mail zaktualizowany", + "messageHeaderUpdatePassword": "Zmień hasło", + "messageHeaderSuccessCode": "Kod powodzenia", + "messageHeaderErrorCode": "Kod błędu", + "messageHeaderExecuteActions": "Wymagane czynności" +} diff --git a/locales/ru-RU.arb b/locales/ru-RU.arb new file mode 100644 index 0000000..4bb5948 --- /dev/null +++ b/locales/ru-RU.arb @@ -0,0 +1,522 @@ +{ + "@@locale": "ru-RU", + "helpwaveId": "helpwave id", + "@helpwaveId": { + "description": "Title for helpwave id badge" + }, + "nOrganization": "{count, plural, one{# организация} few{# организации} many{# организаций} other{# организации}}", + "@nOrganization": { + "placeholders": { + "count": { + "type": "number" + } + } + }, + "imprint": "Выходные данные", + "@imprint": { + "description": "Link text for imprint" + }, + "privacy": "Конфиденциальность", + "@privacy": { + "description": "Link text for privacy policy" + }, + "forgotPassword": "Забыли пароль?", + "@forgotPassword": { + "description": "Link text for forgot password" + }, + "noAccount": "Нет учётной записи?", + "@noAccount": { + "description": "Text before register link" + }, + "register": "Зарегистрироваться", + "@register": { + "description": "Register button text" + }, + "backToLogin": "Вернуться ко входу", + "@backToLogin": { + "description": "Back to login link text" + }, + "usernameOrEmail": "Имя пользователя или эл. почта", + "@usernameOrEmail": { + "description": "Label for username or email input field" + }, + "username": "Имя пользователя", + "@username": { + "description": "Label for username input field" + }, + "password": "Пароль", + "@password": { + "description": "Label for password input field" + }, + "rememberMe": "Запомнить меня", + "@rememberMe": { + "description": "Label for remember me checkbox" + }, + "doLogIn": "Войти", + "@doLogIn": { + "description": "Log in button text" + }, + "doForgotPassword": "Забыли пароль?", + "@doForgotPassword": { + "description": "Forgot password button text" + }, + "doRegister": "Зарегистрироваться", + "@doRegister": { + "description": "Register button text" + }, + "identity-provider-redirector": "Или войдите с помощью", + "@identity-provider-redirector": { + "description": "Text before social login providers" + }, + "acceptTerms": "Я принимаю условия использования", + "@acceptTerms": { + "description": "Text for terms acceptance checkbox" + }, + "acceptPrivacy": "Я прочитал(а) и принимаю", + "@acceptPrivacy": { + "description": "Privacy policy acceptance prefix" + }, + "privacyPolicy": "политику конфиденциальности", + "@privacyPolicy": { + "description": "Privacy policy link text" + }, + "privacyRequired": "Чтобы продолжить, необходимо принять политику конфиденциальности.", + "@privacyRequired": { + "description": "Error when privacy not accepted" + }, + "captchaFailed": "Не удалось пройти проверку CAPTCHA. Пожалуйста, попробуйте ещё раз.", + "@captchaFailed": { + "description": "Error when captcha verification fails" + }, + "captchaLoading": "Загрузка CAPTCHA…", + "@captchaLoading": { + "description": "Captcha loading placeholder" + }, + "realmBannerTeam": "Рабочая область команды", + "@realmBannerTeam": { + "description": "Banner headline shown on every page of the team realm" + }, + "realmBannerAdmin": "Портал администратора", + "@realmBannerAdmin": { + "description": "Banner headline shown on every page of the admin/master realm" + }, + "realmBannerOther": "Внутренняя область", + "@realmBannerOther": { + "description": "Banner headline shown on every page of a non-customer realm" + }, + "realmBannerSubtitleTeam": "Вы входите в привилегированную командную область.", + "@realmBannerSubtitleTeam": { + "description": "Subtitle below the team realm banner" + }, + "realmBannerSubtitleAdmin": "Административный доступ — все действия протоколируются.", + "@realmBannerSubtitleAdmin": { + "description": "Subtitle below the admin realm banner" + }, + "realmBannerSubtitleOther": "Это не стандартный вход для клиентов.", + "@realmBannerSubtitleOther": { + "description": "Subtitle below the fallback realm banner" + }, + "passwordNew": "Новый пароль", + "@passwordNew": { + "description": "Label for new password input field" + }, + "passwordConfirm": "Подтверждение пароля", + "@passwordConfirm": { + "description": "Label for password confirmation input field" + }, + "doSubmit": "Отправить", + "@doSubmit": { + "description": "Submit button text" + }, + "otp": "Одноразовый пароль", + "@otp": { + "description": "Label for OTP input field" + }, + "loginOtp": "Код подтверждения", + "@loginOtp": { + "description": "Label for login OTP/verification code input field" + }, + "termsText": "Текст условий использования", + "@termsText": { + "description": "Default terms and conditions text" + }, + "doAccept": "Принять", + "@doAccept": { + "description": "Accept button text" + }, + "doDecline": "Отклонить", + "@doDecline": { + "description": "Decline button text" + }, + "logoutConfirmHeader": "Вы действительно хотите выйти?", + "@logoutConfirmHeader": { + "description": "Logout confirmation message" + }, + "doLogout": "Выйти", + "@doLogout": { + "description": "Logout button text" + }, + "doSave": "Сохранить", + "@doSave": { + "description": "Save button text" + }, + "doUpdate": "Обновить", + "@doUpdate": { + "description": "Update button text for password form" + }, + "updatePassword": "Изменить пароль", + "@updatePassword": { + "description": "Update password button text" + }, + "accountStatusActive": "Активен", + "@accountStatusActive": { + "description": "Account status label when signed in" + }, + "profilePicture": "Фото профиля", + "@profilePicture": { + "description": "Profile picture section heading" + }, + "profilePictureComingSoon": "Загрузка фото профиля — скоро.", + "@profilePictureComingSoon": { + "description": "Placeholder for profile picture upload" + }, + "uploadProfilePicture": "Загрузить фото", + "@uploadProfilePicture": { + "description": "Button to upload profile picture" + }, + "removeProfilePicture": "Удалить фото", + "@removeProfilePicture": { + "description": "Button to remove profile picture" + }, + "profilePictureUploading": "Загрузка…", + "@profilePictureUploading": { + "description": "Status while profile picture is being uploaded" + }, + "profilePictureUploadFailed": "Не удалось загрузить. Пожалуйста, попробуйте ещё раз.", + "@profilePictureUploadFailed": { + "description": "Error when profile picture upload fails" + }, + "profilePictureTooLarge": "Размер выбранного файла превышает 5 МБ.", + "@profilePictureTooLarge": { + "description": "Error when picture exceeds size limit" + }, + "profilePictureWrongType": "Поддерживаются только изображения JPEG, PNG и WebP.", + "@profilePictureWrongType": { + "description": "Error when picture has unsupported type" + }, + "profilePictureHelp": "JPEG, PNG или WebP, не более 5 МБ. Изображение масштабируется и надёжно хранится.", + "@profilePictureHelp": { + "description": "Helper text below upload button" + }, + "accountSectionProfile": "Профиль", + "@accountSectionProfile": { + "description": "Account profile section title" + }, + "personalInfoTitle": "Личные данные", + "@personalInfoTitle": { + "description": "Personal info section title" + }, + "passwordSectionTitle": "Изменение пароля", + "@passwordSectionTitle": { + "description": "Password section title" + }, + "securitySectionTitle": "Безопасность", + "@securitySectionTitle": { + "description": "Security section title" + }, + "dangerZoneTitle": "Опасная зона", + "@dangerZoneTitle": { + "description": "Danger zone section title" + }, + "doCancel": "Отмена", + "@doCancel": { + "description": "Cancel button text" + }, + "backToApplication": "Вернуться в приложение", + "@backToApplication": { + "description": "Back to application button text" + }, + "backToAccount": "Вернуться к учётной записи", + "@backToAccount": { + "description": "Back to account button text in account console" + }, + "doContinue": "Продолжить", + "@doContinue": { + "description": "Continue button text" + }, + "emailVerificationBody1": "Пожалуйста, проверьте почту: мы отправили Вам ссылку для подтверждения.", + "@emailVerificationBody1": { + "description": "Email verification instruction text" + }, + "emailVerificationBody": "Пожалуйста, проверьте почту: мы отправили Вам ссылку для подтверждения.", + "@emailVerificationBody": { + "description": "Email verification instruction text (alternative key)" + }, + "doClickHere": "Нажмите здесь", + "@doClickHere": { + "description": "Click here button/link text" + }, + "doRestart": "Начать заново", + "@doRestart": { + "description": "Restart button text" + }, + "sessionExpired": "Время, отведённое на подключение, истекло.\nВход будет начат заново.", + "@sessionExpired": { + "description": "Session/timeout expired message" + }, + "deleteAccountConfirm": "Вы действительно хотите удалить свою учётную запись?", + "@deleteAccountConfirm": { + "description": "Delete account confirmation message" + }, + "doDeleteAccount": "Удалить учётную запись", + "@doDeleteAccount": { + "description": "Delete account button text" + }, + "deleteCredentialConfirm": "Вы действительно хотите удалить эти учётные данные?", + "@deleteCredentialConfirm": { + "description": "Delete credential confirmation message" + }, + "doDelete": "Удалить", + "@doDelete": { + "description": "Delete button text" + }, + "frontchannelLogoutMessage": "Выполняется выход…", + "@frontchannelLogoutMessage": { + "description": "Frontchannel logout message" + }, + "linkIdpMessage": "Привязка поставщика удостоверений…", + "@linkIdpMessage": { + "description": "Link identity provider message" + }, + "idpLinkConfirmMessage": "Привязать этого поставщика удостоверений к Вашей учётной записи?", + "@idpLinkConfirmMessage": { + "description": "IDP link confirmation message" + }, + "doLink": "Привязать", + "@doLink": { + "description": "Link button text" + }, + "idpLinkConfirmOverrideMessage": "Этот поставщик удостоверений уже привязан к другой учётной записи. Заменить привязку?", + "@idpLinkConfirmOverrideMessage": { + "description": "IDP link override confirmation message" + }, + "doOverride": "Заменить", + "@doOverride": { + "description": "Override button text" + }, + "email": "Эл. почта", + "@email": { + "description": "Label for email input field" + }, + "firstName": "Имя", + "@firstName": { + "description": "Label for first name input field" + }, + "lastName": "Фамилия", + "@lastName": { + "description": "Label for last name input field" + }, + "oauthGrantTitle": "Предоставление доступа", + "@oauthGrantTitle": { + "description": "OAuth grant title" + }, + "oauthGrantMessage": "Приложение запрашивает доступ к Вашей учётной записи", + "@oauthGrantMessage": { + "description": "OAuth grant message" + }, + "oauthGrantScopes": "Запрашиваемые разрешения", + "@oauthGrantScopes": { + "description": "OAuth grant scopes label" + }, + "pageExpiredMessage": "Срок действия этой страницы истёк. Пожалуйста, начните вход заново.", + "@pageExpiredMessage": { + "description": "Page expired message" + }, + "passkeysConditionalAuthenticateMessage": "Вход с помощью ключа доступа…", + "@passkeysConditionalAuthenticateMessage": { + "description": "Passkeys conditional authenticate message" + }, + "recoveryAuthnCodeConfigMessage": "Настройте коды восстановления", + "@recoveryAuthnCodeConfigMessage": { + "description": "Recovery authentication code config message" + }, + "recoveryCode": "Код восстановления", + "@recoveryCode": { + "description": "Label for recovery code input field" + }, + "resetOtpMessage": "Ваш одноразовый пароль (OTP) сброшен. Пожалуйста, настройте новый.", + "@resetOtpMessage": { + "description": "Reset OTP message" + }, + "loginTotpScanBarcode": "Отсканируйте этот QR-код в приложении-аутентификаторе", + "@loginTotpScanBarcode": { + "description": "TOTP scan barcode instruction" + }, + "loginTotpOneTime": "Одноразовый код", + "@loginTotpOneTime": { + "description": "Label for TOTP one-time code input field" + }, + "samlPostFormMessage": "Перенаправление к поставщику удостоверений…", + "@samlPostFormMessage": { + "description": "SAML post form message" + }, + "selectAuthenticatorTitle": "Выберите способ аутентификации", + "@selectAuthenticatorTitle": { + "description": "Select authenticator title" + }, + "selectOrganizationTitle": "Выберите организацию", + "@selectOrganizationTitle": { + "description": "Select organization title" + }, + "x509InfoTitle": "Сведения о сертификате X.509", + "@x509InfoTitle": { + "description": "X.509 info title" + }, + "x509InfoMessage": "Пожалуйста, укажите сведения о Вашем сертификате X.509", + "@x509InfoMessage": { + "description": "X.509 info message" + }, + "webauthnAuthenticateMessage": "Выполните вход с помощью ключа безопасности", + "@webauthnAuthenticateMessage": { + "description": "WebAuthn authenticate message" + }, + "webauthnErrorMessage": "При аутентификации WebAuthn произошла ошибка", + "@webauthnErrorMessage": { + "description": "WebAuthn error message" + }, + "webauthnRegisterMessage": "Зарегистрируйте свой ключ безопасности", + "@webauthnRegisterMessage": { + "description": "WebAuthn register message" + }, + "oauth2DeviceVerifyUserCodeMessage": "Введите код пользователя, отображаемый на Вашем устройстве", + "@oauth2DeviceVerifyUserCodeMessage": { + "description": "OAuth2 device verify user code message" + }, + "userCode": "Код пользователя", + "@userCode": { + "description": "Label for user code input field" + }, + "errorInvalidUsernameOrPassword": "Неверное имя пользователя или пароль", + "@errorInvalidUsernameOrPassword": { + "description": "Login form field error" + }, + "errorInvalidUsername": "Неверное имя пользователя", + "@errorInvalidUsername": { + "description": "Username field error" + }, + "errorInvalidPassword": "Неверный пароль", + "@errorInvalidPassword": { + "description": "Password field error" + }, + "errorInvalidEmail": "Неверный адрес эл. почты", + "@errorInvalidEmail": { + "description": "Email field error" + }, + "errorInvalidCode": "Неверный код", + "@errorInvalidCode": { + "description": "Verification code field error" + }, + "errorInvalidRecoveryCode": "Неверный код восстановления", + "@errorInvalidRecoveryCode": { + "description": "Recovery code field error" + }, + "errorInvalidUserCode": "Неверный код пользователя", + "@errorInvalidUserCode": { + "description": "User code field error" + }, + "errorPasswordMismatch": "Пароли не совпадают", + "@errorPasswordMismatch": { + "description": "Password confirmation field error" + }, + "errorAccountTemporarilyDisabled": "Учётная запись временно заблокирована. Обратитесь к администратору или повторите попытку позже.", + "@errorAccountTemporarilyDisabled": { + "description": "Account disabled error" + }, + "errorIncorrectCurrentPassword": "Неверный текущий пароль", + "@errorIncorrectCurrentPassword": { + "description": "Current password field error on account" + }, + "errorInvalidExistingPassword": "Неверный текущий пароль", + "@errorInvalidExistingPassword": { + "description": "Existing password invalid on account" + }, + "errorPleaseSpecifyPassword": "Пожалуйста, введите пароль", + "@errorPleaseSpecifyPassword": { + "description": "Password required validation message" + }, + "successPasswordChanged": "Пароль успешно изменён", + "@successPasswordChanged": { + "description": "Password change success message" + }, + "successMobileAuthenticatorConfigured": "Мобильный аутентификатор настроен", + "@successMobileAuthenticatorConfigured": { + "description": "TOTP/authenticator success message" + }, + "successAccountUpdated": "Ваша учётная запись обновлена", + "@successAccountUpdated": { + "description": "Account update success message" + }, + "errorAccountDisabled": "Учётная запись заблокирована, обратитесь к администратору.", + "errorUsernameExists": "Имя пользователя уже занято.", + "errorEmailExists": "Этот адрес эл. почты уже используется.", + "errorExpiredCode": "Время входа истекло. Пожалуйста, войдите снова.", + "errorExpiredAction": "Срок действия истёк. Пожалуйста, продолжите вход.", + "errorInvalidTotp": "Неверный код аутентификатора.", + "errorMissingTotp": "Пожалуйста, введите код аутентификатора.", + "errorConfigureTotp": "Для активации учётной записи необходимо настроить мобильный аутентификатор.", + "errorEmailSendError": "Не удалось отправить письмо. Пожалуйста, повторите попытку позже.", + "successPasswordUpdated": "Ваш пароль обновлён.", + "successEmailSent": "В ближайшее время Вы получите письмо с дальнейшими инструкциями.", + "pageTitleLogin": "Вход", + "pageTitleRegister": "Регистрация", + "pageTitleForgotPassword": "Восстановление пароля", + "pageTitleInfo": "Информация", + "pageTitleError": "Ошибка", + "pageTitlePageDisabled": "Страница отключена", + "@pageTitlePageDisabled": { + "description": "Title for disabled/error page" + }, + "pageTitleCode": "Код подтверждения", + "pageTitleLogoutConfirm": "Выход", + "pageTitleTerms": "Условия использования", + "pageTitleLoginOtp": "Код подтверждения", + "pageTitleUpdatePassword": "Изменение пароля", + "pageTitleEmailVerification": "Подтверждение эл. почты", + "pageTitleDeleteAccountConfirm": "Удаление учётной записи", + "pageTitleDeleteCredential": "Удаление учётных данных", + "pageTitleFrontchannelLogout": "Выход из системы", + "pageTitleIdpReviewProfile": "Обновление данных учётной записи", + "pageTitleLinkIdp": "Привязка поставщика удостоверений", + "pageTitleConfigTotp": "Настройка мобильного аутентификатора", + "pageTitleIdpLinkConfirm": "Привязка учётной записи", + "pageTitleIdpLinkConfirmOverride": "Замена привязки", + "pageTitleIdpLinkEmail": "Привязка учётной записи", + "pageTitleOauth2DeviceVerifyUserCode": "Вход с устройства", + "pageTitleOauthGrant": "Предоставление доступа", + "pageTitlePageExpired": "Срок действия страницы истёк", + "pageTitlePasskeysConditionalAuthenticate": "Вход с ключом доступа", + "pageTitleLoginPassword": "Вход", + "pageTitleRecoveryCodeConfig": "Коды восстановления", + "pageTitleRecoveryCodeInput": "Код восстановления", + "pageTitleResetOtp": "Сброс аутентификатора", + "pageTitleUpdateProfile": "Обновление данных учётной записи", + "pageTitleLoginUsername": "Вход", + "pageTitleX509Info": "Сертификат X.509", + "pageTitleSamlPostForm": "Перенаправление", + "pageTitleSelectAuthenticator": "Выбор способа аутентификации", + "pageTitleSelectOrganization": "Выбор организации", + "pageTitleUpdateEmail": "Изменение эл. почты", + "pageTitleWebauthnAuthenticate": "Вход с ключом доступа", + "pageTitleWebauthnError": "Ошибка ключа доступа", + "pageTitleWebauthnRegister": "Регистрация ключа доступа", + "pageTitleAccount": "Учётная запись", + "pageTitleAccountPassword": "Пароль", + "messageHeaderEmailVerification": "Подтверждение эл. почты", + "messageHeaderForgotPassword": "Забыли пароль?", + "messageHeaderEmailUpdateConfirmation": "Письмо с подтверждением отправлено", + "messageHeaderEmailUpdated": "Адрес эл. почты обновлён", + "messageHeaderUpdatePassword": "Изменение пароля", + "messageHeaderSuccessCode": "Код успеха", + "messageHeaderErrorCode": "Код ошибки", + "messageHeaderExecuteActions": "Необходимые действия" +} diff --git a/locales/tr-TR.arb b/locales/tr-TR.arb new file mode 100644 index 0000000..adf0aa8 --- /dev/null +++ b/locales/tr-TR.arb @@ -0,0 +1,522 @@ +{ + "@@locale": "tr-TR", + "helpwaveId": "helpwave id", + "@helpwaveId": { + "description": "Title for helpwave id badge" + }, + "nOrganization": "{count, plural, =1{# kuruluş} other{# kuruluş}}", + "@nOrganization": { + "placeholders": { + "count": { + "type": "number" + } + } + }, + "imprint": "Künye", + "@imprint": { + "description": "Link text for imprint" + }, + "privacy": "Gizlilik", + "@privacy": { + "description": "Link text for privacy policy" + }, + "forgotPassword": "Şifrenizi mi unuttunuz?", + "@forgotPassword": { + "description": "Link text for forgot password" + }, + "noAccount": "Hesabınız yok mu?", + "@noAccount": { + "description": "Text before register link" + }, + "register": "Kaydolun", + "@register": { + "description": "Register button text" + }, + "backToLogin": "Girişe dön", + "@backToLogin": { + "description": "Back to login link text" + }, + "usernameOrEmail": "Kullanıcı adı veya e-posta", + "@usernameOrEmail": { + "description": "Label for username or email input field" + }, + "username": "Kullanıcı adı", + "@username": { + "description": "Label for username input field" + }, + "password": "Şifre", + "@password": { + "description": "Label for password input field" + }, + "rememberMe": "Beni hatırla", + "@rememberMe": { + "description": "Label for remember me checkbox" + }, + "doLogIn": "Giriş yap", + "@doLogIn": { + "description": "Log in button text" + }, + "doForgotPassword": "Şifrenizi mi unuttunuz?", + "@doForgotPassword": { + "description": "Forgot password button text" + }, + "doRegister": "Kaydol", + "@doRegister": { + "description": "Register button text" + }, + "identity-provider-redirector": "Veya şununla giriş yapın", + "@identity-provider-redirector": { + "description": "Text before social login providers" + }, + "acceptTerms": "Kullanım koşullarını kabul ediyorum", + "@acceptTerms": { + "description": "Text for terms acceptance checkbox" + }, + "acceptPrivacy": "Okudum ve kabul ediyorum:", + "@acceptPrivacy": { + "description": "Privacy policy acceptance prefix" + }, + "privacyPolicy": "gizlilik politikası", + "@privacyPolicy": { + "description": "Privacy policy link text" + }, + "privacyRequired": "Devam etmek için gizlilik politikasını kabul etmeniz gerekir.", + "@privacyRequired": { + "description": "Error when privacy not accepted" + }, + "captchaFailed": "CAPTCHA doğrulaması başarısız oldu. Lütfen tekrar deneyin.", + "@captchaFailed": { + "description": "Error when captcha verification fails" + }, + "captchaLoading": "CAPTCHA yükleniyor…", + "@captchaLoading": { + "description": "Captcha loading placeholder" + }, + "realmBannerTeam": "Ekip çalışma alanı", + "@realmBannerTeam": { + "description": "Banner headline shown on every page of the team realm" + }, + "realmBannerAdmin": "Yönetici portalı", + "@realmBannerAdmin": { + "description": "Banner headline shown on every page of the admin/master realm" + }, + "realmBannerOther": "Dahili alan", + "@realmBannerOther": { + "description": "Banner headline shown on every page of a non-customer realm" + }, + "realmBannerSubtitleTeam": "Ayrıcalıklı bir ekip alanında oturum açıyorsunuz.", + "@realmBannerSubtitleTeam": { + "description": "Subtitle below the team realm banner" + }, + "realmBannerSubtitleAdmin": "Yönetici erişimi — her işlem denetim kaydına alınır.", + "@realmBannerSubtitleAdmin": { + "description": "Subtitle below the admin realm banner" + }, + "realmBannerSubtitleOther": "Bu, normal müşteri girişi değildir.", + "@realmBannerSubtitleOther": { + "description": "Subtitle below the fallback realm banner" + }, + "passwordNew": "Yeni şifre", + "@passwordNew": { + "description": "Label for new password input field" + }, + "passwordConfirm": "Şifre onayı", + "@passwordConfirm": { + "description": "Label for password confirmation input field" + }, + "doSubmit": "Gönder", + "@doSubmit": { + "description": "Submit button text" + }, + "otp": "Tek kullanımlık şifre", + "@otp": { + "description": "Label for OTP input field" + }, + "loginOtp": "Doğrulama kodu", + "@loginOtp": { + "description": "Label for login OTP/verification code input field" + }, + "termsText": "Kullanım koşulları metni", + "@termsText": { + "description": "Default terms and conditions text" + }, + "doAccept": "Kabul et", + "@doAccept": { + "description": "Accept button text" + }, + "doDecline": "Reddet", + "@doDecline": { + "description": "Decline button text" + }, + "logoutConfirmHeader": "Çıkış yapmak istediğinizden emin misiniz?", + "@logoutConfirmHeader": { + "description": "Logout confirmation message" + }, + "doLogout": "Çıkış yap", + "@doLogout": { + "description": "Logout button text" + }, + "doSave": "Kaydet", + "@doSave": { + "description": "Save button text" + }, + "doUpdate": "Güncelle", + "@doUpdate": { + "description": "Update button text for password form" + }, + "updatePassword": "Şifreyi güncelle", + "@updatePassword": { + "description": "Update password button text" + }, + "accountStatusActive": "Aktif", + "@accountStatusActive": { + "description": "Account status label when signed in" + }, + "profilePicture": "Profil fotoğrafı", + "@profilePicture": { + "description": "Profile picture section heading" + }, + "profilePictureComingSoon": "Profil fotoğrafı yükleme — yakında.", + "@profilePictureComingSoon": { + "description": "Placeholder for profile picture upload" + }, + "uploadProfilePicture": "Fotoğraf yükle", + "@uploadProfilePicture": { + "description": "Button to upload profile picture" + }, + "removeProfilePicture": "Fotoğrafı kaldır", + "@removeProfilePicture": { + "description": "Button to remove profile picture" + }, + "profilePictureUploading": "Yükleniyor…", + "@profilePictureUploading": { + "description": "Status while profile picture is being uploaded" + }, + "profilePictureUploadFailed": "Yükleme başarısız oldu. Lütfen tekrar deneyin.", + "@profilePictureUploadFailed": { + "description": "Error when profile picture upload fails" + }, + "profilePictureTooLarge": "Seçilen dosya 5 MB'tan büyük.", + "@profilePictureTooLarge": { + "description": "Error when picture exceeds size limit" + }, + "profilePictureWrongType": "Yalnızca JPEG, PNG veya WebP görselleri desteklenir.", + "@profilePictureWrongType": { + "description": "Error when picture has unsupported type" + }, + "profilePictureHelp": "JPEG, PNG veya WebP, en fazla 5 MB. Görsel ölçeklendirilir ve güvenli şekilde saklanır.", + "@profilePictureHelp": { + "description": "Helper text below upload button" + }, + "accountSectionProfile": "Profil", + "@accountSectionProfile": { + "description": "Account profile section title" + }, + "personalInfoTitle": "Kişisel bilgiler", + "@personalInfoTitle": { + "description": "Personal info section title" + }, + "passwordSectionTitle": "Şifreyi güncelle", + "@passwordSectionTitle": { + "description": "Password section title" + }, + "securitySectionTitle": "Güvenlik", + "@securitySectionTitle": { + "description": "Security section title" + }, + "dangerZoneTitle": "Tehlikeli bölge", + "@dangerZoneTitle": { + "description": "Danger zone section title" + }, + "doCancel": "İptal", + "@doCancel": { + "description": "Cancel button text" + }, + "backToApplication": "Uygulamaya dön", + "@backToApplication": { + "description": "Back to application button text" + }, + "backToAccount": "Hesaba dön", + "@backToAccount": { + "description": "Back to account button text in account console" + }, + "doContinue": "Devam et", + "@doContinue": { + "description": "Continue button text" + }, + "emailVerificationBody1": "Lütfen doğrulama bağlantısı için e-postanızı kontrol edin.", + "@emailVerificationBody1": { + "description": "Email verification instruction text" + }, + "emailVerificationBody": "Lütfen doğrulama bağlantısı için e-postanızı kontrol edin.", + "@emailVerificationBody": { + "description": "Email verification instruction text (alternative key)" + }, + "doClickHere": "Buraya tıklayın", + "@doClickHere": { + "description": "Click here button/link text" + }, + "doRestart": "Yeniden başlat", + "@doRestart": { + "description": "Restart button text" + }, + "sessionExpired": "Bağlantı için ayrılan süre doldu.\nGiriş işlemi baştan başlatılacak.", + "@sessionExpired": { + "description": "Session/timeout expired message" + }, + "deleteAccountConfirm": "Hesabınızı silmek istediğinizden emin misiniz?", + "@deleteAccountConfirm": { + "description": "Delete account confirmation message" + }, + "doDeleteAccount": "Hesabı sil", + "@doDeleteAccount": { + "description": "Delete account button text" + }, + "deleteCredentialConfirm": "Bu kimlik bilgisini silmek istediğinizden emin misiniz?", + "@deleteCredentialConfirm": { + "description": "Delete credential confirmation message" + }, + "doDelete": "Sil", + "@doDelete": { + "description": "Delete button text" + }, + "frontchannelLogoutMessage": "Çıkış yapılıyor…", + "@frontchannelLogoutMessage": { + "description": "Frontchannel logout message" + }, + "linkIdpMessage": "Kimlik sağlayıcı bağlanıyor…", + "@linkIdpMessage": { + "description": "Link identity provider message" + }, + "idpLinkConfirmMessage": "Bu kimlik sağlayıcıyı hesabınıza bağlamak istiyor musunuz?", + "@idpLinkConfirmMessage": { + "description": "IDP link confirmation message" + }, + "doLink": "Bağla", + "@doLink": { + "description": "Link button text" + }, + "idpLinkConfirmOverrideMessage": "Bu kimlik sağlayıcı zaten başka bir hesaba bağlı. Bağlantıyı değiştirmek istiyor musunuz?", + "@idpLinkConfirmOverrideMessage": { + "description": "IDP link override confirmation message" + }, + "doOverride": "Değiştir", + "@doOverride": { + "description": "Override button text" + }, + "email": "E-posta", + "@email": { + "description": "Label for email input field" + }, + "firstName": "Ad", + "@firstName": { + "description": "Label for first name input field" + }, + "lastName": "Soyad", + "@lastName": { + "description": "Label for last name input field" + }, + "oauthGrantTitle": "Erişim izni ver", + "@oauthGrantTitle": { + "description": "OAuth grant title" + }, + "oauthGrantMessage": "Uygulama hesabınıza erişim istiyor", + "@oauthGrantMessage": { + "description": "OAuth grant message" + }, + "oauthGrantScopes": "İstenen izinler", + "@oauthGrantScopes": { + "description": "OAuth grant scopes label" + }, + "pageExpiredMessage": "Bu sayfanın süresi doldu. Lütfen giriş işlemini yeniden başlatın.", + "@pageExpiredMessage": { + "description": "Page expired message" + }, + "passkeysConditionalAuthenticateMessage": "Geçiş anahtarıyla kimlik doğrulanıyor…", + "@passkeysConditionalAuthenticateMessage": { + "description": "Passkeys conditional authenticate message" + }, + "recoveryAuthnCodeConfigMessage": "Kurtarma kodlarınızı yapılandırın", + "@recoveryAuthnCodeConfigMessage": { + "description": "Recovery authentication code config message" + }, + "recoveryCode": "Kurtarma kodu", + "@recoveryCode": { + "description": "Label for recovery code input field" + }, + "resetOtpMessage": "Tek kullanımlık şifreniz (OTP) sıfırlandı. Lütfen yenisini yapılandırın.", + "@resetOtpMessage": { + "description": "Reset OTP message" + }, + "loginTotpScanBarcode": "Bu QR kodunu kimlik doğrulama uygulamanızla tarayın", + "@loginTotpScanBarcode": { + "description": "TOTP scan barcode instruction" + }, + "loginTotpOneTime": "Tek kullanımlık kod", + "@loginTotpOneTime": { + "description": "Label for TOTP one-time code input field" + }, + "samlPostFormMessage": "Kimlik sağlayıcıya yönlendiriliyor…", + "@samlPostFormMessage": { + "description": "SAML post form message" + }, + "selectAuthenticatorTitle": "Kimlik doğrulayıcı seçin", + "@selectAuthenticatorTitle": { + "description": "Select authenticator title" + }, + "selectOrganizationTitle": "Kuruluş seçin", + "@selectOrganizationTitle": { + "description": "Select organization title" + }, + "x509InfoTitle": "X.509 sertifika bilgileri", + "@x509InfoTitle": { + "description": "X.509 info title" + }, + "x509InfoMessage": "Lütfen X.509 sertifika bilgilerinizi girin", + "@x509InfoMessage": { + "description": "X.509 info message" + }, + "webauthnAuthenticateMessage": "Güvenlik anahtarınızla kimliğinizi doğrulayın", + "@webauthnAuthenticateMessage": { + "description": "WebAuthn authenticate message" + }, + "webauthnErrorMessage": "WebAuthn kimlik doğrulaması sırasında bir hata oluştu", + "@webauthnErrorMessage": { + "description": "WebAuthn error message" + }, + "webauthnRegisterMessage": "Güvenlik anahtarınızı kaydedin", + "@webauthnRegisterMessage": { + "description": "WebAuthn register message" + }, + "oauth2DeviceVerifyUserCodeMessage": "Cihazınızda görüntülenen kullanıcı kodunu girin", + "@oauth2DeviceVerifyUserCodeMessage": { + "description": "OAuth2 device verify user code message" + }, + "userCode": "Kullanıcı kodu", + "@userCode": { + "description": "Label for user code input field" + }, + "errorInvalidUsernameOrPassword": "Geçersiz kullanıcı adı veya şifre", + "@errorInvalidUsernameOrPassword": { + "description": "Login form field error" + }, + "errorInvalidUsername": "Geçersiz kullanıcı adı", + "@errorInvalidUsername": { + "description": "Username field error" + }, + "errorInvalidPassword": "Geçersiz şifre", + "@errorInvalidPassword": { + "description": "Password field error" + }, + "errorInvalidEmail": "Geçersiz e-posta", + "@errorInvalidEmail": { + "description": "Email field error" + }, + "errorInvalidCode": "Geçersiz kod", + "@errorInvalidCode": { + "description": "Verification code field error" + }, + "errorInvalidRecoveryCode": "Geçersiz kurtarma kodu", + "@errorInvalidRecoveryCode": { + "description": "Recovery code field error" + }, + "errorInvalidUserCode": "Geçersiz kullanıcı kodu", + "@errorInvalidUserCode": { + "description": "User code field error" + }, + "errorPasswordMismatch": "Şifreler eşleşmiyor", + "@errorPasswordMismatch": { + "description": "Password confirmation field error" + }, + "errorAccountTemporarilyDisabled": "Hesap geçici olarak devre dışı. Yöneticinize başvurun veya daha sonra tekrar deneyin.", + "@errorAccountTemporarilyDisabled": { + "description": "Account disabled error" + }, + "errorIncorrectCurrentPassword": "Mevcut şifre yanlış", + "@errorIncorrectCurrentPassword": { + "description": "Current password field error on account" + }, + "errorInvalidExistingPassword": "Geçersiz mevcut şifre", + "@errorInvalidExistingPassword": { + "description": "Existing password invalid on account" + }, + "errorPleaseSpecifyPassword": "Lütfen şifre girin", + "@errorPleaseSpecifyPassword": { + "description": "Password required validation message" + }, + "successPasswordChanged": "Şifre başarıyla değiştirildi", + "@successPasswordChanged": { + "description": "Password change success message" + }, + "successMobileAuthenticatorConfigured": "Mobil kimlik doğrulayıcı yapılandırıldı", + "@successMobileAuthenticatorConfigured": { + "description": "TOTP/authenticator success message" + }, + "successAccountUpdated": "Hesabınız güncellendi", + "@successAccountUpdated": { + "description": "Account update success message" + }, + "errorAccountDisabled": "Hesap devre dışı, yöneticinize başvurun.", + "errorUsernameExists": "Bu kullanıcı adı zaten mevcut.", + "errorEmailExists": "Bu e-posta adresi zaten kullanılıyor.", + "errorExpiredCode": "Giriş zaman aşımına uğradı. Lütfen tekrar giriş yapın.", + "errorExpiredAction": "İşlemin süresi doldu. Lütfen şimdi girişe devam edin.", + "errorInvalidTotp": "Geçersiz kimlik doğrulayıcı kodu.", + "errorMissingTotp": "Lütfen kimlik doğrulayıcı kodunu girin.", + "errorConfigureTotp": "Hesabınızı etkinleştirmek için mobil kimlik doğrulayıcıyı kurmanız gerekir.", + "errorEmailSendError": "E-posta gönderilemedi, lütfen daha sonra tekrar deneyin.", + "successPasswordUpdated": "Şifreniz güncellendi.", + "successEmailSent": "Kısa süre içinde ek talimatlar içeren bir e-posta alacaksınız.", + "pageTitleLogin": "Giriş yap", + "pageTitleRegister": "Kaydol", + "pageTitleForgotPassword": "Şifremi unuttum", + "pageTitleInfo": "Bilgi", + "pageTitleError": "Hata", + "pageTitlePageDisabled": "Sayfa devre dışı", + "@pageTitlePageDisabled": { + "description": "Title for disabled/error page" + }, + "pageTitleCode": "Doğrulama kodu", + "pageTitleLogoutConfirm": "Çıkış yap", + "pageTitleTerms": "Kullanım koşulları", + "pageTitleLoginOtp": "Doğrulama kodu", + "pageTitleUpdatePassword": "Şifreyi güncelle", + "pageTitleEmailVerification": "E-posta doğrulama", + "pageTitleDeleteAccountConfirm": "Hesabı sil", + "pageTitleDeleteCredential": "Kimlik bilgisini sil", + "pageTitleFrontchannelLogout": "Çıkış yapılıyor", + "pageTitleIdpReviewProfile": "Hesap bilgilerini güncelle", + "pageTitleLinkIdp": "Kimlik sağlayıcı bağla", + "pageTitleConfigTotp": "Mobil kimlik doğrulayıcı kurulumu", + "pageTitleIdpLinkConfirm": "Hesabı bağla", + "pageTitleIdpLinkConfirmOverride": "Bağlantıyı değiştir", + "pageTitleIdpLinkEmail": "Hesabı bağla", + "pageTitleOauth2DeviceVerifyUserCode": "Cihaz girişi", + "pageTitleOauthGrant": "Erişim izni ver", + "pageTitlePageExpired": "Sayfanın süresi doldu", + "pageTitlePasskeysConditionalAuthenticate": "Geçiş anahtarıyla giriş", + "pageTitleLoginPassword": "Giriş yap", + "pageTitleRecoveryCodeConfig": "Kurtarma kodları", + "pageTitleRecoveryCodeInput": "Kurtarma kodu", + "pageTitleResetOtp": "Kimlik doğrulayıcıyı sıfırla", + "pageTitleUpdateProfile": "Hesap bilgilerini güncelle", + "pageTitleLoginUsername": "Giriş yap", + "pageTitleX509Info": "X.509 sertifikası", + "pageTitleSamlPostForm": "Yönlendiriliyor", + "pageTitleSelectAuthenticator": "Kimlik doğrulayıcı seçin", + "pageTitleSelectOrganization": "Kuruluş seçin", + "pageTitleUpdateEmail": "E-postayı güncelle", + "pageTitleWebauthnAuthenticate": "Geçiş anahtarıyla giriş", + "pageTitleWebauthnError": "Geçiş anahtarı hatası", + "pageTitleWebauthnRegister": "Geçiş anahtarı kaydı", + "pageTitleAccount": "Hesap", + "pageTitleAccountPassword": "Şifre", + "messageHeaderEmailVerification": "E-posta doğrulama", + "messageHeaderForgotPassword": "Şifrenizi mi unuttunuz?", + "messageHeaderEmailUpdateConfirmation": "Onay e-postası gönderildi", + "messageHeaderEmailUpdated": "E-posta güncellendi", + "messageHeaderUpdatePassword": "Şifreyi güncelle", + "messageHeaderSuccessCode": "Başarı kodu", + "messageHeaderErrorCode": "Hata kodu", + "messageHeaderExecuteActions": "Gerekli işlemler" +} From 621235199e14da5859313082e8a5b8216b2fa754 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 13 Oct 2026 10:14:02 +0000 Subject: [PATCH 3/6] Add Portuguese (Brazil) and Romanian translations Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_018UdLmpCT1rJ39n1d22CkJn --- locales/pt-BR.arb | 522 +++++++++++++++++++++++++++++++++++++++ locales/ro-RO.arb | 522 +++++++++++++++++++++++++++++++++++++++ src/i18n/translations.ts | 369 ++++++++++++++++++++++++++- 3 files changed, 1410 insertions(+), 3 deletions(-) create mode 100644 locales/pt-BR.arb create mode 100644 locales/ro-RO.arb diff --git a/locales/pt-BR.arb b/locales/pt-BR.arb new file mode 100644 index 0000000..82d4be4 --- /dev/null +++ b/locales/pt-BR.arb @@ -0,0 +1,522 @@ +{ + "@@locale": "pt-BR", + "helpwaveId": "helpwave id", + "@helpwaveId": { + "description": "Title for helpwave id badge" + }, + "nOrganization": "{count, plural, =1{# organização} other{# organizações}}", + "@nOrganization": { + "placeholders": { + "count": { + "type": "number" + } + } + }, + "imprint": "Informações legais", + "@imprint": { + "description": "Link text for imprint" + }, + "privacy": "Privacidade", + "@privacy": { + "description": "Link text for privacy policy" + }, + "forgotPassword": "Esqueceu a senha?", + "@forgotPassword": { + "description": "Link text for forgot password" + }, + "noAccount": "Não tem uma conta?", + "@noAccount": { + "description": "Text before register link" + }, + "register": "Cadastrar-se", + "@register": { + "description": "Register button text" + }, + "backToLogin": "Voltar para o login", + "@backToLogin": { + "description": "Back to login link text" + }, + "usernameOrEmail": "Nome de usuário ou e-mail", + "@usernameOrEmail": { + "description": "Label for username or email input field" + }, + "username": "Nome de usuário", + "@username": { + "description": "Label for username input field" + }, + "password": "Senha", + "@password": { + "description": "Label for password input field" + }, + "rememberMe": "Lembrar de mim", + "@rememberMe": { + "description": "Label for remember me checkbox" + }, + "doLogIn": "Entrar", + "@doLogIn": { + "description": "Log in button text" + }, + "doForgotPassword": "Esqueceu a senha?", + "@doForgotPassword": { + "description": "Forgot password button text" + }, + "doRegister": "Cadastrar-se", + "@doRegister": { + "description": "Register button text" + }, + "identity-provider-redirector": "Ou entre com", + "@identity-provider-redirector": { + "description": "Text before social login providers" + }, + "acceptTerms": "Aceito os termos e condições", + "@acceptTerms": { + "description": "Text for terms acceptance checkbox" + }, + "acceptPrivacy": "Li e aceito a", + "@acceptPrivacy": { + "description": "Privacy policy acceptance prefix" + }, + "privacyPolicy": "política de privacidade", + "@privacyPolicy": { + "description": "Privacy policy link text" + }, + "privacyRequired": "Você precisa aceitar a política de privacidade para continuar.", + "@privacyRequired": { + "description": "Error when privacy not accepted" + }, + "captchaFailed": "Falha na verificação do captcha. Tente novamente.", + "@captchaFailed": { + "description": "Error when captcha verification fails" + }, + "captchaLoading": "Carregando captcha…", + "@captchaLoading": { + "description": "Captcha loading placeholder" + }, + "realmBannerTeam": "Área da equipe", + "@realmBannerTeam": { + "description": "Banner headline shown on every page of the team realm" + }, + "realmBannerAdmin": "Portal do administrador", + "@realmBannerAdmin": { + "description": "Banner headline shown on every page of the admin/master realm" + }, + "realmBannerOther": "Ambiente interno", + "@realmBannerOther": { + "description": "Banner headline shown on every page of a non-customer realm" + }, + "realmBannerSubtitleTeam": "Você está entrando em uma área restrita da equipe.", + "@realmBannerSubtitleTeam": { + "description": "Subtitle below the team realm banner" + }, + "realmBannerSubtitleAdmin": "Acesso administrativo — todas as ações são auditadas.", + "@realmBannerSubtitleAdmin": { + "description": "Subtitle below the admin realm banner" + }, + "realmBannerSubtitleOther": "Este não é o login regular de clientes.", + "@realmBannerSubtitleOther": { + "description": "Subtitle below the fallback realm banner" + }, + "passwordNew": "Nova senha", + "@passwordNew": { + "description": "Label for new password input field" + }, + "passwordConfirm": "Confirmação de senha", + "@passwordConfirm": { + "description": "Label for password confirmation input field" + }, + "doSubmit": "Enviar", + "@doSubmit": { + "description": "Submit button text" + }, + "otp": "Senha de uso único", + "@otp": { + "description": "Label for OTP input field" + }, + "loginOtp": "Código de verificação", + "@loginOtp": { + "description": "Label for login OTP/verification code input field" + }, + "termsText": "Texto dos termos e condições", + "@termsText": { + "description": "Default terms and conditions text" + }, + "doAccept": "Aceitar", + "@doAccept": { + "description": "Accept button text" + }, + "doDecline": "Recusar", + "@doDecline": { + "description": "Decline button text" + }, + "logoutConfirmHeader": "Tem certeza de que deseja sair?", + "@logoutConfirmHeader": { + "description": "Logout confirmation message" + }, + "doLogout": "Sair", + "@doLogout": { + "description": "Logout button text" + }, + "doSave": "Salvar", + "@doSave": { + "description": "Save button text" + }, + "doUpdate": "Atualizar", + "@doUpdate": { + "description": "Update button text for password form" + }, + "updatePassword": "Atualizar senha", + "@updatePassword": { + "description": "Update password button text" + }, + "accountStatusActive": "Ativo", + "@accountStatusActive": { + "description": "Account status label when signed in" + }, + "profilePicture": "Foto de perfil", + "@profilePicture": { + "description": "Profile picture section heading" + }, + "profilePictureComingSoon": "Envio de foto de perfil – em breve.", + "@profilePictureComingSoon": { + "description": "Placeholder for profile picture upload" + }, + "uploadProfilePicture": "Enviar foto", + "@uploadProfilePicture": { + "description": "Button to upload profile picture" + }, + "removeProfilePicture": "Remover foto", + "@removeProfilePicture": { + "description": "Button to remove profile picture" + }, + "profilePictureUploading": "Enviando…", + "@profilePictureUploading": { + "description": "Status while profile picture is being uploaded" + }, + "profilePictureUploadFailed": "Falha no envio. Tente novamente.", + "@profilePictureUploadFailed": { + "description": "Error when profile picture upload fails" + }, + "profilePictureTooLarge": "O arquivo selecionado tem mais de 5 MB.", + "@profilePictureTooLarge": { + "description": "Error when picture exceeds size limit" + }, + "profilePictureWrongType": "Somente imagens JPEG, PNG ou WebP são compatíveis.", + "@profilePictureWrongType": { + "description": "Error when picture has unsupported type" + }, + "profilePictureHelp": "JPEG, PNG ou WebP, máx. 5 MB. A imagem é redimensionada e armazenada com segurança.", + "@profilePictureHelp": { + "description": "Helper text below upload button" + }, + "accountSectionProfile": "Perfil", + "@accountSectionProfile": { + "description": "Account profile section title" + }, + "personalInfoTitle": "Informações pessoais", + "@personalInfoTitle": { + "description": "Personal info section title" + }, + "passwordSectionTitle": "Atualizar senha", + "@passwordSectionTitle": { + "description": "Password section title" + }, + "securitySectionTitle": "Segurança", + "@securitySectionTitle": { + "description": "Security section title" + }, + "dangerZoneTitle": "Zona de perigo", + "@dangerZoneTitle": { + "description": "Danger zone section title" + }, + "doCancel": "Cancelar", + "@doCancel": { + "description": "Cancel button text" + }, + "backToApplication": "Voltar para o aplicativo", + "@backToApplication": { + "description": "Back to application button text" + }, + "backToAccount": "Voltar para a conta", + "@backToAccount": { + "description": "Back to account button text in account console" + }, + "doContinue": "Continuar", + "@doContinue": { + "description": "Continue button text" + }, + "emailVerificationBody1": "Verifique seu e-mail para encontrar o link de verificação.", + "@emailVerificationBody1": { + "description": "Email verification instruction text" + }, + "emailVerificationBody": "Verifique seu e-mail para encontrar o link de verificação.", + "@emailVerificationBody": { + "description": "Email verification instruction text (alternative key)" + }, + "doClickHere": "Clique aqui", + "@doClickHere": { + "description": "Click here button/link text" + }, + "doRestart": "Reiniciar", + "@doRestart": { + "description": "Restart button text" + }, + "sessionExpired": "O tempo disponível para a conexão expirou.\nO processo de login será reiniciado desde o início.", + "@sessionExpired": { + "description": "Session/timeout expired message" + }, + "deleteAccountConfirm": "Tem certeza de que deseja excluir sua conta?", + "@deleteAccountConfirm": { + "description": "Delete account confirmation message" + }, + "doDeleteAccount": "Excluir conta", + "@doDeleteAccount": { + "description": "Delete account button text" + }, + "deleteCredentialConfirm": "Tem certeza de que deseja excluir esta credencial?", + "@deleteCredentialConfirm": { + "description": "Delete credential confirmation message" + }, + "doDelete": "Excluir", + "@doDelete": { + "description": "Delete button text" + }, + "frontchannelLogoutMessage": "Saindo...", + "@frontchannelLogoutMessage": { + "description": "Frontchannel logout message" + }, + "linkIdpMessage": "Vinculando provedor de identidade...", + "@linkIdpMessage": { + "description": "Link identity provider message" + }, + "idpLinkConfirmMessage": "Deseja vincular este provedor de identidade à sua conta?", + "@idpLinkConfirmMessage": { + "description": "IDP link confirmation message" + }, + "doLink": "Vincular", + "@doLink": { + "description": "Link button text" + }, + "idpLinkConfirmOverrideMessage": "Este provedor de identidade já está vinculado a outra conta. Deseja substituir o vínculo?", + "@idpLinkConfirmOverrideMessage": { + "description": "IDP link override confirmation message" + }, + "doOverride": "Substituir", + "@doOverride": { + "description": "Override button text" + }, + "email": "E-mail", + "@email": { + "description": "Label for email input field" + }, + "firstName": "Nome", + "@firstName": { + "description": "Label for first name input field" + }, + "lastName": "Sobrenome", + "@lastName": { + "description": "Label for last name input field" + }, + "oauthGrantTitle": "Conceder acesso", + "@oauthGrantTitle": { + "description": "OAuth grant title" + }, + "oauthGrantMessage": "O aplicativo solicita acesso à sua conta", + "@oauthGrantMessage": { + "description": "OAuth grant message" + }, + "oauthGrantScopes": "Escopos solicitados", + "@oauthGrantScopes": { + "description": "OAuth grant scopes label" + }, + "pageExpiredMessage": "Esta página expirou. Reinicie o processo de login.", + "@pageExpiredMessage": { + "description": "Page expired message" + }, + "passkeysConditionalAuthenticateMessage": "Autenticando com chave de acesso...", + "@passkeysConditionalAuthenticateMessage": { + "description": "Passkeys conditional authenticate message" + }, + "recoveryAuthnCodeConfigMessage": "Configure seu código de autenticação de recuperação", + "@recoveryAuthnCodeConfigMessage": { + "description": "Recovery authentication code config message" + }, + "recoveryCode": "Código de recuperação", + "@recoveryCode": { + "description": "Label for recovery code input field" + }, + "resetOtpMessage": "Seu OTP foi redefinido. Configure um novo.", + "@resetOtpMessage": { + "description": "Reset OTP message" + }, + "loginTotpScanBarcode": "Escaneie este QR code com seu aplicativo autenticador", + "@loginTotpScanBarcode": { + "description": "TOTP scan barcode instruction" + }, + "loginTotpOneTime": "Código de uso único", + "@loginTotpOneTime": { + "description": "Label for TOTP one-time code input field" + }, + "samlPostFormMessage": "Redirecionando para o provedor de identidade...", + "@samlPostFormMessage": { + "description": "SAML post form message" + }, + "selectAuthenticatorTitle": "Selecionar autenticador", + "@selectAuthenticatorTitle": { + "description": "Select authenticator title" + }, + "selectOrganizationTitle": "Selecionar organização", + "@selectOrganizationTitle": { + "description": "Select organization title" + }, + "x509InfoTitle": "Informações do certificado X.509", + "@x509InfoTitle": { + "description": "X.509 info title" + }, + "x509InfoMessage": "Informe os dados do seu certificado X.509", + "@x509InfoMessage": { + "description": "X.509 info message" + }, + "webauthnAuthenticateMessage": "Autentique-se com sua chave de segurança", + "@webauthnAuthenticateMessage": { + "description": "WebAuthn authenticate message" + }, + "webauthnErrorMessage": "Ocorreu um erro durante a autenticação WebAuthn", + "@webauthnErrorMessage": { + "description": "WebAuthn error message" + }, + "webauthnRegisterMessage": "Registre sua chave de segurança", + "@webauthnRegisterMessage": { + "description": "WebAuthn register message" + }, + "oauth2DeviceVerifyUserCodeMessage": "Insira o código de usuário exibido no seu dispositivo", + "@oauth2DeviceVerifyUserCodeMessage": { + "description": "OAuth2 device verify user code message" + }, + "userCode": "Código de usuário", + "@userCode": { + "description": "Label for user code input field" + }, + "errorInvalidUsernameOrPassword": "Nome de usuário ou senha inválidos", + "@errorInvalidUsernameOrPassword": { + "description": "Login form field error" + }, + "errorInvalidUsername": "Nome de usuário inválido", + "@errorInvalidUsername": { + "description": "Username field error" + }, + "errorInvalidPassword": "Senha inválida", + "@errorInvalidPassword": { + "description": "Password field error" + }, + "errorInvalidEmail": "E-mail inválido", + "@errorInvalidEmail": { + "description": "Email field error" + }, + "errorInvalidCode": "Código inválido", + "@errorInvalidCode": { + "description": "Verification code field error" + }, + "errorInvalidRecoveryCode": "Código de recuperação inválido", + "@errorInvalidRecoveryCode": { + "description": "Recovery code field error" + }, + "errorInvalidUserCode": "Código de usuário inválido", + "@errorInvalidUserCode": { + "description": "User code field error" + }, + "errorPasswordMismatch": "As senhas não coincidem", + "@errorPasswordMismatch": { + "description": "Password confirmation field error" + }, + "errorAccountTemporarilyDisabled": "A conta está temporariamente desativada. Entre em contato com o administrador ou tente novamente mais tarde.", + "@errorAccountTemporarilyDisabled": { + "description": "Account disabled error" + }, + "errorIncorrectCurrentPassword": "Senha atual incorreta", + "@errorIncorrectCurrentPassword": { + "description": "Current password field error on account" + }, + "errorInvalidExistingPassword": "Senha existente inválida", + "@errorInvalidExistingPassword": { + "description": "Existing password invalid on account" + }, + "errorPleaseSpecifyPassword": "Informe a senha", + "@errorPleaseSpecifyPassword": { + "description": "Password required validation message" + }, + "successPasswordChanged": "Senha alterada com sucesso", + "@successPasswordChanged": { + "description": "Password change success message" + }, + "successMobileAuthenticatorConfigured": "Autenticador móvel configurado", + "@successMobileAuthenticatorConfigured": { + "description": "TOTP/authenticator success message" + }, + "successAccountUpdated": "Sua conta foi atualizada", + "@successAccountUpdated": { + "description": "Account update success message" + }, + "errorAccountDisabled": "A conta está desativada. Entre em contato com o administrador.", + "errorUsernameExists": "Este nome de usuário já existe.", + "errorEmailExists": "Este e-mail já está em uso.", + "errorExpiredCode": "O tempo de login expirou. Entre novamente.", + "errorExpiredAction": "A ação expirou. Continue com o login agora.", + "errorInvalidTotp": "Código do autenticador inválido.", + "errorMissingTotp": "Informe o código do autenticador.", + "errorConfigureTotp": "Você precisa configurar o autenticador móvel para ativar sua conta.", + "errorEmailSendError": "Falha ao enviar o e-mail. Tente novamente mais tarde.", + "successPasswordUpdated": "Sua senha foi atualizada.", + "successEmailSent": "Você receberá em breve um e-mail com mais instruções.", + "pageTitleLogin": "Entrar", + "pageTitleRegister": "Cadastro", + "pageTitleForgotPassword": "Esqueci a senha", + "pageTitleInfo": "Informações", + "pageTitleError": "Erro", + "pageTitlePageDisabled": "Página desativada", + "@pageTitlePageDisabled": { + "description": "Title for disabled/error page" + }, + "pageTitleCode": "Código de verificação", + "pageTitleLogoutConfirm": "Sair", + "pageTitleTerms": "Termos e condições", + "pageTitleLoginOtp": "Código de verificação", + "pageTitleUpdatePassword": "Atualizar senha", + "pageTitleEmailVerification": "Verificação de e-mail", + "pageTitleDeleteAccountConfirm": "Excluir conta", + "pageTitleDeleteCredential": "Excluir credencial", + "pageTitleFrontchannelLogout": "Saindo", + "pageTitleIdpReviewProfile": "Atualizar informações da conta", + "pageTitleLinkIdp": "Vincular provedor de identidade", + "pageTitleConfigTotp": "Configuração do autenticador móvel", + "pageTitleIdpLinkConfirm": "Vincular conta", + "pageTitleIdpLinkConfirmOverride": "Substituir vínculo", + "pageTitleIdpLinkEmail": "Vincular conta", + "pageTitleOauth2DeviceVerifyUserCode": "Login no dispositivo", + "pageTitleOauthGrant": "Conceder acesso", + "pageTitlePageExpired": "Página expirada", + "pageTitlePasskeysConditionalAuthenticate": "Login com chave de acesso", + "pageTitleLoginPassword": "Entrar", + "pageTitleRecoveryCodeConfig": "Códigos de recuperação", + "pageTitleRecoveryCodeInput": "Código de recuperação", + "pageTitleResetOtp": "Redefinir autenticador", + "pageTitleUpdateProfile": "Atualizar informações da conta", + "pageTitleLoginUsername": "Entrar", + "pageTitleX509Info": "Certificado X.509", + "pageTitleSamlPostForm": "Redirecionando", + "pageTitleSelectAuthenticator": "Selecionar autenticador", + "pageTitleSelectOrganization": "Selecionar organização", + "pageTitleUpdateEmail": "Atualizar e-mail", + "pageTitleWebauthnAuthenticate": "Login com chave de acesso", + "pageTitleWebauthnError": "Erro na chave de acesso", + "pageTitleWebauthnRegister": "Registro de chave de acesso", + "pageTitleAccount": "Conta", + "pageTitleAccountPassword": "Senha", + "messageHeaderEmailVerification": "Verificação de e-mail", + "messageHeaderForgotPassword": "Esqueceu sua senha?", + "messageHeaderEmailUpdateConfirmation": "E-mail de confirmação enviado", + "messageHeaderEmailUpdated": "E-mail atualizado", + "messageHeaderUpdatePassword": "Atualizar senha", + "messageHeaderSuccessCode": "Código de sucesso", + "messageHeaderErrorCode": "Código de erro", + "messageHeaderExecuteActions": "Ações necessárias" +} diff --git a/locales/ro-RO.arb b/locales/ro-RO.arb new file mode 100644 index 0000000..6feed07 --- /dev/null +++ b/locales/ro-RO.arb @@ -0,0 +1,522 @@ +{ + "@@locale": "ro-RO", + "helpwaveId": "helpwave id", + "@helpwaveId": { + "description": "Title for helpwave id badge" + }, + "nOrganization": "{count, plural, =1{# organizație} few{# organizații} other{# de organizații}}", + "@nOrganization": { + "placeholders": { + "count": { + "type": "number" + } + } + }, + "imprint": "Informații legale", + "@imprint": { + "description": "Link text for imprint" + }, + "privacy": "Confidențialitate", + "@privacy": { + "description": "Link text for privacy policy" + }, + "forgotPassword": "Ați uitat parola?", + "@forgotPassword": { + "description": "Link text for forgot password" + }, + "noAccount": "Nu aveți cont?", + "@noAccount": { + "description": "Text before register link" + }, + "register": "Înregistrare", + "@register": { + "description": "Register button text" + }, + "backToLogin": "Înapoi la autentificare", + "@backToLogin": { + "description": "Back to login link text" + }, + "usernameOrEmail": "Nume de utilizator sau e-mail", + "@usernameOrEmail": { + "description": "Label for username or email input field" + }, + "username": "Nume de utilizator", + "@username": { + "description": "Label for username input field" + }, + "password": "Parolă", + "@password": { + "description": "Label for password input field" + }, + "rememberMe": "Ține-mă minte", + "@rememberMe": { + "description": "Label for remember me checkbox" + }, + "doLogIn": "Conectare", + "@doLogIn": { + "description": "Log in button text" + }, + "doForgotPassword": "Ați uitat parola?", + "@doForgotPassword": { + "description": "Forgot password button text" + }, + "doRegister": "Înregistrare", + "@doRegister": { + "description": "Register button text" + }, + "identity-provider-redirector": "Sau conectați-vă cu", + "@identity-provider-redirector": { + "description": "Text before social login providers" + }, + "acceptTerms": "Accept termenii și condițiile", + "@acceptTerms": { + "description": "Text for terms acceptance checkbox" + }, + "acceptPrivacy": "Am citit și accept", + "@acceptPrivacy": { + "description": "Privacy policy acceptance prefix" + }, + "privacyPolicy": "politica de confidențialitate", + "@privacyPolicy": { + "description": "Privacy policy link text" + }, + "privacyRequired": "Trebuie să acceptați politica de confidențialitate pentru a continua.", + "@privacyRequired": { + "description": "Error when privacy not accepted" + }, + "captchaFailed": "Verificarea captcha a eșuat. Vă rugăm să încercați din nou.", + "@captchaFailed": { + "description": "Error when captcha verification fails" + }, + "captchaLoading": "Se încarcă captcha…", + "@captchaLoading": { + "description": "Captcha loading placeholder" + }, + "realmBannerTeam": "Spațiu de lucru al echipei", + "@realmBannerTeam": { + "description": "Banner headline shown on every page of the team realm" + }, + "realmBannerAdmin": "Portal de administrare", + "@realmBannerAdmin": { + "description": "Banner headline shown on every page of the admin/master realm" + }, + "realmBannerOther": "Mediu intern", + "@realmBannerOther": { + "description": "Banner headline shown on every page of a non-customer realm" + }, + "realmBannerSubtitleTeam": "Vă conectați la o zonă privilegiată a echipei.", + "@realmBannerSubtitleTeam": { + "description": "Subtitle below the team realm banner" + }, + "realmBannerSubtitleAdmin": "Acces administrativ — fiecare acțiune este auditată.", + "@realmBannerSubtitleAdmin": { + "description": "Subtitle below the admin realm banner" + }, + "realmBannerSubtitleOther": "Aceasta nu este autentificarea obișnuită pentru clienți.", + "@realmBannerSubtitleOther": { + "description": "Subtitle below the fallback realm banner" + }, + "passwordNew": "Parolă nouă", + "@passwordNew": { + "description": "Label for new password input field" + }, + "passwordConfirm": "Confirmare parolă", + "@passwordConfirm": { + "description": "Label for password confirmation input field" + }, + "doSubmit": "Trimiteți", + "@doSubmit": { + "description": "Submit button text" + }, + "otp": "Parolă unică", + "@otp": { + "description": "Label for OTP input field" + }, + "loginOtp": "Cod de verificare", + "@loginOtp": { + "description": "Label for login OTP/verification code input field" + }, + "termsText": "Textul termenilor și condițiilor", + "@termsText": { + "description": "Default terms and conditions text" + }, + "doAccept": "Acceptați", + "@doAccept": { + "description": "Accept button text" + }, + "doDecline": "Refuzați", + "@doDecline": { + "description": "Decline button text" + }, + "logoutConfirmHeader": "Sigur doriți să vă deconectați?", + "@logoutConfirmHeader": { + "description": "Logout confirmation message" + }, + "doLogout": "Deconectare", + "@doLogout": { + "description": "Logout button text" + }, + "doSave": "Salvați", + "@doSave": { + "description": "Save button text" + }, + "doUpdate": "Actualizați", + "@doUpdate": { + "description": "Update button text for password form" + }, + "updatePassword": "Actualizați parola", + "@updatePassword": { + "description": "Update password button text" + }, + "accountStatusActive": "Activ", + "@accountStatusActive": { + "description": "Account status label when signed in" + }, + "profilePicture": "Fotografie de profil", + "@profilePicture": { + "description": "Profile picture section heading" + }, + "profilePictureComingSoon": "Încărcarea fotografiei de profil – în curând.", + "@profilePictureComingSoon": { + "description": "Placeholder for profile picture upload" + }, + "uploadProfilePicture": "Încărcați fotografia", + "@uploadProfilePicture": { + "description": "Button to upload profile picture" + }, + "removeProfilePicture": "Eliminați fotografia", + "@removeProfilePicture": { + "description": "Button to remove profile picture" + }, + "profilePictureUploading": "Se încarcă…", + "@profilePictureUploading": { + "description": "Status while profile picture is being uploaded" + }, + "profilePictureUploadFailed": "Încărcarea a eșuat. Vă rugăm să încercați din nou.", + "@profilePictureUploadFailed": { + "description": "Error when profile picture upload fails" + }, + "profilePictureTooLarge": "Fișierul selectat depășește 5 MB.", + "@profilePictureTooLarge": { + "description": "Error when picture exceeds size limit" + }, + "profilePictureWrongType": "Sunt acceptate doar imagini JPEG, PNG sau WebP.", + "@profilePictureWrongType": { + "description": "Error when picture has unsupported type" + }, + "profilePictureHelp": "JPEG, PNG sau WebP, max. 5 MB. Imaginea este redimensionată și stocată în siguranță.", + "@profilePictureHelp": { + "description": "Helper text below upload button" + }, + "accountSectionProfile": "Profil", + "@accountSectionProfile": { + "description": "Account profile section title" + }, + "personalInfoTitle": "Informații personale", + "@personalInfoTitle": { + "description": "Personal info section title" + }, + "passwordSectionTitle": "Actualizare parolă", + "@passwordSectionTitle": { + "description": "Password section title" + }, + "securitySectionTitle": "Securitate", + "@securitySectionTitle": { + "description": "Security section title" + }, + "dangerZoneTitle": "Zonă periculoasă", + "@dangerZoneTitle": { + "description": "Danger zone section title" + }, + "doCancel": "Anulați", + "@doCancel": { + "description": "Cancel button text" + }, + "backToApplication": "Înapoi la aplicație", + "@backToApplication": { + "description": "Back to application button text" + }, + "backToAccount": "Înapoi la cont", + "@backToAccount": { + "description": "Back to account button text in account console" + }, + "doContinue": "Continuați", + "@doContinue": { + "description": "Continue button text" + }, + "emailVerificationBody1": "Vă rugăm să verificați e-mailul pentru linkul de verificare.", + "@emailVerificationBody1": { + "description": "Email verification instruction text" + }, + "emailVerificationBody": "Vă rugăm să verificați e-mailul pentru linkul de verificare.", + "@emailVerificationBody": { + "description": "Email verification instruction text (alternative key)" + }, + "doClickHere": "Faceți clic aici", + "@doClickHere": { + "description": "Click here button/link text" + }, + "doRestart": "Reporniți", + "@doRestart": { + "description": "Restart button text" + }, + "sessionExpired": "Timpul alocat conexiunii a expirat.\nProcesul de autentificare va reîncepe de la început.", + "@sessionExpired": { + "description": "Session/timeout expired message" + }, + "deleteAccountConfirm": "Sigur doriți să vă ștergeți contul?", + "@deleteAccountConfirm": { + "description": "Delete account confirmation message" + }, + "doDeleteAccount": "Ștergeți contul", + "@doDeleteAccount": { + "description": "Delete account button text" + }, + "deleteCredentialConfirm": "Sigur doriți să ștergeți aceste date de autentificare?", + "@deleteCredentialConfirm": { + "description": "Delete credential confirmation message" + }, + "doDelete": "Ștergeți", + "@doDelete": { + "description": "Delete button text" + }, + "frontchannelLogoutMessage": "Deconectare în curs...", + "@frontchannelLogoutMessage": { + "description": "Frontchannel logout message" + }, + "linkIdpMessage": "Se asociază furnizorul de identitate...", + "@linkIdpMessage": { + "description": "Link identity provider message" + }, + "idpLinkConfirmMessage": "Doriți să asociați acest furnizor de identitate contului dumneavoastră?", + "@idpLinkConfirmMessage": { + "description": "IDP link confirmation message" + }, + "doLink": "Asociați", + "@doLink": { + "description": "Link button text" + }, + "idpLinkConfirmOverrideMessage": "Acest furnizor de identitate este deja asociat altui cont. Doriți să îl înlocuiți?", + "@idpLinkConfirmOverrideMessage": { + "description": "IDP link override confirmation message" + }, + "doOverride": "Înlocuiți", + "@doOverride": { + "description": "Override button text" + }, + "email": "E-mail", + "@email": { + "description": "Label for email input field" + }, + "firstName": "Prenume", + "@firstName": { + "description": "Label for first name input field" + }, + "lastName": "Nume", + "@lastName": { + "description": "Label for last name input field" + }, + "oauthGrantTitle": "Acordare acces", + "@oauthGrantTitle": { + "description": "OAuth grant title" + }, + "oauthGrantMessage": "Aplicația solicită acces la contul dumneavoastră", + "@oauthGrantMessage": { + "description": "OAuth grant message" + }, + "oauthGrantScopes": "Permisiuni solicitate", + "@oauthGrantScopes": { + "description": "OAuth grant scopes label" + }, + "pageExpiredMessage": "Această pagină a expirat. Vă rugăm să reporniți procesul de autentificare.", + "@pageExpiredMessage": { + "description": "Page expired message" + }, + "passkeysConditionalAuthenticateMessage": "Autentificare cu cheie de acces...", + "@passkeysConditionalAuthenticateMessage": { + "description": "Passkeys conditional authenticate message" + }, + "recoveryAuthnCodeConfigMessage": "Configurați codul de autentificare pentru recuperare", + "@recoveryAuthnCodeConfigMessage": { + "description": "Recovery authentication code config message" + }, + "recoveryCode": "Cod de recuperare", + "@recoveryCode": { + "description": "Label for recovery code input field" + }, + "resetOtpMessage": "Autentificatorul OTP a fost resetat. Vă rugăm să configurați unul nou.", + "@resetOtpMessage": { + "description": "Reset OTP message" + }, + "loginTotpScanBarcode": "Scanați acest cod QR cu aplicația de autentificare", + "@loginTotpScanBarcode": { + "description": "TOTP scan barcode instruction" + }, + "loginTotpOneTime": "Cod unic", + "@loginTotpOneTime": { + "description": "Label for TOTP one-time code input field" + }, + "samlPostFormMessage": "Redirecționare către furnizorul de identitate...", + "@samlPostFormMessage": { + "description": "SAML post form message" + }, + "selectAuthenticatorTitle": "Selectați autentificatorul", + "@selectAuthenticatorTitle": { + "description": "Select authenticator title" + }, + "selectOrganizationTitle": "Selectați organizația", + "@selectOrganizationTitle": { + "description": "Select organization title" + }, + "x509InfoTitle": "Informații despre certificatul X.509", + "@x509InfoTitle": { + "description": "X.509 info title" + }, + "x509InfoMessage": "Vă rugăm să furnizați informațiile certificatului X.509", + "@x509InfoMessage": { + "description": "X.509 info message" + }, + "webauthnAuthenticateMessage": "Autentificați-vă cu cheia de securitate", + "@webauthnAuthenticateMessage": { + "description": "WebAuthn authenticate message" + }, + "webauthnErrorMessage": "A apărut o eroare în timpul autentificării WebAuthn", + "@webauthnErrorMessage": { + "description": "WebAuthn error message" + }, + "webauthnRegisterMessage": "Înregistrați cheia de securitate", + "@webauthnRegisterMessage": { + "description": "WebAuthn register message" + }, + "oauth2DeviceVerifyUserCodeMessage": "Introduceți codul de utilizator afișat pe dispozitiv", + "@oauth2DeviceVerifyUserCodeMessage": { + "description": "OAuth2 device verify user code message" + }, + "userCode": "Cod de utilizator", + "@userCode": { + "description": "Label for user code input field" + }, + "errorInvalidUsernameOrPassword": "Nume de utilizator sau parolă nevalide", + "@errorInvalidUsernameOrPassword": { + "description": "Login form field error" + }, + "errorInvalidUsername": "Nume de utilizator nevalid", + "@errorInvalidUsername": { + "description": "Username field error" + }, + "errorInvalidPassword": "Parolă nevalidă", + "@errorInvalidPassword": { + "description": "Password field error" + }, + "errorInvalidEmail": "E-mail nevalid", + "@errorInvalidEmail": { + "description": "Email field error" + }, + "errorInvalidCode": "Cod nevalid", + "@errorInvalidCode": { + "description": "Verification code field error" + }, + "errorInvalidRecoveryCode": "Cod de recuperare nevalid", + "@errorInvalidRecoveryCode": { + "description": "Recovery code field error" + }, + "errorInvalidUserCode": "Cod de utilizator nevalid", + "@errorInvalidUserCode": { + "description": "User code field error" + }, + "errorPasswordMismatch": "Parolele nu coincid", + "@errorPasswordMismatch": { + "description": "Password confirmation field error" + }, + "errorAccountTemporarilyDisabled": "Contul este dezactivat temporar. Contactați administratorul sau încercați din nou mai târziu.", + "@errorAccountTemporarilyDisabled": { + "description": "Account disabled error" + }, + "errorIncorrectCurrentPassword": "Parola actuală este incorectă", + "@errorIncorrectCurrentPassword": { + "description": "Current password field error on account" + }, + "errorInvalidExistingPassword": "Parola existentă nu este validă", + "@errorInvalidExistingPassword": { + "description": "Existing password invalid on account" + }, + "errorPleaseSpecifyPassword": "Vă rugăm să introduceți parola", + "@errorPleaseSpecifyPassword": { + "description": "Password required validation message" + }, + "successPasswordChanged": "Parola a fost schimbată cu succes", + "@successPasswordChanged": { + "description": "Password change success message" + }, + "successMobileAuthenticatorConfigured": "Autentificatorul mobil a fost configurat", + "@successMobileAuthenticatorConfigured": { + "description": "TOTP/authenticator success message" + }, + "successAccountUpdated": "Contul dumneavoastră a fost actualizat", + "@successAccountUpdated": { + "description": "Account update success message" + }, + "errorAccountDisabled": "Contul este dezactivat. Contactați administratorul.", + "errorUsernameExists": "Numele de utilizator există deja.", + "errorEmailExists": "Adresa de e-mail există deja.", + "errorExpiredCode": "Sesiunea de autentificare a expirat. Vă rugăm să vă conectați din nou.", + "errorExpiredAction": "Acțiunea a expirat. Vă rugăm să continuați acum cu autentificarea.", + "errorInvalidTotp": "Cod de autentificare nevalid.", + "errorMissingTotp": "Vă rugăm să introduceți codul de autentificare.", + "errorConfigureTotp": "Trebuie să configurați autentificatorul mobil pentru a vă activa contul.", + "errorEmailSendError": "Trimiterea e-mailului a eșuat. Vă rugăm să încercați din nou mai târziu.", + "successPasswordUpdated": "Parola dumneavoastră a fost actualizată.", + "successEmailSent": "Veți primi în curând un e-mail cu instrucțiuni suplimentare.", + "pageTitleLogin": "Conectare", + "pageTitleRegister": "Înregistrare", + "pageTitleForgotPassword": "Parolă uitată", + "pageTitleInfo": "Informații", + "pageTitleError": "Eroare", + "pageTitlePageDisabled": "Pagină dezactivată", + "@pageTitlePageDisabled": { + "description": "Title for disabled/error page" + }, + "pageTitleCode": "Cod de verificare", + "pageTitleLogoutConfirm": "Deconectare", + "pageTitleTerms": "Termeni și condiții", + "pageTitleLoginOtp": "Cod de verificare", + "pageTitleUpdatePassword": "Actualizare parolă", + "pageTitleEmailVerification": "Verificare e-mail", + "pageTitleDeleteAccountConfirm": "Ștergere cont", + "pageTitleDeleteCredential": "Ștergere date de autentificare", + "pageTitleFrontchannelLogout": "Deconectare în curs", + "pageTitleIdpReviewProfile": "Actualizare informații cont", + "pageTitleLinkIdp": "Asociere furnizor de identitate", + "pageTitleConfigTotp": "Configurare autentificator mobil", + "pageTitleIdpLinkConfirm": "Asociere cont", + "pageTitleIdpLinkConfirmOverride": "Înlocuire asociere", + "pageTitleIdpLinkEmail": "Asociere cont", + "pageTitleOauth2DeviceVerifyUserCode": "Conectare dispozitiv", + "pageTitleOauthGrant": "Acordare acces", + "pageTitlePageExpired": "Pagină expirată", + "pageTitlePasskeysConditionalAuthenticate": "Conectare cu cheie de acces", + "pageTitleLoginPassword": "Conectare", + "pageTitleRecoveryCodeConfig": "Coduri de recuperare", + "pageTitleRecoveryCodeInput": "Cod de recuperare", + "pageTitleResetOtp": "Resetare autentificator", + "pageTitleUpdateProfile": "Actualizare informații cont", + "pageTitleLoginUsername": "Conectare", + "pageTitleX509Info": "Certificat X.509", + "pageTitleSamlPostForm": "Redirecționare", + "pageTitleSelectAuthenticator": "Selectare autentificator", + "pageTitleSelectOrganization": "Selectare organizație", + "pageTitleUpdateEmail": "Actualizare e-mail", + "pageTitleWebauthnAuthenticate": "Conectare cu cheie de acces", + "pageTitleWebauthnError": "Eroare cheie de acces", + "pageTitleWebauthnRegister": "Înregistrare cheie de acces", + "pageTitleAccount": "Cont", + "pageTitleAccountPassword": "Parolă", + "messageHeaderEmailVerification": "Verificare e-mail", + "messageHeaderForgotPassword": "Ați uitat parola?", + "messageHeaderEmailUpdateConfirmation": "E-mail de confirmare trimis", + "messageHeaderEmailUpdated": "E-mail actualizat", + "messageHeaderUpdatePassword": "Actualizare parolă", + "messageHeaderSuccessCode": "Cod de succes", + "messageHeaderErrorCode": "Cod de eroare", + "messageHeaderExecuteActions": "Acțiuni necesare" +} diff --git a/src/i18n/translations.ts b/src/i18n/translations.ts index 00ad997..bf1e133 100644 --- a/src/i18n/translations.ts +++ b/src/i18n/translations.ts @@ -5,7 +5,7 @@ import type { Translation } from '@helpwave/internationalization' import { TranslationGen } from '@helpwave/internationalization' -export const helpwaveIdTranslationLocales = ['de-DE', 'el-GR', 'en-US', 'es-ES', 'fr-FR', 'it-IT', 'nl-NL', 'pl-PL', 'ru-RU', 'tr-TR'] as const +export const helpwaveIdTranslationLocales = ['de-DE', 'el-GR', 'en-US', 'es-ES', 'fr-FR', 'it-IT', 'nl-NL', 'pl-PL', 'pt-BR', 'ro-RO', 'ru-RU', 'tr-TR'] as const export type HelpwaveIdTranslationLocales = typeof helpwaveIdTranslationLocales[number] @@ -388,7 +388,7 @@ Der Anmeldevorgang wird von vorne begonnen.`, 'doDelete': `Διαγραφή`, 'doDeleteAccount': `Διαγραφή λογαριασμού`, 'doForgotPassword': `Ξεχάσατε τον κωδικό πρόσβασης;`, - 'doLink': `Σύνδεση`, + 'doLink': `Συσχέτιση`, 'doLogIn': `Σύνδεση`, 'doLogout': `Αποσύνδεση`, 'doOverride': `Αντικατάσταση`, @@ -466,7 +466,7 @@ Der Anmeldevorgang wird von vorne begonnen.`, 'pageTitleError': `Σφάλμα`, 'pageTitleForgotPassword': `Ξεχάσατε τον κωδικό πρόσβασης`, 'pageTitleFrontchannelLogout': `Αποσύνδεση`, - 'pageTitleIdpLinkConfirm': `Σύνδεση λογαριασμού`, + 'pageTitleIdpLinkConfirm': `Συσχέτιση λογαριασμού`, 'pageTitleIdpLinkConfirmOverride': `Αντικατάσταση σύνδεσης`, 'pageTitleIdpLinkEmail': `Σύνδεση λογαριασμού`, 'pageTitleIdpReviewProfile': `Ενημέρωση στοιχείων λογαριασμού`, @@ -1616,6 +1616,369 @@ Proces logowania rozpocznie się od nowa.`, 'x509InfoMessage': `Podaj informacje o certyfikacie X.509`, 'x509InfoTitle': `Informacje o certyfikacie X.509` }, + 'pt-BR': { + 'acceptPrivacy': `Li e aceito a`, + 'acceptTerms': `Aceito os termos e condições`, + 'accountSectionProfile': `Perfil`, + 'accountStatusActive': `Ativo`, + 'backToAccount': `Voltar para a conta`, + 'backToApplication': `Voltar para o aplicativo`, + 'backToLogin': `Voltar para o login`, + 'captchaFailed': `Falha na verificação do captcha. Tente novamente.`, + 'captchaLoading': `Carregando captcha…`, + 'dangerZoneTitle': `Zona de perigo`, + 'deleteAccountConfirm': `Tem certeza de que deseja excluir sua conta?`, + 'deleteCredentialConfirm': `Tem certeza de que deseja excluir esta credencial?`, + 'doAccept': `Aceitar`, + 'doCancel': `Cancelar`, + 'doClickHere': `Clique aqui`, + 'doContinue': `Continuar`, + 'doDecline': `Recusar`, + 'doDelete': `Excluir`, + 'doDeleteAccount': `Excluir conta`, + 'doForgotPassword': `Esqueceu a senha?`, + 'doLink': `Vincular`, + 'doLogIn': `Entrar`, + 'doLogout': `Sair`, + 'doOverride': `Substituir`, + 'doRegister': `Cadastrar-se`, + 'doRestart': `Reiniciar`, + 'doSave': `Salvar`, + 'doSubmit': `Enviar`, + 'doUpdate': `Atualizar`, + 'email': `E-mail`, + 'emailVerificationBody': `Verifique seu e-mail para encontrar o link de verificação.`, + 'emailVerificationBody1': `Verifique seu e-mail para encontrar o link de verificação.`, + 'errorAccountDisabled': `A conta está desativada. Entre em contato com o administrador.`, + 'errorAccountTemporarilyDisabled': `A conta está temporariamente desativada. Entre em contato com o administrador ou tente novamente mais tarde.`, + 'errorConfigureTotp': `Você precisa configurar o autenticador móvel para ativar sua conta.`, + 'errorEmailExists': `Este e-mail já está em uso.`, + 'errorEmailSendError': `Falha ao enviar o e-mail. Tente novamente mais tarde.`, + 'errorExpiredAction': `A ação expirou. Continue com o login agora.`, + 'errorExpiredCode': `O tempo de login expirou. Entre novamente.`, + 'errorIncorrectCurrentPassword': `Senha atual incorreta`, + 'errorInvalidCode': `Código inválido`, + 'errorInvalidEmail': `E-mail inválido`, + 'errorInvalidExistingPassword': `Senha existente inválida`, + 'errorInvalidPassword': `Senha inválida`, + 'errorInvalidRecoveryCode': `Código de recuperação inválido`, + 'errorInvalidTotp': `Código do autenticador inválido.`, + 'errorInvalidUserCode': `Código de usuário inválido`, + 'errorInvalidUsername': `Nome de usuário inválido`, + 'errorInvalidUsernameOrPassword': `Nome de usuário ou senha inválidos`, + 'errorMissingTotp': `Informe o código do autenticador.`, + 'errorPasswordMismatch': `As senhas não coincidem`, + 'errorPleaseSpecifyPassword': `Informe a senha`, + 'errorUsernameExists': `Este nome de usuário já existe.`, + 'firstName': `Nome`, + 'forgotPassword': `Esqueceu a senha?`, + 'frontchannelLogoutMessage': `Saindo...`, + 'helpwaveId': `helpwave id`, + 'identity-provider-redirector': `Ou entre com`, + 'idpLinkConfirmMessage': `Deseja vincular este provedor de identidade à sua conta?`, + 'idpLinkConfirmOverrideMessage': `Este provedor de identidade já está vinculado a outra conta. Deseja substituir o vínculo?`, + 'imprint': `Informações legais`, + 'lastName': `Sobrenome`, + 'linkIdpMessage': `Vinculando provedor de identidade...`, + 'loginOtp': `Código de verificação`, + 'loginTotpOneTime': `Código de uso único`, + 'loginTotpScanBarcode': `Escaneie este QR code com seu aplicativo autenticador`, + 'logoutConfirmHeader': `Tem certeza de que deseja sair?`, + 'messageHeaderEmailUpdateConfirmation': `E-mail de confirmação enviado`, + 'messageHeaderEmailUpdated': `E-mail atualizado`, + 'messageHeaderEmailVerification': `Verificação de e-mail`, + 'messageHeaderErrorCode': `Código de erro`, + 'messageHeaderExecuteActions': `Ações necessárias`, + 'messageHeaderForgotPassword': `Esqueceu sua senha?`, + 'messageHeaderSuccessCode': `Código de sucesso`, + 'messageHeaderUpdatePassword': `Atualizar senha`, + 'noAccount': `Não tem uma conta?`, + 'nOrganization': ({ count }): string => { + return TranslationGen.resolvePlural(count, { + '=1': `${count} organização`, + 'other': `${count} organizações`, + }) + }, + 'oauth2DeviceVerifyUserCodeMessage': `Insira o código de usuário exibido no seu dispositivo`, + 'oauthGrantMessage': `O aplicativo solicita acesso à sua conta`, + 'oauthGrantScopes': `Escopos solicitados`, + 'oauthGrantTitle': `Conceder acesso`, + 'otp': `Senha de uso único`, + 'pageExpiredMessage': `Esta página expirou. Reinicie o processo de login.`, + 'pageTitleAccount': `Conta`, + 'pageTitleAccountPassword': `Senha`, + 'pageTitleCode': `Código de verificação`, + 'pageTitleConfigTotp': `Configuração do autenticador móvel`, + 'pageTitleDeleteAccountConfirm': `Excluir conta`, + 'pageTitleDeleteCredential': `Excluir credencial`, + 'pageTitleEmailVerification': `Verificação de e-mail`, + 'pageTitleError': `Erro`, + 'pageTitleForgotPassword': `Esqueci a senha`, + 'pageTitleFrontchannelLogout': `Saindo`, + 'pageTitleIdpLinkConfirm': `Vincular conta`, + 'pageTitleIdpLinkConfirmOverride': `Substituir vínculo`, + 'pageTitleIdpLinkEmail': `Vincular conta`, + 'pageTitleIdpReviewProfile': `Atualizar informações da conta`, + 'pageTitleInfo': `Informações`, + 'pageTitleLinkIdp': `Vincular provedor de identidade`, + 'pageTitleLogin': `Entrar`, + 'pageTitleLoginOtp': `Código de verificação`, + 'pageTitleLoginPassword': `Entrar`, + 'pageTitleLoginUsername': `Entrar`, + 'pageTitleLogoutConfirm': `Sair`, + 'pageTitleOauth2DeviceVerifyUserCode': `Login no dispositivo`, + 'pageTitleOauthGrant': `Conceder acesso`, + 'pageTitlePageDisabled': `Página desativada`, + 'pageTitlePageExpired': `Página expirada`, + 'pageTitlePasskeysConditionalAuthenticate': `Login com chave de acesso`, + 'pageTitleRecoveryCodeConfig': `Códigos de recuperação`, + 'pageTitleRecoveryCodeInput': `Código de recuperação`, + 'pageTitleRegister': `Cadastro`, + 'pageTitleResetOtp': `Redefinir autenticador`, + 'pageTitleSamlPostForm': `Redirecionando`, + 'pageTitleSelectAuthenticator': `Selecionar autenticador`, + 'pageTitleSelectOrganization': `Selecionar organização`, + 'pageTitleTerms': `Termos e condições`, + 'pageTitleUpdateEmail': `Atualizar e-mail`, + 'pageTitleUpdatePassword': `Atualizar senha`, + 'pageTitleUpdateProfile': `Atualizar informações da conta`, + 'pageTitleWebauthnAuthenticate': `Login com chave de acesso`, + 'pageTitleWebauthnError': `Erro na chave de acesso`, + 'pageTitleWebauthnRegister': `Registro de chave de acesso`, + 'pageTitleX509Info': `Certificado X.509`, + 'passkeysConditionalAuthenticateMessage': `Autenticando com chave de acesso...`, + 'password': `Senha`, + 'passwordConfirm': `Confirmação de senha`, + 'passwordNew': `Nova senha`, + 'passwordSectionTitle': `Atualizar senha`, + 'personalInfoTitle': `Informações pessoais`, + 'privacy': `Privacidade`, + 'privacyPolicy': `política de privacidade`, + 'privacyRequired': `Você precisa aceitar a política de privacidade para continuar.`, + 'profilePicture': `Foto de perfil`, + 'profilePictureComingSoon': `Envio de foto de perfil – em breve.`, + 'profilePictureHelp': `JPEG, PNG ou WebP, máx. 5 MB. A imagem é redimensionada e armazenada com segurança.`, + 'profilePictureTooLarge': `O arquivo selecionado tem mais de 5 MB.`, + 'profilePictureUploadFailed': `Falha no envio. Tente novamente.`, + 'profilePictureUploading': `Enviando…`, + 'profilePictureWrongType': `Somente imagens JPEG, PNG ou WebP são compatíveis.`, + 'realmBannerAdmin': `Portal do administrador`, + 'realmBannerOther': `Ambiente interno`, + 'realmBannerSubtitleAdmin': `Acesso administrativo — todas as ações são auditadas.`, + 'realmBannerSubtitleOther': `Este não é o login regular de clientes.`, + 'realmBannerSubtitleTeam': `Você está entrando em uma área restrita da equipe.`, + 'realmBannerTeam': `Área da equipe`, + 'recoveryAuthnCodeConfigMessage': `Configure seu código de autenticação de recuperação`, + 'recoveryCode': `Código de recuperação`, + 'register': `Cadastrar-se`, + 'rememberMe': `Lembrar de mim`, + 'removeProfilePicture': `Remover foto`, + 'resetOtpMessage': `Seu OTP foi redefinido. Configure um novo.`, + 'samlPostFormMessage': `Redirecionando para o provedor de identidade...`, + 'securitySectionTitle': `Segurança`, + 'selectAuthenticatorTitle': `Selecionar autenticador`, + 'selectOrganizationTitle': `Selecionar organização`, + 'sessionExpired': `O tempo disponível para a conexão expirou. +O processo de login será reiniciado desde o início.`, + 'successAccountUpdated': `Sua conta foi atualizada`, + 'successEmailSent': `Você receberá em breve um e-mail com mais instruções.`, + 'successMobileAuthenticatorConfigured': `Autenticador móvel configurado`, + 'successPasswordChanged': `Senha alterada com sucesso`, + 'successPasswordUpdated': `Sua senha foi atualizada.`, + 'termsText': `Texto dos termos e condições`, + 'updatePassword': `Atualizar senha`, + 'uploadProfilePicture': `Enviar foto`, + 'userCode': `Código de usuário`, + 'username': `Nome de usuário`, + 'usernameOrEmail': `Nome de usuário ou e-mail`, + 'webauthnAuthenticateMessage': `Autentique-se com sua chave de segurança`, + 'webauthnErrorMessage': `Ocorreu um erro durante a autenticação WebAuthn`, + 'webauthnRegisterMessage': `Registre sua chave de segurança`, + 'x509InfoMessage': `Informe os dados do seu certificado X.509`, + 'x509InfoTitle': `Informações do certificado X.509` + }, + 'ro-RO': { + 'acceptPrivacy': `Am citit și accept`, + 'acceptTerms': `Accept termenii și condițiile`, + 'accountSectionProfile': `Profil`, + 'accountStatusActive': `Activ`, + 'backToAccount': `Înapoi la cont`, + 'backToApplication': `Înapoi la aplicație`, + 'backToLogin': `Înapoi la autentificare`, + 'captchaFailed': `Verificarea captcha a eșuat. Vă rugăm să încercați din nou.`, + 'captchaLoading': `Se încarcă captcha…`, + 'dangerZoneTitle': `Zonă periculoasă`, + 'deleteAccountConfirm': `Sigur doriți să vă ștergeți contul?`, + 'deleteCredentialConfirm': `Sigur doriți să ștergeți aceste date de autentificare?`, + 'doAccept': `Acceptați`, + 'doCancel': `Anulați`, + 'doClickHere': `Faceți clic aici`, + 'doContinue': `Continuați`, + 'doDecline': `Refuzați`, + 'doDelete': `Ștergeți`, + 'doDeleteAccount': `Ștergeți contul`, + 'doForgotPassword': `Ați uitat parola?`, + 'doLink': `Asociați`, + 'doLogIn': `Conectare`, + 'doLogout': `Deconectare`, + 'doOverride': `Înlocuiți`, + 'doRegister': `Înregistrare`, + 'doRestart': `Reporniți`, + 'doSave': `Salvați`, + 'doSubmit': `Trimiteți`, + 'doUpdate': `Actualizați`, + 'email': `E-mail`, + 'emailVerificationBody': `Vă rugăm să verificați e-mailul pentru linkul de verificare.`, + 'emailVerificationBody1': `Vă rugăm să verificați e-mailul pentru linkul de verificare.`, + 'errorAccountDisabled': `Contul este dezactivat. Contactați administratorul.`, + 'errorAccountTemporarilyDisabled': `Contul este dezactivat temporar. Contactați administratorul sau încercați din nou mai târziu.`, + 'errorConfigureTotp': `Trebuie să configurați autentificatorul mobil pentru a vă activa contul.`, + 'errorEmailExists': `Adresa de e-mail există deja.`, + 'errorEmailSendError': `Trimiterea e-mailului a eșuat. Vă rugăm să încercați din nou mai târziu.`, + 'errorExpiredAction': `Acțiunea a expirat. Vă rugăm să continuați acum cu autentificarea.`, + 'errorExpiredCode': `Sesiunea de autentificare a expirat. Vă rugăm să vă conectați din nou.`, + 'errorIncorrectCurrentPassword': `Parola actuală este incorectă`, + 'errorInvalidCode': `Cod nevalid`, + 'errorInvalidEmail': `E-mail nevalid`, + 'errorInvalidExistingPassword': `Parola existentă nu este validă`, + 'errorInvalidPassword': `Parolă nevalidă`, + 'errorInvalidRecoveryCode': `Cod de recuperare nevalid`, + 'errorInvalidTotp': `Cod de autentificare nevalid.`, + 'errorInvalidUserCode': `Cod de utilizator nevalid`, + 'errorInvalidUsername': `Nume de utilizator nevalid`, + 'errorInvalidUsernameOrPassword': `Nume de utilizator sau parolă nevalide`, + 'errorMissingTotp': `Vă rugăm să introduceți codul de autentificare.`, + 'errorPasswordMismatch': `Parolele nu coincid`, + 'errorPleaseSpecifyPassword': `Vă rugăm să introduceți parola`, + 'errorUsernameExists': `Numele de utilizator există deja.`, + 'firstName': `Prenume`, + 'forgotPassword': `Ați uitat parola?`, + 'frontchannelLogoutMessage': `Deconectare în curs...`, + 'helpwaveId': `helpwave id`, + 'identity-provider-redirector': `Sau conectați-vă cu`, + 'idpLinkConfirmMessage': `Doriți să asociați acest furnizor de identitate contului dumneavoastră?`, + 'idpLinkConfirmOverrideMessage': `Acest furnizor de identitate este deja asociat altui cont. Doriți să îl înlocuiți?`, + 'imprint': `Informații legale`, + 'lastName': `Nume`, + 'linkIdpMessage': `Se asociază furnizorul de identitate...`, + 'loginOtp': `Cod de verificare`, + 'loginTotpOneTime': `Cod unic`, + 'loginTotpScanBarcode': `Scanați acest cod QR cu aplicația de autentificare`, + 'logoutConfirmHeader': `Sigur doriți să vă deconectați?`, + 'messageHeaderEmailUpdateConfirmation': `E-mail de confirmare trimis`, + 'messageHeaderEmailUpdated': `E-mail actualizat`, + 'messageHeaderEmailVerification': `Verificare e-mail`, + 'messageHeaderErrorCode': `Cod de eroare`, + 'messageHeaderExecuteActions': `Acțiuni necesare`, + 'messageHeaderForgotPassword': `Ați uitat parola?`, + 'messageHeaderSuccessCode': `Cod de succes`, + 'messageHeaderUpdatePassword': `Actualizare parolă`, + 'noAccount': `Nu aveți cont?`, + 'nOrganization': ({ count }): string => { + return TranslationGen.resolvePlural(count, { + '=1': `${count} organizație`, + 'few': `${count} organizații`, + 'other': `${count} de organizații`, + }) + }, + 'oauth2DeviceVerifyUserCodeMessage': `Introduceți codul de utilizator afișat pe dispozitiv`, + 'oauthGrantMessage': `Aplicația solicită acces la contul dumneavoastră`, + 'oauthGrantScopes': `Permisiuni solicitate`, + 'oauthGrantTitle': `Acordare acces`, + 'otp': `Parolă unică`, + 'pageExpiredMessage': `Această pagină a expirat. Vă rugăm să reporniți procesul de autentificare.`, + 'pageTitleAccount': `Cont`, + 'pageTitleAccountPassword': `Parolă`, + 'pageTitleCode': `Cod de verificare`, + 'pageTitleConfigTotp': `Configurare autentificator mobil`, + 'pageTitleDeleteAccountConfirm': `Ștergere cont`, + 'pageTitleDeleteCredential': `Ștergere date de autentificare`, + 'pageTitleEmailVerification': `Verificare e-mail`, + 'pageTitleError': `Eroare`, + 'pageTitleForgotPassword': `Parolă uitată`, + 'pageTitleFrontchannelLogout': `Deconectare în curs`, + 'pageTitleIdpLinkConfirm': `Asociere cont`, + 'pageTitleIdpLinkConfirmOverride': `Înlocuire asociere`, + 'pageTitleIdpLinkEmail': `Asociere cont`, + 'pageTitleIdpReviewProfile': `Actualizare informații cont`, + 'pageTitleInfo': `Informații`, + 'pageTitleLinkIdp': `Asociere furnizor de identitate`, + 'pageTitleLogin': `Conectare`, + 'pageTitleLoginOtp': `Cod de verificare`, + 'pageTitleLoginPassword': `Conectare`, + 'pageTitleLoginUsername': `Conectare`, + 'pageTitleLogoutConfirm': `Deconectare`, + 'pageTitleOauth2DeviceVerifyUserCode': `Conectare dispozitiv`, + 'pageTitleOauthGrant': `Acordare acces`, + 'pageTitlePageDisabled': `Pagină dezactivată`, + 'pageTitlePageExpired': `Pagină expirată`, + 'pageTitlePasskeysConditionalAuthenticate': `Conectare cu cheie de acces`, + 'pageTitleRecoveryCodeConfig': `Coduri de recuperare`, + 'pageTitleRecoveryCodeInput': `Cod de recuperare`, + 'pageTitleRegister': `Înregistrare`, + 'pageTitleResetOtp': `Resetare autentificator`, + 'pageTitleSamlPostForm': `Redirecționare`, + 'pageTitleSelectAuthenticator': `Selectare autentificator`, + 'pageTitleSelectOrganization': `Selectare organizație`, + 'pageTitleTerms': `Termeni și condiții`, + 'pageTitleUpdateEmail': `Actualizare e-mail`, + 'pageTitleUpdatePassword': `Actualizare parolă`, + 'pageTitleUpdateProfile': `Actualizare informații cont`, + 'pageTitleWebauthnAuthenticate': `Conectare cu cheie de acces`, + 'pageTitleWebauthnError': `Eroare cheie de acces`, + 'pageTitleWebauthnRegister': `Înregistrare cheie de acces`, + 'pageTitleX509Info': `Certificat X.509`, + 'passkeysConditionalAuthenticateMessage': `Autentificare cu cheie de acces...`, + 'password': `Parolă`, + 'passwordConfirm': `Confirmare parolă`, + 'passwordNew': `Parolă nouă`, + 'passwordSectionTitle': `Actualizare parolă`, + 'personalInfoTitle': `Informații personale`, + 'privacy': `Confidențialitate`, + 'privacyPolicy': `politica de confidențialitate`, + 'privacyRequired': `Trebuie să acceptați politica de confidențialitate pentru a continua.`, + 'profilePicture': `Fotografie de profil`, + 'profilePictureComingSoon': `Încărcarea fotografiei de profil – în curând.`, + 'profilePictureHelp': `JPEG, PNG sau WebP, max. 5 MB. Imaginea este redimensionată și stocată în siguranță.`, + 'profilePictureTooLarge': `Fișierul selectat depășește 5 MB.`, + 'profilePictureUploadFailed': `Încărcarea a eșuat. Vă rugăm să încercați din nou.`, + 'profilePictureUploading': `Se încarcă…`, + 'profilePictureWrongType': `Sunt acceptate doar imagini JPEG, PNG sau WebP.`, + 'realmBannerAdmin': `Portal de administrare`, + 'realmBannerOther': `Mediu intern`, + 'realmBannerSubtitleAdmin': `Acces administrativ — fiecare acțiune este auditată.`, + 'realmBannerSubtitleOther': `Aceasta nu este autentificarea obișnuită pentru clienți.`, + 'realmBannerSubtitleTeam': `Vă conectați la o zonă privilegiată a echipei.`, + 'realmBannerTeam': `Spațiu de lucru al echipei`, + 'recoveryAuthnCodeConfigMessage': `Configurați codul de autentificare pentru recuperare`, + 'recoveryCode': `Cod de recuperare`, + 'register': `Înregistrare`, + 'rememberMe': `Ține-mă minte`, + 'removeProfilePicture': `Eliminați fotografia`, + 'resetOtpMessage': `Autentificatorul OTP a fost resetat. Vă rugăm să configurați unul nou.`, + 'samlPostFormMessage': `Redirecționare către furnizorul de identitate...`, + 'securitySectionTitle': `Securitate`, + 'selectAuthenticatorTitle': `Selectați autentificatorul`, + 'selectOrganizationTitle': `Selectați organizația`, + 'sessionExpired': `Timpul alocat conexiunii a expirat. +Procesul de autentificare va reîncepe de la început.`, + 'successAccountUpdated': `Contul dumneavoastră a fost actualizat`, + 'successEmailSent': `Veți primi în curând un e-mail cu instrucțiuni suplimentare.`, + 'successMobileAuthenticatorConfigured': `Autentificatorul mobil a fost configurat`, + 'successPasswordChanged': `Parola a fost schimbată cu succes`, + 'successPasswordUpdated': `Parola dumneavoastră a fost actualizată.`, + 'termsText': `Textul termenilor și condițiilor`, + 'updatePassword': `Actualizați parola`, + 'uploadProfilePicture': `Încărcați fotografia`, + 'userCode': `Cod de utilizator`, + 'username': `Nume de utilizator`, + 'usernameOrEmail': `Nume de utilizator sau e-mail`, + 'webauthnAuthenticateMessage': `Autentificați-vă cu cheia de securitate`, + 'webauthnErrorMessage': `A apărut o eroare în timpul autentificării WebAuthn`, + 'webauthnRegisterMessage': `Înregistrați cheia de securitate`, + 'x509InfoMessage': `Vă rugăm să furnizați informațiile certificatului X.509`, + 'x509InfoTitle': `Informații despre certificatul X.509` + }, 'ru-RU': { 'acceptPrivacy': `Я прочитал(а) и принимаю`, 'acceptTerms': `Я принимаю условия использования`, From f08d92d91f10f08ff603f4e6b6024aee71692491 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 13 Oct 2026 10:20:20 +0000 Subject: [PATCH 4/6] Fix Italian/Turkish strings dropped by the ICU compiler and plural forms ASCII apostrophes are ICU quote characters and caused 23 messages to be dropped or mangled (e.g. {{it-IT:backToAccount}}). Use typographic apostrophes instead and fail check-translations on ASCII apostrophes. The plural resolver only knows =0/=1/=2/few/many/other, so replace the unsupported 'one' category in Russian and align Polish/Romanian. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_018UdLmpCT1rJ39n1d22CkJn --- locales/it-IT.arb | 44 +++++++++++++++--------------- locales/pl-PL.arb | 2 +- locales/ro-RO.arb | 2 +- locales/ru-RU.arb | 2 +- locales/tr-TR.arb | 2 +- scripts/check-translation-keys.mjs | 26 ++++++++++++++++++ src/i18n/translations.ts | 33 ++++++++++++++++++---- 7 files changed, 80 insertions(+), 31 deletions(-) diff --git a/locales/it-IT.arb b/locales/it-IT.arb index 85e1cef..6898211 100644 --- a/locales/it-IT.arb +++ b/locales/it-IT.arb @@ -32,7 +32,7 @@ "@register": { "description": "Register button text" }, - "backToLogin": "Torna all'accesso", + "backToLogin": "Torna all’accesso", "@backToLogin": { "description": "Back to login link text" }, @@ -80,7 +80,7 @@ "@privacyPolicy": { "description": "Privacy policy link text" }, - "privacyRequired": "Per continuare deve accettare l'informativa sulla privacy.", + "privacyRequired": "Per continuare deve accettare l’informativa sulla privacy.", "@privacyRequired": { "description": "Error when privacy not accepted" }, @@ -104,7 +104,7 @@ "@realmBannerOther": { "description": "Banner headline shown on every page of a non-customer realm" }, - "realmBannerSubtitleTeam": "Sta accedendo a un'area del team con privilegi elevati.", + "realmBannerSubtitleTeam": "Sta accedendo a un’area del team con privilegi elevati.", "@realmBannerSubtitleTeam": { "description": "Subtitle below the team realm banner" }, @@ -112,7 +112,7 @@ "@realmBannerSubtitleAdmin": { "description": "Subtitle below the admin realm banner" }, - "realmBannerSubtitleOther": "Questo non è l'accesso standard per i clienti.", + "realmBannerSubtitleOther": "Questo non è l’accesso standard per i clienti.", "@realmBannerSubtitleOther": { "description": "Subtitle below the fallback realm banner" }, @@ -176,7 +176,7 @@ "@profilePicture": { "description": "Profile picture section heading" }, - "profilePictureComingSoon": "Caricamento dell'immagine del profilo – presto disponibile.", + "profilePictureComingSoon": "Caricamento dell’immagine del profilo – presto disponibile.", "@profilePictureComingSoon": { "description": "Placeholder for profile picture upload" }, @@ -204,7 +204,7 @@ "@profilePictureWrongType": { "description": "Error when picture has unsupported type" }, - "profilePictureHelp": "JPEG, PNG o WebP, max. 5 MB. L'immagine viene ridimensionata e archiviata in modo sicuro.", + "profilePictureHelp": "JPEG, PNG o WebP, max. 5 MB. L’immagine viene ridimensionata e archiviata in modo sicuro.", "@profilePictureHelp": { "description": "Helper text below upload button" }, @@ -232,11 +232,11 @@ "@doCancel": { "description": "Cancel button text" }, - "backToApplication": "Torna all'applicazione", + "backToApplication": "Torna all’applicazione", "@backToApplication": { "description": "Back to application button text" }, - "backToAccount": "Torna all'account", + "backToAccount": "Torna all’account", "@backToAccount": { "description": "Back to account button text in account console" }, @@ -260,7 +260,7 @@ "@doRestart": { "description": "Restart button text" }, - "sessionExpired": "Il tempo previsto per la connessione è scaduto.\nLa procedura di accesso ricomincerà dall'inizio.", + "sessionExpired": "Il tempo previsto per la connessione è scaduto.\nLa procedura di accesso ricomincerà dall’inizio.", "@sessionExpired": { "description": "Session/timeout expired message" }, @@ -320,7 +320,7 @@ "@oauthGrantTitle": { "description": "OAuth grant title" }, - "oauthGrantMessage": "L'applicazione richiede l'accesso al Suo account", + "oauthGrantMessage": "L’applicazione richiede l’accesso al Suo account", "@oauthGrantMessage": { "description": "OAuth grant message" }, @@ -336,7 +336,7 @@ "@passkeysConditionalAuthenticateMessage": { "description": "Passkeys conditional authenticate message" }, - "recoveryAuthnCodeConfigMessage": "Configuri il Suo codice di recupero per l'autenticazione", + "recoveryAuthnCodeConfigMessage": "Configuri il Suo codice di recupero per l’autenticazione", "@recoveryAuthnCodeConfigMessage": { "description": "Recovery authentication code config message" }, @@ -380,7 +380,7 @@ "@webauthnAuthenticateMessage": { "description": "WebAuthn authenticate message" }, - "webauthnErrorMessage": "Si è verificato un errore durante l'autenticazione WebAuthn", + "webauthnErrorMessage": "Si è verificato un errore durante l’autenticazione WebAuthn", "@webauthnErrorMessage": { "description": "WebAuthn error message" }, @@ -428,7 +428,7 @@ "@errorPasswordMismatch": { "description": "Password confirmation field error" }, - "errorAccountTemporarilyDisabled": "L'account è temporaneamente disattivato. Contatti l'amministratore o riprovi più tardi.", + "errorAccountTemporarilyDisabled": "L’account è temporaneamente disattivato. Contatti l’amministratore o riprovi più tardi.", "@errorAccountTemporarilyDisabled": { "description": "Account disabled error" }, @@ -456,17 +456,17 @@ "@successAccountUpdated": { "description": "Account update success message" }, - "errorAccountDisabled": "L'account è disattivato. Contatti l'amministratore.", + "errorAccountDisabled": "L’account è disattivato. Contatti l’amministratore.", "errorUsernameExists": "Il nome utente esiste già.", - "errorEmailExists": "L'indirizzo e-mail esiste già.", - "errorExpiredCode": "Accesso scaduto. Effettui di nuovo l'accesso.", - "errorExpiredAction": "Azione scaduta. Prosegua ora con l'accesso.", + "errorEmailExists": "L’indirizzo e-mail esiste già.", + "errorExpiredCode": "Accesso scaduto. Effettui di nuovo l’accesso.", + "errorExpiredAction": "Azione scaduta. Prosegua ora con l’accesso.", "errorInvalidTotp": "Codice di autenticazione non valido.", "errorMissingTotp": "Inserisca il codice di autenticazione.", - "errorConfigureTotp": "Per attivare l'account deve configurare un autenticatore mobile.", - "errorEmailSendError": "Invio dell'e-mail non riuscito. Riprovi più tardi.", + "errorConfigureTotp": "Per attivare l’account deve configurare un autenticatore mobile.", + "errorEmailSendError": "Invio dell’e-mail non riuscito. Riprovi più tardi.", "successPasswordUpdated": "La Sua password è stata aggiornata.", - "successEmailSent": "A breve riceverà un'e-mail con ulteriori istruzioni.", + "successEmailSent": "A breve riceverà un’e-mail con ulteriori istruzioni.", "pageTitleLogin": "Accedi", "pageTitleRegister": "Registrazione", "pageTitleForgotPassword": "Password dimenticata", @@ -485,7 +485,7 @@ "pageTitleDeleteAccountConfirm": "Elimina account", "pageTitleDeleteCredential": "Elimina credenziale", "pageTitleFrontchannelLogout": "Disconnessione in corso", - "pageTitleIdpReviewProfile": "Aggiorna i dati dell'account", + "pageTitleIdpReviewProfile": "Aggiorna i dati dell’account", "pageTitleLinkIdp": "Collega provider di identità", "pageTitleConfigTotp": "Configurazione autenticatore mobile", "pageTitleIdpLinkConfirm": "Collega account", @@ -499,7 +499,7 @@ "pageTitleRecoveryCodeConfig": "Codici di recupero", "pageTitleRecoveryCodeInput": "Codice di recupero", "pageTitleResetOtp": "Reimposta autenticatore", - "pageTitleUpdateProfile": "Aggiorna i dati dell'account", + "pageTitleUpdateProfile": "Aggiorna i dati dell’account", "pageTitleLoginUsername": "Accedi", "pageTitleX509Info": "Certificato X.509", "pageTitleSamlPostForm": "Reindirizzamento", diff --git a/locales/pl-PL.arb b/locales/pl-PL.arb index c1a8fbd..2cec0ce 100644 --- a/locales/pl-PL.arb +++ b/locales/pl-PL.arb @@ -4,7 +4,7 @@ "@helpwaveId": { "description": "Title for helpwave id badge" }, - "nOrganization": "{count, plural, =1{# organizacja} few{# organizacje} many{# organizacji} other{# organizacji}}", + "nOrganization": "{count, plural, =1{# organizacja} =2{# organizacje} few{# organizacje} many{# organizacji} other{# organizacji}}", "@nOrganization": { "placeholders": { "count": { diff --git a/locales/ro-RO.arb b/locales/ro-RO.arb index 6feed07..de19851 100644 --- a/locales/ro-RO.arb +++ b/locales/ro-RO.arb @@ -4,7 +4,7 @@ "@helpwaveId": { "description": "Title for helpwave id badge" }, - "nOrganization": "{count, plural, =1{# organizație} few{# organizații} other{# de organizații}}", + "nOrganization": "{count, plural, =1{# organizație} few{# organizații} many{# organizații} other{# organizații}}", "@nOrganization": { "placeholders": { "count": { diff --git a/locales/ru-RU.arb b/locales/ru-RU.arb index 4bb5948..c7a3043 100644 --- a/locales/ru-RU.arb +++ b/locales/ru-RU.arb @@ -4,7 +4,7 @@ "@helpwaveId": { "description": "Title for helpwave id badge" }, - "nOrganization": "{count, plural, one{# организация} few{# организации} many{# организаций} other{# организации}}", + "nOrganization": "{count, plural, =1{# организация} few{# организации} many{# организаций} other{# организации}}", "@nOrganization": { "placeholders": { "count": { diff --git a/locales/tr-TR.arb b/locales/tr-TR.arb index adf0aa8..3d7a2bc 100644 --- a/locales/tr-TR.arb +++ b/locales/tr-TR.arb @@ -196,7 +196,7 @@ "@profilePictureUploadFailed": { "description": "Error when profile picture upload fails" }, - "profilePictureTooLarge": "Seçilen dosya 5 MB'tan büyük.", + "profilePictureTooLarge": "Seçilen dosya 5 MB’tan büyük.", "@profilePictureTooLarge": { "description": "Error when picture exceeds size limit" }, diff --git a/scripts/check-translation-keys.mjs b/scripts/check-translation-keys.mjs index 0a3ae53..5ceb661 100644 --- a/scripts/check-translation-keys.mjs +++ b/scripts/check-translation-keys.mjs @@ -26,6 +26,23 @@ function allArbFiles() { .map((n) => path.join(localesDir, n)) } +// The ICU compiler treats ASCII apostrophes as quote characters and silently drops or mangles +// such messages, and its plural resolution only knows =0, =1, =2, few, many and other +function findUnsafeMessages(filePath) { + const json = JSON.parse(fs.readFileSync(filePath, 'utf8')) + const problems = [] + for (const [key, value] of Object.entries(json)) { + if (key.startsWith('@') || typeof value !== 'string') continue + if (value.includes("'")) { + problems.push(`[${key}] contains an ASCII apostrophe, use ’ instead`) + } + if (/\b(zero|one|two)\s*\{/.test(value)) { + problems.push(`[${key}] uses an unsupported plural category, use =0, =1 or =2 instead`) + } + } + return problems +} + function collectKeysFromSource(dir, keys = new Set()) { if (!fs.existsSync(dir) || !fs.statSync(dir).isDirectory()) { return keys @@ -64,6 +81,15 @@ function main() { localeKeys.set(locale, loadArbKeys(p)) } + const unsafe = arbPaths.flatMap((p) => findUnsafeMessages(p).map((msg) => ` ${path.basename(p)} ${msg}`)) + if (unsafe.length > 0) { + console.error('Messages that the ICU compiler cannot handle:\n') + for (const line of unsafe) { + console.error(line) + } + process.exit(1) + } + const allLocales = [...localeKeys.keys()] const missing = [] for (const key of usedKeys) { diff --git a/src/i18n/translations.ts b/src/i18n/translations.ts index bf1e133..398a41c 100644 --- a/src/i18n/translations.ts +++ b/src/i18n/translations.ts @@ -1096,6 +1096,9 @@ Le processus de connexion va recommencer depuis le début.`, 'acceptTerms': `Accetto i termini e le condizioni`, 'accountSectionProfile': `Profilo`, 'accountStatusActive': `Attivo`, + 'backToAccount': `Torna all’account`, + 'backToApplication': `Torna all’applicazione`, + 'backToLogin': `Torna all’accesso`, 'captchaFailed': `Verifica captcha non riuscita. Riprovi.`, 'captchaLoading': `Caricamento captcha…`, 'dangerZoneTitle': `Zona pericolosa`, @@ -1121,8 +1124,13 @@ Le processus de connexion va recommencer depuis le début.`, 'email': `E-mail`, 'emailVerificationBody': `Controlli la Sua e-mail per trovare il link di verifica.`, 'emailVerificationBody1': `Controlli la Sua e-mail per trovare il link di verifica.`, - 'errorAccountDisabled': `Laccount è disattivato. Contatti lamministratore.`, - 'errorAccountTemporarilyDisabled': `Laccount è temporaneamente disattivato. Contatti lamministratore o riprovi più tardi.`, + 'errorAccountDisabled': `L’account è disattivato. Contatti l’amministratore.`, + 'errorAccountTemporarilyDisabled': `L’account è temporaneamente disattivato. Contatti l’amministratore o riprovi più tardi.`, + 'errorConfigureTotp': `Per attivare l’account deve configurare un autenticatore mobile.`, + 'errorEmailExists': `L’indirizzo e-mail esiste già.`, + 'errorEmailSendError': `Invio dell’e-mail non riuscito. Riprovi più tardi.`, + 'errorExpiredAction': `Azione scaduta. Prosegua ora con l’accesso.`, + 'errorExpiredCode': `Accesso scaduto. Effettui di nuovo l’accesso.`, 'errorIncorrectCurrentPassword': `Password attuale errata`, 'errorInvalidCode': `Codice non valido`, 'errorInvalidEmail': `E-mail non valida`, @@ -1167,7 +1175,7 @@ Le processus de connexion va recommencer depuis le début.`, }) }, 'oauth2DeviceVerifyUserCodeMessage': `Inserisca il codice utente visualizzato sul Suo dispositivo`, - 'oauthGrantMessage': `Lapplicazione richiede laccesso al Suo account`, + 'oauthGrantMessage': `L’applicazione richiede l’accesso al Suo account`, 'oauthGrantScopes': `Autorizzazioni richieste`, 'oauthGrantTitle': `Concedi accesso`, 'otp': `Password monouso`, @@ -1185,6 +1193,7 @@ Le processus de connexion va recommencer depuis le début.`, 'pageTitleIdpLinkConfirm': `Collega account`, 'pageTitleIdpLinkConfirmOverride': `Sovrascrivi collegamento`, 'pageTitleIdpLinkEmail': `Collega account`, + 'pageTitleIdpReviewProfile': `Aggiorna i dati dell’account`, 'pageTitleInfo': `Informazioni`, 'pageTitleLinkIdp': `Collega provider di identità`, 'pageTitleLogin': `Accedi`, @@ -1207,6 +1216,7 @@ Le processus de connexion va recommencer depuis le début.`, 'pageTitleTerms': `Termini e condizioni`, 'pageTitleUpdateEmail': `Aggiorna e-mail`, 'pageTitleUpdatePassword': `Aggiorna password`, + 'pageTitleUpdateProfile': `Aggiorna i dati dell’account`, 'pageTitleWebauthnAuthenticate': `Accesso con passkey`, 'pageTitleWebauthnError': `Errore passkey`, 'pageTitleWebauthnRegister': `Registrazione passkey`, @@ -1219,7 +1229,10 @@ Le processus de connexion va recommencer depuis le début.`, 'personalInfoTitle': `Informazioni personali`, 'privacy': `Privacy`, 'privacyPolicy': `informativa sulla privacy`, + 'privacyRequired': `Per continuare deve accettare l’informativa sulla privacy.`, 'profilePicture': `Immagine del profilo`, + 'profilePictureComingSoon': `Caricamento dell’immagine del profilo – presto disponibile.`, + 'profilePictureHelp': `JPEG, PNG o WebP, max. 5 MB. L’immagine viene ridimensionata e archiviata in modo sicuro.`, 'profilePictureTooLarge': `Il file selezionato supera i 5 MB.`, 'profilePictureUploadFailed': `Caricamento non riuscito. Riprovi.`, 'profilePictureUploading': `Caricamento in corso…`, @@ -1227,7 +1240,10 @@ Le processus de connexion va recommencer depuis le début.`, 'realmBannerAdmin': `Portale amministratore`, 'realmBannerOther': `Realm interno`, 'realmBannerSubtitleAdmin': `Accesso amministrativo — ogni azione viene registrata.`, + 'realmBannerSubtitleOther': `Questo non è l’accesso standard per i clienti.`, + 'realmBannerSubtitleTeam': `Sta accedendo a un’area del team con privilegi elevati.`, 'realmBannerTeam': `Area di lavoro del team`, + 'recoveryAuthnCodeConfigMessage': `Configuri il Suo codice di recupero per l’autenticazione`, 'recoveryCode': `Codice di recupero`, 'register': `Registrati`, 'rememberMe': `Ricordami`, @@ -1237,7 +1253,10 @@ Le processus de connexion va recommencer depuis le début.`, 'securitySectionTitle': `Sicurezza`, 'selectAuthenticatorTitle': `Seleziona metodo di autenticazione`, 'selectOrganizationTitle': `Seleziona organizzazione`, + 'sessionExpired': `Il tempo previsto per la connessione è scaduto. +La procedura di accesso ricomincerà dall’inizio.`, 'successAccountUpdated': `Il Suo account è stato aggiornato`, + 'successEmailSent': `A breve riceverà un’e-mail con ulteriori istruzioni.`, 'successMobileAuthenticatorConfigured': `Autenticatore mobile configurato`, 'successPasswordChanged': `Password modificata correttamente`, 'successPasswordUpdated': `La Sua password è stata aggiornata.`, @@ -1248,6 +1267,7 @@ Le processus de connexion va recommencer depuis le début.`, 'username': `Nome utente`, 'usernameOrEmail': `Nome utente o e-mail`, 'webauthnAuthenticateMessage': `Si autentichi con la Sua chiave di sicurezza`, + 'webauthnErrorMessage': `Si è verificato un errore durante l’autenticazione WebAuthn`, 'webauthnRegisterMessage': `Registri la Sua chiave di sicurezza`, 'x509InfoMessage': `Fornisca le informazioni del Suo certificato X.509`, 'x509InfoTitle': `Informazioni sul certificato X.509` @@ -1513,6 +1533,7 @@ Het inlogproces wordt opnieuw gestart.`, 'nOrganization': ({ count }): string => { return TranslationGen.resolvePlural(count, { '=1': `${count} organizacja`, + '=2': `${count} organizacje`, 'few': `${count} organizacje`, 'many': `${count} organizacji`, 'other': `${count} organizacji`, @@ -1878,7 +1899,8 @@ O processo de login será reiniciado desde o início.`, return TranslationGen.resolvePlural(count, { '=1': `${count} organizație`, 'few': `${count} organizații`, - 'other': `${count} de organizații`, + 'many': `${count} organizații`, + 'other': `${count} organizații`, }) }, 'oauth2DeviceVerifyUserCodeMessage': `Introduceți codul de utilizator afișat pe dispozitiv`, @@ -2058,7 +2080,7 @@ Procesul de autentificare va reîncepe de la început.`, 'noAccount': `Нет учётной записи?`, 'nOrganization': ({ count }): string => { return TranslationGen.resolvePlural(count, { - 'one': `${count} организация`, + '=1': `${count} организация`, 'few': `${count} организации`, 'many': `${count} организаций`, 'other': `${count} организации`, @@ -2304,6 +2326,7 @@ Procesul de autentificare va reîncepe de la început.`, 'profilePicture': `Profil fotoğrafı`, 'profilePictureComingSoon': `Profil fotoğrafı yükleme — yakında.`, 'profilePictureHelp': `JPEG, PNG veya WebP, en fazla 5 MB. Görsel ölçeklendirilir ve güvenli şekilde saklanır.`, + 'profilePictureTooLarge': `Seçilen dosya 5 MB’tan büyük.`, 'profilePictureUploadFailed': `Yükleme başarısız oldu. Lütfen tekrar deneyin.`, 'profilePictureUploading': `Yükleniyor…`, 'profilePictureWrongType': `Yalnızca JPEG, PNG veya WebP görselleri desteklenir.`, From b4bbc24c091e027feeabb612b0088bc95d0492d1 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 13 Oct 2026 10:28:59 +0000 Subject: [PATCH 5/6] Update hightide to 0.18.0 hightide now ships all 12 locales by default, so the custom supportedLocales list is no longer needed. Keep an English fallback for the few hightide keys that are still untranslated in some locales. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_018UdLmpCT1rJ39n1d22CkJn --- .storybook/preview.ts | 4 ++-- package-lock.json | 16 +++++++-------- package.json | 2 +- src/i18n/hightideConfig.ts | 40 +++++--------------------------------- src/main.tsx | 4 ++-- 5 files changed, 18 insertions(+), 48 deletions(-) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index fed89e8..92bc7db 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -4,7 +4,7 @@ import '@helpwave/hightide/style/globals.css' import '../src/fonts.css' import '../src/index.css' import { HightideProvider } from '@helpwave/hightide' -import { hightideProviderProps } from '../src/i18n/hightideConfig' +import { translations } from '../src/i18n/hightideConfig' if (typeof window !== 'undefined' && typeof (globalThis as { process?: { env: Record } }).process === 'undefined') { (globalThis as { process: { env: Record } }).process = { env: {} } @@ -48,7 +48,7 @@ const preview: Preview = { } return React.createElement( HightideProvider, - hightideProviderProps, + { translation: { translation: translations } }, React.createElement(Story) ) } diff --git a/package-lock.json b/package-lock.json index b770ba6..b897634 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "MPL-2", "dependencies": { - "@helpwave/hightide": "0.17.2", + "@helpwave/hightide": "0.18.0", "@keycloakify/email-native": "~260007.0.0", "keycloakify": "^11.14.2", "lucide-react": "^0.563.0", @@ -1051,12 +1051,12 @@ } }, "node_modules/@helpwave/hightide": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@helpwave/hightide/-/hightide-0.17.2.tgz", - "integrity": "sha512-sbI/AjF/gyyjLRnt8+XdGr0kvXZ7bI0eEZppJL7UzDMTx90w3K6Eav89lgt31x/aAH/7pKgWvFBmdrjiuB2gOA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@helpwave/hightide/-/hightide-0.18.0.tgz", + "integrity": "sha512-f8FLWcULPQO1yJsYAkWxjleIsZisseZrm4eWlui/1wv3jh1jxppd88h7GChwSovIn/qJ3pnBMNYbWtgBwJgtKQ==", "license": "AGPL-3.0-only", "dependencies": { - "@helpwave/hightide-utils": "0.1.8", + "@helpwave/hightide-utils": "0.1.9", "@helpwave/internationalization": "0.4.0", "@tailwindcss/cli": "4.1.18", "@tanstack/react-table": "8.21.3", @@ -1071,9 +1071,9 @@ } }, "node_modules/@helpwave/hightide-utils": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@helpwave/hightide-utils/-/hightide-utils-0.1.8.tgz", - "integrity": "sha512-ELW2+uLFjQLyG2KXKmUKTn3WuHulcfffdKsWFl6BCRIbxBA617lT5eyAtc1Liu2WdEFhBsuOezqlJCLBev/O5w==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@helpwave/hightide-utils/-/hightide-utils-0.1.9.tgz", + "integrity": "sha512-36fMQuXiIAMpnc5k98NGaAYhylgfu3aUOmKDfKT+u1RIcGqKkukIDy0uJwLO5Bc3mvrTvsk+qTjiueLwcli9Ew==", "license": "AGPL-3.0-only", "dependencies": { "@helpwave/internationalization": "0.4.0" diff --git a/package.json b/package.json index 9084983..6702a1a 100755 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "defaults" ], "dependencies": { - "@helpwave/hightide": "0.17.2", + "@helpwave/hightide": "0.18.0", "@keycloakify/email-native": "~260007.0.0", "keycloakify": "^11.14.2", "lucide-react": "^0.563.0", diff --git a/src/i18n/hightideConfig.ts b/src/i18n/hightideConfig.ts index c29e1cc..aa25d2e 100644 --- a/src/i18n/hightideConfig.ts +++ b/src/i18n/hightideConfig.ts @@ -1,39 +1,9 @@ -import type { ComponentProps } from 'react' -import type { HightideProvider, SupportedLocalesConfig } from '@helpwave/hightide' -import { HightideConfigUtils, hightideTranslation } from '@helpwave/hightide' +import { hightideTranslation } from '@helpwave/hightide' import { helpwaveIdTranslation, helpwaveIdTranslationLocales } from './translations' -// Metadata for locales that hightide does not ship as defaults yet (mirrors upstream hightide). -const additionalLocales: SupportedLocalesConfig = { - 'pt-BR': { localName: 'Português (Brasil)', defaultIs24HourFormat: true, defaultStartingWeekday: 'sunday', defaultCalendarType: 'Gregorian' }, - 'es-ES': { localName: 'Español', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, - 'fr-FR': { localName: 'Français', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, - 'nl-NL': { localName: 'Nederlands', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, - 'it-IT': { localName: 'Italiano', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, - 'pl-PL': { localName: 'Polski', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, - 'tr-TR': { localName: 'Türkçe', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, - 'ro-RO': { localName: 'Română', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, - 'el-GR': { localName: 'Ελληνικά', defaultIs24HourFormat: false, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, - 'ru-RU': { localName: 'Русский', defaultIs24HourFormat: true, defaultStartingWeekday: 'monday', defaultCalendarType: 'Gregorian' }, -} - -const hightideLocales: Record = hightideTranslation - -export const supportedLocales: SupportedLocalesConfig = Object.fromEntries( - helpwaveIdTranslationLocales.map((locale) => [ - locale, - { ...additionalLocales[locale], ...(HightideConfigUtils.defaultSupportedLocales as SupportedLocalesConfig)[locale] }, - ]) -) - -// hightide's own component strings fall back to English for locales it does not translate yet -const hightideFallbackTranslation = Object.fromEntries( - helpwaveIdTranslationLocales - .filter((locale) => !hightideLocales[locale]) - .map((locale) => [locale, hightideTranslation['en-US']]) +// Keys that hightide has not translated for a locale yet fall back to its English strings +const hightideEnglishFallback = Object.fromEntries( + helpwaveIdTranslationLocales.map((locale) => [locale, hightideTranslation['en-US']]) ) -export const hightideProviderProps: Omit, 'children'> = { - locale: { supportedLocales }, - translation: { translation: [helpwaveIdTranslation, hightideFallbackTranslation] }, -} +export const translations = [helpwaveIdTranslation, hightideTranslation, hightideEnglishFallback] diff --git a/src/main.tsx b/src/main.tsx index c863c92..86c3ca2 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -5,7 +5,7 @@ import '@helpwave/hightide/style/globals.css' import './fonts.css' import './index.css' import { HelpwaveLogo, HightideProvider } from '@helpwave/hightide' -import { hightideProviderProps } from './i18n/hightideConfig' +import { translations } from './i18n/hightideConfig' // The following block can be uncommented to test a specific page with `yarn dev` // Don't forget to comment back or your bundle size will increase @@ -22,7 +22,7 @@ if (import.meta.env.DEV) { createRoot(document.getElementById('root')!).render( - + {!window.kcContext ? (
From 4afee4954232779aeb622124d946c1378a048b79 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 13 Oct 2026 10:30:43 +0000 Subject: [PATCH 6/6] Round the inner edge of the team realm frame The frame now starts below the sticky banner and draws its inner edge as a rounded box, so the page content sits inside a rounded card framed by the realm color. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_018UdLmpCT1rJ39n1d22CkJn --- src/login/components/RealmBanner.tsx | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/login/components/RealmBanner.tsx b/src/login/components/RealmBanner.tsx index c803d64..4256b51 100644 --- a/src/login/components/RealmBanner.tsx +++ b/src/login/components/RealmBanner.tsx @@ -1,4 +1,4 @@ -import { useEffect } from 'react' +import { useEffect, useRef, useState } from 'react' import { ShieldAlert, Users, Tag } from 'lucide-react' import { getRealmTheme, type RealmKind } from '../utils/realmColor' import { useTranslation } from '../../i18n/useTranslation' @@ -35,7 +35,7 @@ function KindIcon({ kind, className }: { kind: Exclude, c * Full-width, sticky-top banner shown on every non-customer realm. Combines: * - bold colored bar across the viewport * - large realm name + icon - * - team realms: 4 px viewport outline (fixed, does not grow with scroll) + * - team realms: 4 px viewport frame below the banner with a rounded inner edge (fixed, does not grow with scroll) * - other non-customer realms: 4 px top stripe * - document title prefix so the realm is visible in the browser tab */ @@ -43,6 +43,8 @@ export function RealmBanner({ kcContext }: RealmBannerProps) { const t = useTranslation() const realmName = extractRealmName(kcContext.realm) const theme = getRealmTheme(realmName) + const bannerRef = useRef(null) + const [bannerHeight, setBannerHeight] = useState(0) useEffect(() => { if (theme.kind === 'customer') return @@ -54,6 +56,14 @@ export function RealmBanner({ kcContext }: RealmBannerProps) { return () => { document.title = original } }, [theme.kind, realmName]) + useEffect(() => { + const banner = bannerRef.current + if (!banner) return + const observer = new ResizeObserver(() => setBannerHeight(banner.offsetHeight)) + observer.observe(banner) + return () => observer.disconnect() + }, [theme.kind]) + if (theme.kind === 'customer') return null const accent = `var(--color-${theme.cssToken})` @@ -76,12 +86,19 @@ export function RealmBanner({ kcContext }: RealmBannerProps) { {isTeamRealm && (