feat: Zitadel translated into Spanish (#5634)

* feat: spanish translation in progress

* feat: 85% of translated strings

* feat: spanish translation 95% done

* fix: fix some typos

* fix: add missing translations for recent commits

* Apply suggestions from code review

Co-authored-by: Livio Spring <livio.a@gmail.com>

---------

Co-authored-by: Elio Bischof <elio@zitadel.com>
Co-authored-by: Livio Spring <livio.a@gmail.com>
This commit is contained in:
Miguel Cabrerizo
2023-04-14 15:53:19 +02:00
committed by GitHub
parent 8745c87ded
commit d140f9373a
30 changed files with 3894 additions and 35 deletions

View File

@@ -267,15 +267,15 @@ export class AppComponent implements OnDestroy {
}
private setLanguage(): void {
this.translate.addLangs(['de', 'en', 'fr', 'it', 'ja', 'pl', 'zh']);
this.translate.addLangs(['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh']);
this.translate.setDefaultLang('en');
this.authService.user.subscribe((userprofile) => {
if (userprofile) {
const cropped = navigator.language.split('-')[0] ?? 'en';
const fallbackLang = cropped.match(/de|en|fr|it|ja|pl|zh/) ? cropped : 'en';
const fallbackLang = cropped.match(/de|en|es|fr|it|ja|pl|zh/) ? cropped : 'en';
const lang = userprofile?.human?.profile?.preferredLanguage.match(/de|en|fr|it|ja|pl|zh/)
const lang = userprofile?.human?.profile?.preferredLanguage.match(/de|en|es|fr|it|ja|pl|zh/)
? userprofile.human.profile?.preferredLanguage
: fallbackLang;
this.translate.use(lang);

View File

@@ -2,6 +2,7 @@ import { CommonModule, registerLocaleData } from '@angular/common';
import { HttpClientModule } from '@angular/common/http';
import localeDe from '@angular/common/locales/de';
import localeEn from '@angular/common/locales/en';
import localeEs from '@angular/common/locales/es';
import localeFr from '@angular/common/locales/fr';
import localeIt from '@angular/common/locales/it';
import localeJa from '@angular/common/locales/ja';
@@ -64,6 +65,8 @@ registerLocaleData(localeDe);
i18nIsoCountries.registerLocale(require('i18n-iso-countries/langs/de.json'));
registerLocaleData(localeEn);
i18nIsoCountries.registerLocale(require('i18n-iso-countries/langs/en.json'));
registerLocaleData(localeEs);
i18nIsoCountries.registerLocale(require('i18n-iso-countries/langs/es.json'));
registerLocaleData(localeFr);
i18nIsoCountries.registerLocale(require('i18n-iso-countries/langs/fr.json'));
registerLocaleData(localeIt);

View File

@@ -109,7 +109,7 @@ export class LoginTextsComponent implements OnInit, OnDestroy {
@Input() public serviceType: PolicyComponentServiceType = PolicyComponentServiceType.MGMT;
public KeyNamesArray: string[] = KeyNamesArray;
public LOCALES: string[] = ['de', 'en', 'fr', 'it', 'ja', 'pl', 'zh'];
public LOCALES: string[] = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'];
private sub: Subscription = new Subscription();

View File

@@ -441,7 +441,7 @@ export class MessageTextsComponent implements OnInit, OnDestroy {
};
public locale: string = 'en';
public LOCALES: string[] = ['de', 'en', 'fr', 'it', 'ja', 'pl', 'zh'];
public LOCALES: string[] = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'];
private sub: Subscription = new Subscription();
public canWrite$: Observable<boolean> = this.authService.isAllowed([
this.serviceType === PolicyComponentServiceType.ADMIN

View File

@@ -45,7 +45,7 @@ export class OrgCreateComponent {
public pwdForm?: UntypedFormGroup;
public genders: Gender[] = [Gender.GENDER_FEMALE, Gender.GENDER_MALE, Gender.GENDER_UNSPECIFIED];
public languages: string[] = ['de', 'en', 'fr', 'it', 'ja', 'pl', 'zh'];
public languages: string[] = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'];
public policy?: PasswordComplexityPolicy.AsObject;
public usePassword: boolean = false;

View File

@@ -33,7 +33,7 @@ import {
export class UserCreateComponent implements OnInit, OnDestroy {
public user: AddHumanUserRequest.AsObject = new AddHumanUserRequest().toObject();
public genders: Gender[] = [Gender.GENDER_FEMALE, Gender.GENDER_MALE, Gender.GENDER_UNSPECIFIED];
public languages: string[] = ['de', 'en', 'fr', 'it', 'ja', 'pl', 'zh'];
public languages: string[] = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'];
public selected: CountryPhoneCode | undefined;
public countryPhoneCodes: CountryPhoneCode[] = [];
public userForm!: UntypedFormGroup;

View File

@@ -33,7 +33,7 @@ import { EditDialogComponent, EditDialogType } from './edit-dialog/edit-dialog.c
export class AuthUserDetailComponent implements OnDestroy {
public user?: User.AsObject;
public genders: Gender[] = [Gender.GENDER_MALE, Gender.GENDER_FEMALE, Gender.GENDER_DIVERSE];
public languages: string[] = ['de', 'en', 'fr', 'it', 'ja', 'pl', 'zh'];
public languages: string[] = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'];
private subscription: Subscription = new Subscription();

View File

@@ -44,7 +44,7 @@ export class UserDetailComponent implements OnInit {
public user!: User.AsObject;
public metadata: Metadata.AsObject[] = [];
public genders: Gender[] = [Gender.GENDER_MALE, Gender.GENDER_FEMALE, Gender.GENDER_DIVERSE];
public languages: string[] = ['de', 'en', 'it', 'fr', 'ja', 'pl', 'zh'];
public languages: string[] = ['de', 'en', 'es', 'it', 'fr', 'ja', 'pl', 'zh'];
public ChangeType: any = ChangeType;

View File

@@ -22,7 +22,7 @@ export class LocalizedDatePipe implements PipeTransform {
return moment(value).format(`${format}, HH:mm`);
}
} else {
const lang = ['de', 'en', 'fr', 'it', 'ja', 'pl', 'zh'].includes(this.translateService.currentLang)
const lang = ['de', 'en', 'es', 'fr', 'it', 'ja', 'pl', 'zh'].includes(this.translateService.currentLang)
? this.translateService.currentLang
: 'en';
const datePipe: DatePipe = new DatePipe(lang);

View File

@@ -1019,6 +1019,7 @@
"LANGUAGE": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -1217,6 +1218,7 @@
"LOCALES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -2078,6 +2080,7 @@
"LANGUAGES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",

View File

@@ -1020,6 +1020,7 @@
"LANGUAGE": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -1149,6 +1150,10 @@
"MAXSIZEEXCEEDED": "Maximum size of 524kB exceeded.",
"NOSVGSUPPORTED": "SVG are not supported!",
"FONTINLOGINONLY": "The font is currently only displayed in the login interface.",
"BACKGROUNDCOLOR": "Background color",
"PRIMARYCOLOR": "Primary color",
"WARNCOLOR": "Warning color",
"FONTCOLOR": "Font color",
"VIEWS": {
"PREVIEW": "Preview",
"CURRENT": "Current Configuration"
@@ -1209,11 +1214,12 @@
"RESET_TITLE": "Restore Default Values",
"RESET_DESCRIPTION": "You are about to restore all default values. All changes you have made will be permanently deleted. Do you really want to continue?",
"UNSAVED_TITLE": "Continue without saving?",
"UNSAVED_DESCRIPTION": "Your have made changes without saving. Do you want to save now?",
"UNSAVED_DESCRIPTION": "You have made changes without saving. Do you want to save now?",
"LOCALE": "Locale Code",
"LOCALES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -2071,6 +2077,7 @@
"LANGUAGES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",

File diff suppressed because it is too large Load Diff

View File

@@ -1019,6 +1019,7 @@
"LANGUAGE": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -1217,6 +1218,7 @@
"LOCALES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -2067,6 +2069,7 @@
"LANGUAGES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",

View File

@@ -1020,6 +1020,7 @@
"LANGUAGE": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -1218,6 +1219,7 @@
"LOCALES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -2080,6 +2082,7 @@
"LANGUAGES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",

View File

@@ -1020,6 +1020,7 @@
"LANGUAGE": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -1213,6 +1214,7 @@
"LOCALES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -2070,6 +2072,7 @@
"LANGUAGES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",

View File

@@ -1019,6 +1019,7 @@
"LANGUAGE": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -1217,6 +1218,7 @@
"LOCALES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -2079,6 +2081,7 @@
"LANGUAGES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",

View File

@@ -1019,6 +1019,7 @@
"LANGUAGE": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -1216,6 +1217,7 @@
"LOCALES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",
@@ -2066,6 +2068,7 @@
"LANGUAGES": {
"de": "Deutsch",
"en": "English",
"es": "Español",
"fr": "Français",
"it": "Italiano",
"ja": "日本語",

View File

@@ -35,6 +35,7 @@ ZITADEL is available in the following languages
- German (de)
- English (en)
- Spanish (es)
- French (fr)
- Italian (it)
- 日本語 (ja)

View File

@@ -221,6 +221,7 @@ RegistrationUser:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
GenderLabel: Geschlecht
Female: weiblich
Male: männlich
@@ -253,6 +254,7 @@ ExternalRegistrationUserOverview:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
TosAndPrivacyLabel: Allgemeine Geschäftsbedingungen und Datenschutz
TosConfirm: Ich akzeptiere die
TosLinkText: AGBs
@@ -313,6 +315,7 @@ ExternalNotFound:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
Footer:
PoweredBy: Powered By

View File

@@ -7,7 +7,7 @@ Login:
UsernamePlaceHolder: username
LoginnamePlaceHolder: username@domain
ExternalUserDescription: Login with an external user.
MustBeMemberOfOrg: The user must be member of the {{.OrgName}} organisation.
MustBeMemberOfOrg: The user must be member of the {{.OrgName}} organization.
RegisterButtonText: register
NextButtonText: next
@@ -26,7 +26,7 @@ SelectAccount:
OtherUser: Other User
SessionState0: active
SessionState1: inactive
MustBeMemberOfOrg: The user must be member of the {{.OrgName}} organisation.
MustBeMemberOfOrg: The user must be member of the {{.OrgName}} organization.
Password:
Title: Password
@@ -221,6 +221,7 @@ RegistrationUser:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
GenderLabel: Gender
Female: Female
Male: Male
@@ -253,6 +254,7 @@ ExternalRegistrationUserOverview:
Chinese: 简体中文
Japanese: 日本語
Polish: Polski
Spanish: Español
TosAndPrivacyLabel: Terms and conditions
TosConfirm: I accept the
TosLinkText: TOS
@@ -263,9 +265,9 @@ ExternalRegistrationUserOverview:
NextButtonText: save
RegistrationOrg:
Title: Organisation Registration
Description: Enter your organisationname and userdata.
OrgNameLabel: Organisationname
Title: Organization Registration
Description: Enter your organization name and userdata.
OrgNameLabel: Organization name
EmailLabel: E-Mail
UsernameLabel: Username
FirstnameLabel: First name
@@ -313,6 +315,7 @@ ExternalNotFound:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
Footer:
PoweredBy: Powered By
@@ -334,8 +337,8 @@ Errors:
NotFound: User could not be found
AlreadyExists: User already exists
Inactive: User is inactive
NotFoundOnOrg: User could not be found on chosen organisation
NotAllowedOrg: User is no member of the required organisation
NotFoundOnOrg: User could not be found on chosen organization
NotAllowedOrg: User is no member of the required organization
NotMatchingUserID: User and user in authrequest don't match
UserIDMissing: UserID is empty
Invalid: Invalid userdata
@@ -377,7 +380,7 @@ Errors:
Invalid: Username or Password is invalid
PasswordComplexityPolicy:
NotFound: Password policy not found
MinLength: Password is to short
MinLength: Password is too short
HasLower: Password must contain lower letter
HasUpper: Password must contain upper letter
HasNumber: Password must contain number
@@ -413,7 +416,7 @@ Errors:
CreationNotAllowed: Creation of a new user is not allowed on this Provider
LinkingNotAllowed: Linking of a user is not allowed on this Provider
GrantRequired: Login not possible. The user is required to have at least one grant on the application. Please contact your administrator.
ProjectRequired: Login not possible. The organisation of the user must be granted to the project. Please contact your administrator.
ProjectRequired: Login not possible. The organization of the user must be granted to the project. Please contact your administrator.
IdentityProvider:
InvalidConfig: Identity Provider configuration is invalid
IAM:

View File

@@ -0,0 +1,429 @@
Login:
Title: ¡Hola de nuevo!
Description: Introduce tus datos de inicio de sesión.
TitleLinking: Inicio de sesión para vincular un usuario
DescriptionLinking: Introduce tus datos de inicio de sesión para vincular tu usuario externo con un usuario ZITADEL.
LoginNameLabel: Nombre de inicio de sesión
UsernamePlaceHolder: username
LoginnamePlaceHolder: username@dominio
ExternalUserDescription: Inicia sesión con un usuario externo.
MustBeMemberOfOrg: El usuario debe ser miembro de la organización {{.OrgName}}.
RegisterButtonText: registrar
NextButtonText: siguiente
LDAP:
Title: Inicio de sesión
Description: Introduce tus datos de inicio de sesión.
LoginNameLabel: Nombre de inicio de sesión
PasswordLabel: Contraseña
NextButtonText: siguiente
SelectAccount:
Title: Seleccionar cuenta
Description: Utiliza tu cuenta ZITADEL
TitleLinking: Selecciona tu cuenta para vincular el usuario
DescriptionLinking: Selecciona tu cuenta para vincular con tu usuario externo.
OtherUser: Otro Usuario
SessionState0: activo
SessionState1: inactivo
MustBeMemberOfOrg: El usuario debe ser miembro de la organización {{.OrgName}}.
Password:
Title: Contraseña
Description: Introduce tus datos de inicio de sesión.
PasswordLabel: Contraseña
MinLength: Longitud mínima
HasUppercase: Una letra mayúscula
HasLowercase: Una letra minúscula
HasNumber: Número
HasSymbol: Símbolo
Confirmation: Las contraseñas coinciden
ResetLinkText: restablecer contraseña
BackButtonText: atrás
NextButtonText: siguiente
UsernameChange:
Title: Cambiar nombre de usuario
Description: Introduce tu nuevo nombre de usuario
UsernameLabel: Nombre de usuario
CancelButtonText: cancelar
NextButtonText: siguiente
UsernameChangeDone:
Title: Nombre de usuario cambiado
Description: Tu nombre de usuario se cambió correctamente.
NextButtonText: siguiente
InitPassword:
Title: Establecer contraseña
Description: Habrás recibido un código, que tendrás que introducir en el siguiente campo, para establecer tu nueva contraseña.
CodeLabel: Código
NewPasswordLabel: Nueva contraseña
NewPasswordConfirmLabel: Confirmar contraseña
ResendButtonText: reenviar código
NextButtonText: siguiente
InitPasswordDone:
Title: Contraseña establecida
Description: La contraseña se estableció correctamente
NextButtonText: siguiente
CancelButtonText: cancelar
InitUser:
Title: Activar usuario
Description: Verifica tu email con el siguiente código y establece tu contraseña.
CodeLabel: Código
NewPasswordLabel: Nueva contraseña
NewPasswordConfirm: Confirmar contraseña
NextButtonText: siguiente
ResendButtonText: reenviar código
InitUserDone:
Title: Usuario activado
Description: Email verificado y contraseña establecida correctamente
NextButtonText: siguiente
CancelButtonText: cancelar
InitMFAPrompt:
Title: Configuración de doble factor
Description: La autenticación de doble factor te proporciona seguridad adicional para tu cuenta de usuario. Ésta asegura que solo tú tienes acceso a tu cuenta.
Provider0: App autenticadora (p.e Google/Microsoft Authenticator, Authy)
Provider1: Dependiente de un dispositivo (p.e FaceID, Windows Hello, Huella dactilar)
NextButtonText: siguiente
SkipButtonText: saltar
InitMFAOTP:
Title: Verificación de doble factor
Description: Crea tu doble factor de autenticación. Descarga una aplicación autenticadora si todavía no tienes una.
OTPDescription: Escanea el código con tu app autenticadora (p.e Google/Microsoft Authenticator, Authy) o copia el secreto e inserta el código generado más abajo.
SecretLabel: Secreto
CodeLabel: Código
NextButtonText: siguiente
CancelButtonText: cancelar
InitMFAU2F:
Title: Añadir clave de seguridad
Description: Una clave de seguridad es un método de verificación que puede integrarse en tu teléfono móvil, con Bluetooth, o conectándolo directamente en el puerto USB de tu ordenador.
TokenNameLabel: Nombre de la clave de seguridad / dispositivo
NotSupported: WebAuthN no está soportado por tu navegador. Por favor asegúrate de que está actualizado o utiliza uno diferente (p.e. Chrome, Safari, Firefox)
RegisterTokenButtonText: Añadir clave de seguridad
ErrorRetry: Reintentar, crear un nuevo challenge o elegir un método diferente.
InitMFADone:
Title: Clave de seguridad verificada
Description: ¡Genial! Acabas de configurar satisfactoriamente tu doble factor y has hecho que tu cuenta sea más segura. El doble factor tendrá que introducirse en cada inicio de sesión.
NextButtonText: siguiente
CancelButtonText: cancelar
MFAProvider:
Provider0: App autenticadora (p.e Google/Microsoft Authenticator, Authy)
Provider1: Dependiente de un dispositivo (p.e FaceID, Windows Hello, Huella dactilar)
ChooseOther: o elige otra opción
VerifyMFAOTP:
Title: Verificar doble factor
Description: Verifica tu doble factor
CodeLabel: Código
NextButtonText: siguiente
VerifyMFAU2F:
Title: Verificación de doble factor
Description: Verifica tu doble factor de autenticación con el dispositivo registrado (p.e FaceID, Windows Hello, Huella dactilar)
NotSupported: WebAuthN no está soportado por tu navegador. Por favor asegúrate de que está actualizado o utiliza uno diferente (p.e. Chrome, Safari, Firefox)
ErrorRetry: Inténtalo nuevamente, crea una nueva petición o elige otro método.
ValidateTokenButtonText: Verificar doble factor
Passwordless:
Title: Inicio de sesión sin contraseña
Description: Iniciar sesión con métodos de autenticación proporcionados por tu dispositivo como FaceID, Windows Hello o tu huella dactilar.
NotSupported: WebAuthN no está soportado por tu navegador. Por favor asegúrate de que está actualizado o utiliza uno diferente (p.e. Chrome, Safari, Firefox)
ErrorRetry: Inténtalo nuevamente, crea un nuevo reto (challenge) o elige un método diferente.
LoginWithPwButtonText: Inicio de sesión con contraseña
ValidateTokenButtonText: Inicio de sesión sin contraseña
PasswordlessPrompt:
Title: Configuración de acceso sin contraseña
Description: ¿Te gustaría configurar tu inicio de sesión sin contraseña? (métodos de autenticación de tu dispositivo como FaceID, Windows Hello o tu huella dactilar)
DescriptionInit: Necesitas configurar tu inicio de sesión sin contraseña. Utiliza el enlace que se te ha proporcionado para registrar tu dispositivo.
PasswordlessButtonText: Adelante con el inicio sin contraseñas
NextButtonText: siguiente
SkipButtonText: saltar
PasswordlessRegistration:
Title: Configuración de acceso sin contraseña
Description: Añade tu medio de autenticación proporcionando un nombre (p.e MyMobilePhone, MacBook, etc) y después haz clic en el botón 'Registrar acceso sin contraseña'.
TokenNameLabel: Nombre del dispositivo
NotSupported: WebAuthN no está soportado por tu navegador. Por favor asegúrate de que está actualizado o utiliza uno diferente (p.e. Chrome, Safari, Firefox)
RegisterTokenButtonText: Registrar acceso sin contraseña
ErrorRetry: Inténtalo nuevamente, crea un nuevo reto (challenge) o elige un método diferente.
PasswordlessRegistrationDone:
Title: Configuración de acceso sin contraseña
Description: Se añadió con éxito el dispositivo para iniciar sesión sin contraseña.
DescriptionClose: Ya puedes cerrar esta ventana.
NextButtonText: siguiente
CancelButtonText: cancelar
PasswordChange:
Title: Cambiar contraseña
Description: Cambia tu contraseña. Introduce tu contraseña anterior y la nueva.
OldPasswordLabel: Contraseña anterior
NewPasswordLabel: Nueva contraseña
NewPasswordConfirmLabel: Confirmación de contraseña
CancelButtonText: cancelar
NextButtonText: siguiente
Footer: Pie
PasswordChangeDone:
Title: Cambiar contraseña
Description: Tu contraseña se cambió correctamente.
NextButtonText: siguiente
PasswordResetDone:
Title: Se ha enviado un enlace para restablecer la contraseña
Description: Comprueba tu email para restablecer la contraseña.
NextButtonText: siguiente
EmailVerification:
Title: Verificación de email
Description: Te hemos enviado un email para verificar tu dirección. Por favor introduce el código en el siguiente campo.
CodeLabel: Código
NextButtonText: siguiente
ResendButtonText: reenviar código
EmailVerificationDone:
Title: Verificación de email
Description: Tu dirección de email se ha verificado correctamente.
NextButtonText: siguiente
CancelButtonText: cancelar
LoginButtonText: iniciar sesión
RegisterOption:
Title: Opciones de registro
Description: Elige cómo te gustaría registrarte
RegisterUsernamePasswordButtonText: Con nombre de usuario y contraseña
ExternalLoginDescription: o regístrate con un usuario externo
LoginButtonText: iniciar sesión
RegistrationUser:
Title: Registro
Description: Introduce tus datos de usuario. Tu email se utilizará como nombre de inicio de sesión.
DescriptionOrgRegister: Introduce tus datos de usuario.
EmailLabel: Email
UsernameLabel: Nombre de usuario
FirstnameLabel: Nombre
LastnameLabel: Apellidos
LanguageLabel: Idioma
German: Deutsch
English: English
Italian: Italiano
French: Français
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
GenderLabel: Género
Female: Mujer
Male: Hombre
Diverse: Diverso / X
PasswordLabel: Contraseña
PasswordConfirmLabel: Confirmación de contraseña
TosAndPrivacyLabel: Términos y condiciones
TosConfirm: Acepto los
TosLinkText: TDS
PrivacyConfirm: Acepto la
PrivacyLinkText: política de privacidad
ExternalLogin: o regístrate con un usuario externo
BackButtonText: inicio de sesión
NextButtonText: siguiente
ExternalRegistrationUserOverview:
Title: Registro de usuarios externos
Description: Hemos tomado los detalles de tu usuario del proveedor seleccionado. Ahora puedes cambiarlos o completarlos.
EmailLabel: Email
UsernameLabel: Nombre de usuario
FirstnameLabel: Nombre
LastnameLabel: Apellidos
NicknameLabel: Apodo
PhoneLabel: Número de teléfono
LanguageLabel: Idioma
German: Deutsch
English: English
Italian: Italiano
French: Français
Chinese: 简体中文
Japanese: 日本語
Polish: Polski
Spanish: Español
TosAndPrivacyLabel: Términos y condiciones
TosConfirm: Acepto los
TosLinkText: TDS
PrivacyConfirm: Acepto la
PrivacyLinkText: política de privacidad
ExternalLogin: o regístrate con un usuario externo
BackButtonText: atrás
NextButtonText: guardar
RegistrationOrg:
Title: Registro de organización
Description: Introduce el nombre de tu organización y tus datos de usuario.
OrgNameLabel: Nombre de organización
EmailLabel: Email
UsernameLabel: Nombre de usuario
FirstnameLabel: Nombre
LastnameLabel: Apellidos
PasswordLabel: Contraseña
PasswordConfirmLabel: Confirmación de contraseña
TosAndPrivacyLabel: Términos y condiciones
TosConfirm: Acepto los
TosLinkText: TDS
PrivacyConfirm: Acepto la
PrivacyLinkText: política de privacidad
SaveButtonText: Crear organización
LoginSuccess:
Title: Se inició sesión con éxito
AutoRedirectDescription: Se te redirigirá a tu aplicación automáticamente. Si no fuera así, haz clic en el botón siguiente. Puedes cerrar esta ventana posteriormente.
RedirectedDescription: Ya puedes cerrar esta ventana.
NextButtonText: siguiente
LogoutDone:
Title: Cerraste sesión
Description: Cerraste la sesión con éxito.
LoginButtonText: iniciar sesión
LinkingUsersDone:
Title: Vinculación de usuario
Description: usuario vinculado con éxito.
CancelButtonText: cancelar
NextButtonText: siguiente
ExternalNotFound:
Title: Usuario externo no encontrado
Description: Usuario externo no encontrado. ¿Quieres vincular tu usuario o autoregistrar uno nuevo?
LinkButtonText: Vincular
AutoRegisterButtonText: registrar
TosAndPrivacyLabel: Términos y condiciones
TosConfirm: Acepto los
TosLinkText: TDS
PrivacyConfirm: Acepto la
PrivacyLinkText: política de privacidad
German: Deutsch
English: English
Italian: Italiano
French: Français
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
Footer:
PoweredBy: Powered By
Tos: TDS
PrivacyPolicy: Política de privacidad
Help: Ayuda
SupportEmail: Email de soporte
Errors:
Internal: Se produjo un error interno
AuthRequest:
NotFound: No pude encontrar la petición de autenticación (authrequest)
UserAgentNotCorresponding: El User Agent no se corresponde
UserAgentNotFound: No se encontró el ID del User Agent
TokenNotFound: No se encontró el Token
RequestTypeNotSupported: El tipo de petición no está soportado
MissingParameters: Faltan parámetros requeridos
User:
NotFound: El usuario no pudo ser encontrado
AlreadyExists: El usuario ya existe
Inactive: El usuario está inactivo
NotFoundOnOrg: El usuario no pudo encontrarse en la organización elegida
NotAllowedOrg: El usuario no es miembro de la organización requerida
NotMatchingUserID: El usuario y el usuario contenido en la petición de autenticación (authrequest) no coinciden
UserIDMissing: El ID de usuario está vacío
Invalid: Datos de usuario no válidos
DomainNotAllowedAsUsername: El dominio ya está reservado y no puede usarse
NotAllowedToLink: El usuario no está autorizado para vincularse con un proveedor de inicio de sesión externo
Profile:
NotFound: Perfil no encontrado
NotChanged: El perfil no ha cambiado
Empty: El perfil está vacío
FirstNameEmpty: El nombre del perfil está vacío
LastNameEmpty: Los apellidos del perfil están vacíos
IDMissing: Falta el ID del perfil
Email:
NotFound: Email no encontrado
Invalid: El email no es válido
AlreadyVerified: El email ya ha sido verificado
NotChanged: El email no ha cambiado
Empty: El email está vacío
IDMissing: Falta el ID del email
Phone:
NotFound: Teléfono no encontrado
Invalid: El teléfono no es válido
AlreadyVerified: El teléfono ya ha sido verificado
Empty: El teléfono está vacío
NotChanged: El teléfono no ha cambiado
Address:
NotFound: Dirección no encontrada
NotChanged: La dirección no cambió
Username:
AlreadyExists: El nombre de usuario ya está cogido
Reserved: El nombre de usuario ya está cogido
Empty: El nombre de usuario está vacío
Password:
ConfirmationWrong: La confirmación de la contraseña es incorrecta
Empty: La contraseña está vacía
Invalid: La contraseña no es válida
InvalidAndLocked: La contraseña no es válida y el usuario está bloqueado, contacta con tu administrador.
UsernameOrPassword:
Invalid: El nombre de usuario o la contraseña no son válidos
PasswordComplexityPolicy:
NotFound: No se encontró una política de contraseñas
MinLength: La contraseña es demasiada corta
HasLower: La contraseña debe contener una letra minúscula
HasUpper: La contraseña debe contener una letra mayúscula
HasNumber: La contraseña debe contener un número
HasSymbol: La contraseña debe contener un símbolo
Code:
Expired: El código ha caducado
Invalid: El código no es válido
Empty: El código está vacío
CryptoCodeNil: El código criptográfico es nulo
NotFound: No pude encontrar el código
GeneratorAlgNotSupported: Algoritmo de generación no soportado
EmailVerify:
UserIDEmpty: El ID de usuario está vacío
ExternalData:
CouldNotRead: Los datos externos no pudieron leerse correctamente
MFA:
NoProviders: No hay proveedores multifactor disponibles
OTP:
AlreadyReady: El multifactor OTP (OneTimePassword) ya está configurado
NotExisting: El multifactor OTP (OneTimePassword) no existe
InvalidCode: Código no válido
NotReady: El multifactor OTP (OneTimePassword) no está listo
Locked: El usuario está bloqueado
SomethingWentWrong: Algo fue mal
NotActive: El usuario no está activo
ExternalIDP:
IDPTypeNotImplemented: El tipo de IDP no está implementado
NotAllowed: El proveedor de inicio de sesión externo no está permitido
IDPConfigIDEmpty: El ID del proveedor de identidad está vacío
ExternalUserIDEmpty: El ID de usuario externo está vacío
UserDisplayNameEmpty: El nombre mostrado del usuario está vacío
NoExternalUserData: No se recibieron datos del usuario externo
CreationNotAllowed: La creación de un nuevo usuario no está permitida para este proveedor
LinkingNotAllowed: La vinculación de un usuario no está permitida para este proveedor
GrantRequired: El inicio de sesión no es posible. Se requiere que el usuario tenga al menos una concesión sobre la aplicación. Por favor contacta con tu administrador.
ProjectRequired: El inicio de sesión no es posible. La organización del usuario debe tener el acceso concedido para el proyecto. Por favor contacta con tu administrador.
IdentityProvider:
InvalidConfig: La configuración del proveedor de identidades no es válida
IAM:
LockoutPolicy:
NotExisting: No existe política de bloqueo
Org:
LoginPolicy:
RegistrationNotAllowed: El registro no está permitido
optional: (opcional)

View File

@@ -221,6 +221,7 @@ RegistrationUser:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
GenderLabel: Genre
Female: Femme
Male: Homme
@@ -253,6 +254,7 @@ ExternalRegistrationUserOverview:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
TosAndPrivacyLabel: Termes et conditions
TosConfirm: J'accepte les
TosLinkText: TOS
@@ -313,6 +315,7 @@ ExternalNotFound:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
Footer:
PoweredBy: Promulgué par

View File

@@ -221,6 +221,7 @@ RegistrationUser:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
GenderLabel: Genere
Female: Femminile
Male: Maschile
@@ -253,6 +254,7 @@ ExternalRegistrationUserOverview:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
TosAndPrivacyLabel: Termini di servizio
TosConfirm: Accetto i
TosLinkText: Termini di servizio
@@ -313,6 +315,7 @@ ExternalNotFound:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
Footer:
PoweredBy: Alimentato da

View File

@@ -213,6 +213,7 @@ RegistrationUser:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
GenderLabel: 性別
Female: 女性
Male: 男性
@@ -245,6 +246,7 @@ ExternalRegistrationUserOverview:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
TosAndPrivacyLabel: 利用規約
TosConfirm: 私は利用規約を承諾します。
TosLinkText: TOS
@@ -305,6 +307,7 @@ ExternalNotFound:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
Footer:
PoweredBy: Powered By

View File

@@ -221,6 +221,7 @@ RegistrationUser:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
GenderLabel: Płeć
Female: Kobieta
Male: Mężczyzna
@@ -253,6 +254,7 @@ ExternalRegistrationUserOverview:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
TosAndPrivacyLabel: Warunki i zasady
TosConfirm: Akceptuję
TosLinkText: Warunki korzystania
@@ -313,6 +315,7 @@ ExternalNotFound:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
Footer:
PoweredBy: Obsługiwane przez

View File

@@ -221,6 +221,7 @@ RegistrationUser:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
GenderLabel: 性别
Female: 女性
Male: 男性
@@ -253,6 +254,7 @@ ExternalRegistrationUserOverview:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
TosAndPrivacyLabel: 条款和条款
TosConfirm: 我接受
TosLinkText: 服务条款
@@ -313,6 +315,7 @@ ExternalNotFound:
Chinese: 简体中文
Polish: Polski
Japanese: 日本語
Spanish: Español
Footer:
PoweredBy: Powered By

View File

@@ -64,6 +64,8 @@
</option>
<option value="en" id="en" {{if (selectedLanguage "en")}} selected {{end}}>{{t "ExternalNotFound.English"}}
</option>
<option value="es" id="es" {{if (selectedLanguage "es")}} selected {{end}}>{{t "ExternalNotFound.Spanish"}}
</option>
<option value="fr" id="fr" {{if (selectedLanguage "fr")}} selected {{end}}>{{t "ExternalNotFound.French"}}
</option>
<option value="it" id="it" {{if (selectedLanguage "it")}} selected {{end}}>{{t "ExternalNotFound.Italian"}}

View File

@@ -0,0 +1,49 @@
InitCode:
Title: ZITADEL - Inicializar usuario
PreHeader: Inicializar usuario
Subject: Inicializar usuario
Greeting: Hola {{.DisplayName}},
Text: Este usuario fue creado en ZITADEL. Utiliza el nombre de usuario {{.PreferredLoginName}} para iniciar sesión. Por favor, haz clic en el botón más abajo para finalizar el proceso de inicialización. (Código {{.Code}}) Si no solicitaste este correo electrónico, por favor ignóralo.
ButtonText: Finalizar inicialización
PasswordReset:
Title: ZITADEL - Restablecer contraseña
PreHeader: Restablecer contraseña
Subject: Restablecer contraseña
Greeting: Hola {{.DisplayName}},
Text: Hemos recibido una solicitud de restablecimiento de contraseña. Por favor, usa el botón más abajo para restablecer tu contraseña. (Código {{.Code}}) Si no solicitaste este correo electrónico, por favor ignóralo.
ButtonText: Restablecer contraseña
VerifyEmail:
Title: ZITADEL - Verificar correo electrónico
PreHeader: Verificar correo electrónico
Subject: Verificar correo electrónico
Greeting: Hola {{.DisplayName}},
Text: Se ha añadido una nueva dirección de correo electrónico. Por favor, usa el botón más abajo para verificar tu correo electrónico. (Código {{.Code}}) Si no añadiste una nueva dirección de correo electrónico, por favor ignora este correo.
ButtonText: Verificar correo electrónico
VerifyPhone:
Title: ZITADEL - Verificar teléfono
PreHeader: Verificar teléfono
Subject: Verificar teléfono
Greeting: Hola {{.DisplayName}},
Text: Se ha añadido un nuevo número de teléfono. Por favor, usa el siguiente código para verificarlo {{.Code}}
ButtonText: Verificar teléfono
DomainClaimed:
Title: ZITADEL - Se ha reclamado un dominio
PreHeader: Cambiar dirección de correo electrónico / nombre de usuario
Subject: Se ha reclamado un dominio
Greeting: Hola {{.DisplayName}},
Text: El dominio {{.Domain}} ha sido reclamado por una organización. Tu usuario actual {{.Username}} no es parte de esta organización. Por tanto tendrás que cambiar tu dirección de correo electrónico cuando inicies sesión. Hemos creado un nombre de usuario temporal ({{.TempUsername}}) para este inicio de sesión.
ButtonText: Iniciar sesión
PasswordlessRegistration:
Title: ZITADEL - Añadir inicio de sesión sin contraseña
PreHeader: Añadir inicio de sesión sin contraseña
Subject: Añadir inicio de sesión sin contraseña
Greeting: Hola {{.DisplayName}},
Text: Hemos recibido una solicitud para añadir un token para iniciar sesión sin contraseña. Por favor, usa el botón más abajo para añadir tu token o dispositivo para un inicio de sesión sin contraseña.
ButtonText: Añadir inicio de sesión sin contraseña
PasswordChange:
Title: ZITADEL - La contraseña de usuario ha sido cambiada
PreHeader: Cambiar contraseña
Subject: La contraseña de usuario ha sido cambiada
Greeting: Hola {{.DisplayName}},
Text: La contraseña de tu usuario ha sido cambiada, si este cambio no fue hecho por ti, por favor proceder a restablecer inmediatamente tu contraseña.
ButtonText: Iniciar sesión

View File

@@ -120,14 +120,14 @@ Errors:
NotSet: User has not set a password
PasswordComplexityPolicy:
NotFound: Password policy not found
MinLength: Password is to short
MinLength: Password is too short
MinLengthNotAllowed: Given minimum length is not allowed
HasLower: Password must contain lower case
HasUpper: Password must contain upper case
HasNumber: Password must contain number
HasSymbol: Password must contain symbol
ExternalIDP:
Invalid: Externer IDP invalid
Invalid: External IDP invalid
IDPConfigNotExisting: IDP provider invalid for this organization
NotAllowed: External IDP not allowed on this organization
MinimumExternalIDPNeeded: At least one IDP must be added
@@ -470,7 +470,6 @@ Errors:
StorageFailed: Storing action execution log to database failed
ScanFailed: Querying usage for action execution seconds failed
AggregateTypes:
action: Action
instance: Instance
@@ -557,10 +556,10 @@ EventTypes:
check:
succeeded: External login succeeded
externalidp:
added: Externer IDP added
removed: Externer IDP removed
added: External IDP added
removed: External IDP removed
cascade:
removed: Externer IDP cascade removed
removed: External IDP cascade removed
phone:
changed: Phone number changed
verified: Phone number verified
@@ -929,7 +928,7 @@ EventTypes:
jwt:
config:
added: JWT configuration to identity provider added
changed: JWT configuration from identity provider remvoed
changed: JWT configuration from identity provider removed
customtext:
set: Text was set
removed: Text was removed
@@ -1061,7 +1060,7 @@ EventTypes:
changed: Label policy changed
font:
added: Font added to label policy
removed: Font remvoed from label policy
removed: Font removed from label policy
icon:
added: Icon added to label policy
removed: Icon removed from label policy

1170
internal/static/i18n/es.yaml Normal file

File diff suppressed because it is too large Load Diff