Files
zitadel/apps/login/locales/es.json
T
30434d176c feat(login): Sign in with Zitadel (#12530)
Closes #11824

# Which Problems Are Solved

The backend supports the dedicated ZITADEL identity provider template
(`AddZitadelProvider`, `IDENTITY_PROVIDER_TYPE_ZITADEL`), but the new
login (login v2)
cannot yet handle providers of this type:

A configured and activated ZITADEL IdP is not rendered as a sign-in
option, because the provider type is missing from the login's component
mapping.

# How the Problems Are Solved

- Regenerated `@zitadel/proto` (`settings/v2/login_settings_pb` in
`types`, `es` and `cjs`)
so `IdentityProviderType.ZITADEL = 13` is available (`idp/v2` was
already up to date).
- `apps/login/src/lib/idp.ts`:
- `idpTypeToSlug` maps `ZITADEL` to the `zitadel` slug, used by the
generic
    `/idp/[provider]/process|failure` routes (no route changes needed).
  - `idpTypeToIdentityProviderType` maps `IDPType.IDP_TYPE_ZITADEL` to
    `IdentityProviderType.ZITADEL`.
- Added `SignInWithZitadel` button
(`apps/login/src/components/idps/sign-in-with-zitadel.tsx`)
with the Zitadel logo as inline SVG: the brand gradient is
theme-independent, accents use
`currentColor` to adapt to light/dark, consistent with the other
provider buttons.
- Registered the Zitadel type in the provider-to-component mapping in
`sign-in-with-idp.tsx`.

No changes to the IdP intent handling are required: user
auto-creation/auto-update consume
the pre-mapped `user_action.create_user` / `update_user` from
`RetrieveIdentityProviderIntent`,
which the backend fills for the Zitadel provider like for any generic
OIDC provider.

# Additional Changes

- Added the `signInWithZitadel` i18n key ("Sign in with Zitadel") to all
15 locale files.
- Extended `idp.test.ts` with the new slug and type mappings and added
the Zitadel type to
  the exhaustive enum-coverage tests (45 tests passing).

# Additional Context

- Part of the "Zitadel as an Identity Provider" epic: #5127
- Enables the customer-portal "support access" flow, where support staff
sign in to a
  customer instance via a pre-configured Zitadel Support IdP

---------

Co-authored-by: Copilot Autofix powered by AI <[email protected]>
2026-08-10 10:27:34 +02:00

463 lines
20 KiB
JSON

{
"common": {
"back": "Atrás",
"title": "Iniciar sesión con Zitadel"
},
"accounts": {
"title": "Cuentas",
"description": "Seleccione la cuenta que desea utilizar.",
"addAnother": "Agregar otra cuenta",
"noResults": "No se encontraron cuentas",
"verified": "verificado",
"expired": "expirado"
},
"logout": {
"title": "Cerrar sesión",
"description": "Selecciona la cuenta que deseas eliminar",
"noResults": "No se encontraron cuentas",
"clear": "Eliminar sesión",
"verifiedAt": "Última actividad: {time}",
"success": {
"title": "Cierre de sesión exitoso",
"description": "Has cerrado sesión correctamente."
}
},
"loginname": {
"title": "¡Bienvenido de nuevo!",
"description": "Introduce tus datos de acceso.",
"register": "Registrar nuevo usuario",
"submit": "Continuar",
"labels": {
"loginname": "Nombre de inicio de sesión",
"username": "Nombre de usuario",
"usernameOrPhoneNumber": "Nombre de usuario o número de teléfono",
"usernameOrEmail": "Nombre de usuario o correo electrónico"
},
"required": {
"loginName": "Este campo es obligatorio"
},
"errors": {
"internalError": "Se produjo un error interno",
"couldNotGetLoginSettings": "No se pudieron obtener los ajustes de inicio de sesión",
"couldNotSearchUsers": "No se pudieron buscar usuarios",
"couldNotGetDomain": "No se pudo obtener el dominio",
"couldNotGetHost": "No se pudo obtener el host",
"couldNotStartIDPFlow": "No se pudo iniciar el flujo de IDP",
"moreThanOneUserFound": "Se encontró más de un usuario. Proporcione un identificador único.",
"userNotFound": "Usuario no encontrado en el sistema",
"couldNotCreateSession": "No se pudo crear la sesión para el usuario",
"initialUserNotSupported": "Usuario inicial no admitido",
"localAuthenticationNotAllowed": "¡La autenticación local no está permitida! Contacte con su administrador para más información.",
"passkeysNotAllowed": "Las passkeys no están permitidas. Contacte con su administrador para más información.",
"couldNotFindIdentityProvider": "No se pudo encontrar el proveedor de identidad.",
"userNotActive": "El usuario no está activo. Contacte con su administrador para más información."
}
},
"zitadel": {
"errors": {
"errorOccured": "Ocurrió un error",
"multipleUsersFound": "Se encontraron varios usuarios",
"userNotFound": "Usuario no encontrado en el sistema"
}
},
"password": {
"verify": {
"title": "Contraseña",
"description": "Introduce tu contraseña.",
"resetPassword": "Restablecer contraseña",
"submit": "Continuar",
"labels": {
"password": "Contraseña"
},
"required": {
"password": "Este campo es obligatorio"
},
"errors": {
"couldNotVerifyPassword": "No se pudo verificar la contraseña",
"couldNotResetPassword": "No se pudo restablecer la contraseña"
},
"info": {
"passwordResetSent": "Se restableció la contraseña. Por favor, revise su correo electrónico"
}
},
"set": {
"title": "Establecer Contraseña",
"description": "Establece la contraseña para tu cuenta",
"codeSent": "Se ha enviado un nuevo código a su dirección de correo electrónico.",
"noCodeReceived": "¿No recibiste un código?",
"resend": "Reenviar código",
"submit": "Continuar",
"labels": {
"code": "Código",
"newPassword": "Nueva contraseña",
"confirmPassword": "Confirmar contraseña"
},
"required": {
"code": "Este campo es obligatorio",
"newPassword": "¡Debes proporcionar una contraseña!",
"confirmPassword": "Este campo es obligatorio"
},
"errors": {
"couldNotSetPassword": "No se pudo establecer la contraseña",
"couldNotResetPassword": "No se pudo restablecer la contraseña",
"couldNotVerifyPassword": "No se pudo verificar la contraseña"
}
},
"change": {
"title": "Cambiar Contraseña",
"description": "Establece la contraseña para tu cuenta",
"submit": "Continuar",
"labels": {
"currentPassword": "Contraseña actual",
"newPassword": "Nueva contraseña",
"confirmPassword": "Confirmar contraseña"
},
"required": {
"currentPassword": "¡Debes proporcionar tu contraseña actual!",
"newPassword": "¡Debes proporcionar una nueva contraseña!",
"confirmPassword": "Este campo es obligatorio"
},
"errors": {
"currentPasswordInvalid": "La contraseña actual es incorrecta.",
"couldNotChangePassword": "No se pudo cambiar la contraseña",
"couldNotVerifyPassword": "No se pudo verificar la contraseña",
"unknownError": "Error desconocido"
}
},
"complexity": {
"length": "Debe tener al menos {minLength} caracteres de longitud.",
"hasSymbol": "Debe incluir un símbolo.",
"hasNumber": "Debe incluir un número.",
"hasUppercase": "Debe incluir una letra mayúscula.",
"hasLowercase": "Debe incluir una letra minúscula.",
"equals": "La confirmación de la contraseña coincide.",
"matches": "Coincide",
"doesNotMatch": "No coincide"
},
"errors": {
"noHostFound": "No se encontró el host",
"couldNotSendResetLink": "No se pudo enviar el enlace de restablecimiento de contraseña",
"couldNotCreateSessionForUser": "No se pudo crear la sesión para el usuario",
"couldNotVerifyPassword": "No se pudo verificar la contraseña",
"failedToAuthenticate": "Error al autenticar. Tuvo {failedAttempts} de {maxPasswordAttempts} intentos de contraseña.{lockoutMessage}",
"failedToAuthenticateNoLimit": "Error al autenticar.",
"accountLockedContactAdmin": " Comuníquese con su administrador para desbloquear su cuenta",
"userNotFound": "Usuario no encontrado en el sistema",
"initialUserNotSupported": "Usuario inicial no compatible",
"userInitialStateNotSupported": "El estado inicial del usuario no es compatible",
"codeOrVerificationRequired": "Debe proporcionar un código o tener una verificación de usuario válida",
"verificationRequired": "Se debe realizar la verificación de usuario",
"couldNotLoadSession": "No se pudo cargar la sesión",
"couldNotLoadAuthMethods": "No se pudieron cargar los métodos de autenticación",
"failedPrecondition": "Precondición fallida",
"sessionNotValid": "La sesión no es válida",
"passwordVerificationMissing": "Falta la verificación de la contraseña.",
"passwordVerificationTooOld": "La verificación de la contraseña es demasiado antigua. Por favor, verifique su contraseña de nuevo."
}
},
"idp": {
"title": "Iniciar sesión con SSO",
"description": "Selecciona uno de los siguientes proveedores para iniciar sesión",
"orSignInWith": "o iniciar sesión con",
"signInWithApple": "Iniciar sesión con Apple",
"signInWithGoogle": "Iniciar sesión con Google",
"signInWithAzureAD": "Iniciar sesión con AzureAD",
"signInWithGithub": "Iniciar sesión con GitHub",
"signInWithGitlab": "Iniciar sesión con GitLab",
"signInWithZitadel": "Iniciar sesión con Zitadel",
"loginError": {
"title": "Error de inicio de sesión",
"description": "Ocurrió un error al intentar iniciar sesión."
},
"linkingError": {
"title": "Error al vincular la cuenta",
"description": "Ocurrió un error al intentar vincular tu cuenta."
},
"completeRegister": {
"title": "Completar registro",
"description": "Para completar el registro, debes establecer una contraseña."
},
"accountNotFound": {
"title": "Cuenta no encontrada",
"description": "No pudimos encontrar una cuenta asociada con tus credenciales del proveedor de identidad.",
"info": "No se encontró ninguna cuenta existente. Por favor, inicia sesión con una cuenta existente o contacta a tu administrador para obtener asistencia.",
"backToLogin": "Volver al inicio de sesión"
},
"registrationFailed": {
"title": "Registro no disponible",
"description": "No pudimos completar el proceso de registro.",
"info": "No se pudo determinar la organización para el registro. Por favor, contacta a tu administrador para obtener asistencia.",
"backToLogin": "Volver al inicio de sesión"
},
"processing": {
"message": "Procesando autenticación...",
"noRedirect": "No se recibió redirección ni error del servidor",
"unexpectedError": "Ocurrió un error inesperado"
},
"errors": {
"missingParameters": "Faltan parámetros requeridos",
"missingIdpInfo": "Falta información del IDP",
"idpNotFound": "Proveedor de identidad no encontrado",
"linkingNotAllowed": "La vinculación no está permitida para este proveedor de identidad",
"linkingFailed": "Error al vincular el proveedor de identidad con la cuenta",
"autoLinkingFailed": "Error al vincular automáticamente la cuenta",
"userCreationFailed": "Error al crear la cuenta de usuario",
"orgResolutionFailed": "No se pudo determinar la organización para el registro",
"sessionCreationFailed": "No se pudo crear la sesión o determinar la redirección",
"unknownError": "Ocurrió un error desconocido"
}
},
"ldap": {
"title": "Iniciar sesión con LDAP",
"description": "Introduce tus credenciales LDAP.",
"submit": "Continuar",
"labels": {
"username": "Nombre de usuario",
"password": "Contraseña"
},
"required": {
"username": "Este campo es obligatorio",
"password": "Este campo es obligatorio"
}
},
"mfa": {
"verify": {
"title": "Verifica tu identidad",
"description": "Elige uno de los siguientes factores.",
"noResults": "No hay factores secundarios disponibles para configurar."
},
"set": {
"title": "Configurar autenticación de 2 factores",
"description": "Elige uno de los siguientes factores secundarios.",
"skip": "Omitir"
}
},
"otp": {
"verify": {
"title": "Verificar autenticación de 2 factores",
"totpDescription": "Introduce el código de tu aplicación de autenticación.",
"smsDescription": "Introduce el código que recibiste por SMS.",
"emailDescription": "Introduce el código que recibiste por correo electrónico.",
"noCodeReceived": "¿No recibiste un código?",
"resendCode": "Reenviar código",
"submit": "Continuar",
"labels": {
"code": "Código"
},
"required": {
"code": "Este campo es obligatorio"
}
},
"set": {
"title": "Configurar autenticación de 2 factores",
"totpDescription": "Escanea el código QR con tu aplicación de autenticación.",
"smsDescription": "Introduce tu número de teléfono para recibir un código por SMS.",
"emailDescription": "Introduce tu dirección de correo electrónico para recibir un código por correo electrónico.",
"totpRegisterDescription": "Escanea el código QR o navega manualmente a la URL.",
"submit": "Continuar",
"labels": {
"code": "Código"
},
"required": {
"code": "Este campo es obligatorio"
}
}
},
"passkey": {
"verify": {
"title": "Autenticar con una clave de acceso",
"description": "Tu dispositivo pedirá tu huella digital, rostro o bloqueo de pantalla",
"usePassword": "Usar contraseña",
"submit": "Continuar",
"errors": {
"couldNotRequestChallenge": "No se pudo solicitar el desafío de clave de acceso",
"couldNotVerifyPasskey": "No se pudo verificar la clave de acceso",
"noResponseReceived": "Verificación de clave de acceso fallida - no se recibió respuesta",
"noRedirectProvided": "Verificación de clave de acceso completada pero no se proporcionó redirección",
"couldNotRetrievePasskey": "Ocurrió un error al recuperar la clave de acceso",
"verificationCancelled": "La verificación de clave de acceso fue cancelada",
"verificationFailed": "Ocurrió un error durante la verificación de clave de acceso",
"couldNotFindSession": "No se pudo encontrar la sesión",
"couldNotUpdateSession": "No se pudo actualizar la sesión",
"userNotFound": "Usuario no encontrado en el sistema",
"couldNotDetermineRedirect": "No se pudo determinar la URL de redirección después de la verificación de clave de acceso"
}
},
"set": {
"title": "Configurar una clave de acceso",
"description": "Tu dispositivo pedirá tu huella digital, rostro o bloqueo de pantalla",
"info": {
"description": "Una clave de acceso es un método de autenticación en un dispositivo como tu huella digital, Apple FaceID o similar.",
"link": "Autenticación sin contraseña"
},
"skip": "Omitir",
"submit": "Continuar"
}
},
"u2f": {
"verify": {
"title": "Verificar autenticación de 2 factores",
"description": "Verifica tu cuenta con tu dispositivo."
},
"set": {
"title": "Configurar autenticación de 2 factores",
"description": "Configura un dispositivo como segundo factor.",
"submit": "Continuar"
}
},
"register": {
"methods": {
"passkey": "Clave de acceso",
"password": "Contraseña"
},
"disabled": {
"title": "Registro deshabilitado",
"description": "Registrarse está deshabilitado en este momento."
},
"missingdata": {
"title": "Datos faltantes",
"description": "No se proporcionaron datos suficientes para el registro."
},
"title": "Registrarse",
"description": "Crea tu cuenta Zitadel.",
"noMethodAvailableWarning": "No hay métodos de autenticación disponibles. Por favor, contacta a tu administrador.",
"selectMethod": "Selecciona el método con el que deseas autenticarte",
"agreeTo": "Para registrarte debes aceptar los términos y condiciones",
"termsOfService": "Términos de Servicio",
"privacyPolicy": "Política de Privacidad",
"submit": "Continuar",
"password": {
"title": "Establecer Contraseña",
"description": "Establece la contraseña para tu cuenta",
"submit": "Continuar",
"labels": {
"password": "Contraseña",
"confirmPassword": "Confirmar contraseña"
},
"required": {
"password": "¡Debes proporcionar una contraseña!",
"confirmPassword": "Este campo es obligatorio"
}
},
"labels": {
"firstname": "Nombre",
"lastname": "Apellidos",
"email": "Correo electrónico"
},
"required": {
"firstname": "Este campo es obligatorio",
"lastname": "Este campo es obligatorio",
"email": "Este campo es obligatorio"
},
"errors": {
"couldNotCreateUser": "No se pudo crear el usuario",
"couldNotCreateSession": "No se pudo crear la sesión",
"userNotFound": "Usuario no encontrado en el sistema",
"couldNotLinkIDP": "No se pudo vincular el IdP al usuario",
"couldNotRegisterUser": "No se pudo registrar el usuario"
}
},
"invite": {
"title": "Invitar usuario",
"description": "Introduce el correo electrónico del usuario que deseas invitar.",
"info": "El usuario recibirá un correo electrónico con un enlace para completar el registro.",
"notAllowed": "No tienes permiso para invitar usuarios.",
"submit": "Invitar usuario",
"success": {
"title": "¡Usuario invitado!",
"description": "El usuario ha sido invitado.",
"verified": "El usuario ha sido invitado y ya ha verificado su correo electrónico.",
"notVerifiedYet": "El usuario ha sido invitado. Recibirá un correo electrónico con más instrucciones.",
"submit": "Invitar a otro usuario"
}
},
"signedin": {
"title": "¡Bienvenido {user}!",
"description": "Has iniciado sesión.",
"continue": "Continuar",
"error": {
"title": "Error",
"description": "Ocurrió un error al iniciar sesión."
}
},
"verify": {
"userIdMissing": "¡No se proporcionó userId!",
"successTitle": "Usuario verificado",
"successDescription": "El usuario ha sido verificado con éxito.",
"successContinue": "Continuar",
"setupAuthenticator": "Configurar autenticador",
"verify": {
"title": "Verificar usuario",
"description": "Introduce el código proporcionado en el correo electrónico de verificación.",
"noCodeReceived": "¿No recibiste un código?",
"resendCode": "Reenviar código",
"codeSent": "Se ha enviado un código a tu dirección de correo electrónico.",
"submit": "Continuar",
"labels": {
"code": "Código"
},
"required": {
"code": "Este campo es obligatorio"
}
},
"errors": {
"couldNotResendEmail": "No se pudo reenviar el correo electrónico",
"couldNotVerifyUser": "No se pudo verificar al usuario",
"couldNotVerifyInvite": "No se pudo verificar la invitación",
"couldNotVerifyEmail": "No se pudo verificar el correo electrónico",
"couldNotVerify": "No se pudo verificar",
"couldNotLoadUser": "No se pudo cargar al usuario",
"couldNotLoadAuthenticators": "No se pudieron cargar los autenticadores posibles",
"couldNotCreateSession": "No se pudo crear la sesión",
"noHostFound": "No se encontró el host",
"userAlreadyVerified": "¡El usuario ya está verificado!",
"couldNotResendInvite": "No se pudo reenviar la invitación",
"inviteSendFailed": "No se pudo enviar el correo de invitación",
"emailSendFailed": "No se pudo enviar el correo electrónico de verificación",
"contextMissing": "Ocurrió un error. Por favor inténtelo de nuevo."
}
},
"authenticator": {
"title": "Seleccionar método de autenticación",
"description": "Selecciona el método con el que deseas autenticarte",
"noMethodsAvailable": "No hay métodos de autenticación disponibles",
"allSetup": "¡Ya has configurado un autenticador!",
"linkWithIDP": "o vincúlalo con un proveedor de identidad"
},
"device": {
"usercode": {
"title": "Código del dispositivo",
"description": "Introduce el código.",
"submit": "Continuar",
"labels": {
"code": "Código"
},
"required": {
"code": "Este campo es obligatorio"
}
},
"request": {
"title": "{appName} desea conectarse:",
"description": "{appName} tendrá acceso a:",
"disclaimer": "Al hacer clic en Permitir, autorizas a {appName} y a Zitadel a usar tu información de acuerdo con sus respectivos términos de servicio y políticas de privacidad. Puedes revocar este acceso en cualquier momento.",
"submit": "Permitir",
"deny": "Denegar"
},
"scope": {
"openid": "Verifica tu identidad.",
"email": "Accede a tu dirección de correo electrónico.",
"profile": "Accede a la información completa de tu perfil.",
"offline_access": "Permitir acceso sin conexión a tu cuenta."
}
},
"error": {
"noUserCode": "¡No se proporcionó código de usuario!",
"noDeviceRequest": "No se encontró ninguna solicitud de dispositivo.",
"unknownContext": "No se pudo obtener el contexto del usuario. Asegúrate de ingresar primero el nombre de usuario o proporcionar un loginName como parámetro de búsqueda.",
"sessionExpired": "Tu sesión actual ha expirado. Por favor, inicia sesión de nuevo.",
"failedLoading": "No se pudieron cargar los datos. Por favor, inténtalo de nuevo.",
"tryagain": "Intentar de nuevo",
"couldNotContinueSession": "No se pudo continuar con la sesión - falta información del usuario"
}
}