feat: add registration invite code handling and improve error translations

- Updated AuthViews component to conditionally show invite code field based on registrationInviteRequired prop.
- Enhanced error handling in auth API functions to use translateServerError for better user feedback.
- Added new translations for various server error messages in English, Spanish, Russian, Chinese (Simplified and Traditional).
- Modified demo initial bootstrap state to include registrationInviteRequired flag.
- Updated types to include registrationInviteRequired in WebBootstrapResponse.
This commit is contained in:
shuaiplus
2026-05-10 23:07:07 +08:00
parent e0d81f2733
commit 7c58282e42
16 changed files with 258 additions and 45 deletions
+29 -1
View File
@@ -349,6 +349,7 @@ const es: Record<string, string> = {
"txt_create": "Crear",
"txt_create_account": "Crear cuenta",
"txt_registering": "Creando cuenta...",
"txt_register_failed": "Error al registrarse",
"txt_create_folder": "Crear carpeta",
"txt_create_folder_failed": "Error al crear carpeta",
"txt_create_item_failed": "Error al crear elemento",
@@ -408,6 +409,7 @@ const es: Record<string, string> = {
"txt_disable_this_send": "Desactivar este envío",
"txt_disable_totp": "Desactivar TOTP",
"txt_disable_totp_failed": "Error al desactivar TOTP",
"txt_totp_update_failed": "Error al actualizar TOTP",
"txt_download": "Descargar",
"txt_downloading": "Descargando...",
"txt_downloading_percent": "Descargando {percent}%",
@@ -467,12 +469,33 @@ const es: Record<string, string> = {
"txt_identity_details": "Detalles de identidad",
"txt_ie_browser": "Navegador Internet Explorer",
"txt_create_invite_failed": "Error al crear invitación",
"txt_invite_code_optional": "Código de invitación (No obligatorio para la primera cuenta; obligatorio para todas las demás)",
"txt_invite_code_required": "Código de invitación (obligatorio)",
"txt_invite_created": "Invitación creada",
"txt_invite_revoked": "Invitación revocada",
"txt_revoke_invite_failed": "Error al revocar invitación",
"txt_invite_validity_hours": "Validez de la invitación en horas",
"txt_invites": "Invitaciones",
"txt_rate_limit_try_again_seconds": "Demasiadas solicitudes. Inténtalo de nuevo en {seconds} segundos.",
"txt_server_error_account_disabled": "La cuenta está deshabilitada",
"txt_server_error_client_credentials_incorrect": "El ID de cliente o el secreto de cliente no son correctos. Inténtalo de nuevo.",
"txt_server_error_client_ip_required": "Se requiere la IP del cliente",
"txt_server_error_email_already_registered": "Este correo ya está registrado",
"txt_server_error_email_password_required": "Correo y contraseña son obligatorios",
"txt_server_error_email_required": "El correo es obligatorio",
"txt_server_error_invalid_refresh_token": "La sesión caducó. Inicia sesión de nuevo.",
"txt_server_error_invalid_request_payload": "Solicitud no válida",
"txt_server_error_invite_invalid_or_expired": "El código de invitación no es válido o ha caducado",
"txt_server_error_invite_required": "El código de invitación es obligatorio",
"txt_server_error_jwt_secret_default": "JWT_SECRET usa el valor predeterminado/de ejemplo. Cámbialo.",
"txt_server_error_jwt_secret_missing": "JWT_SECRET no está configurado",
"txt_server_error_jwt_secret_too_short": "JWT_SECRET debe tener al menos 32 caracteres",
"txt_server_error_parameter_error": "Error de parámetros",
"txt_server_error_refresh_token_required": "Falta la sesión. Inicia sesión de nuevo.",
"txt_server_error_registration_retry": "El registro no está disponible temporalmente. Inténtalo una vez más.",
"txt_server_error_totp_token_required": "El código de verificación en dos pasos es obligatorio",
"txt_server_error_two_factor_invalid": "El código de verificación en dos pasos no es válido. Inténtalo de nuevo.",
"txt_server_error_two_factor_required": "Se requiere verificación en dos pasos.",
"txt_server_error_username_password_incorrect": "Usuario o contraseña incorrectos. Inténtalo de nuevo.",
"txt_ios": "iOS",
"txt_item": "Elemento",
"txt_item_created": "Elemento creado",
@@ -546,6 +569,7 @@ const es: Record<string, string> = {
"txt_master_password_is_required": "La contraseña maestra es obligatoria",
"txt_master_password_is_required_2": "La contraseña maestra es obligatoria.",
"txt_master_password_must_be_at_least_12_chars": "La contraseña maestra debe tener al menos 12 caracteres",
"txt_master_password_verify_failed": "Error al verificar la contraseña maestra",
"txt_master_password_reprompt": "Solicitar contraseña maestra de nuevo",
"txt_master_password_reprompt_2": "Solicitar contraseña maestra de nuevo",
"txt_max_access_count": "Número máximo de accesos",
@@ -632,6 +656,9 @@ const es: Record<string, string> = {
"txt_api_key_rotated": "Clave API rotada",
"txt_rotate_api_key_confirm": "¿Rotar clave API? La clave actual dejará de funcionar inmediatamente.",
"txt_api_key_is_empty": "La clave API está vacía",
"txt_get_api_key_failed": "Error al obtener la clave API",
"txt_get_recovery_code_failed": "Error al obtener el código de recuperación",
"txt_rotate_api_key_failed": "Error al rotar la clave API",
"txt_api_key_dialog_intro": "Su clave API puede usarse para autenticarse con la CLI de Bitwarden.",
"txt_api_key_warning_body": "Su clave API es un mecanismo de autenticación alternativo. Manténgala secreta.",
"txt_oauth_client_credentials": "Credenciales de cliente OAuth 2.0",
@@ -669,6 +696,7 @@ const es: Record<string, string> = {
"txt_save_profile": "Guardar perfil",
"txt_save_profile_failed": "Error al guardar perfil",
"txt_search_sends": "Buscar envíos...",
"txt_session_refresh_failed": "Error al actualizar la sesión. Inicia sesión de nuevo.",
"txt_search_your_secure_vault": "Buscar en su bóveda segura...",
"txt_clear_search": "Limpiar búsqueda",
"txt_clear_search_esc": "Limpiar búsqueda (Esc)",