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 ru: Record<string, string> = {
"txt_create": "Создать",
"txt_create_account": "Создать учетную запись",
"txt_registering": "Создание учетной записи...",
"txt_register_failed": "Не удалось зарегистрироваться",
"txt_create_folder": "Создать папку",
"txt_create_folder_failed": "Создать папку не удалось",
"txt_create_item_failed": "Создать элемент не удалось",
@@ -408,6 +409,7 @@ const ru: Record<string, string> = {
"txt_disable_this_send": "Отключить эту отправку",
"txt_disable_totp": "Отключить TOTP",
"txt_disable_totp_failed": "Отключить TOTP не удалось",
"txt_totp_update_failed": "Не удалось обновить TOTP",
"txt_download": "Скачать",
"txt_downloading": "Загрузка...",
"txt_downloading_percent": "Загрузка {percent}%",
@@ -467,12 +469,33 @@ const ru: Record<string, string> = {
"txt_identity_details": "Данные личности",
"txt_ie_browser": "IE-браузер",
"txt_create_invite_failed": "Не удалось создать приглашение",
"txt_invite_code_optional": "Пригласительный код (не требуется для первой учетной записи; требуется для всех остальных)",
"txt_invite_code_required": "Пригласительный код (обязательно)",
"txt_invite_created": "Приглашение создано",
"txt_invite_revoked": "Приглашение отозвано",
"txt_revoke_invite_failed": "Не удалось отозвать приглашение",
"txt_invite_validity_hours": "Срок действия приглашения (часы)",
"txt_invites": "Приглашает",
"txt_rate_limit_try_again_seconds": "Слишком много запросов. Повторите попытку через {seconds} секунд.",
"txt_server_error_account_disabled": "Учетная запись отключена",
"txt_server_error_client_credentials_incorrect": "ID клиента или секрет клиента неверны. Повторите попытку.",
"txt_server_error_client_ip_required": "Требуется IP клиента",
"txt_server_error_email_already_registered": "Этот адрес электронной почты уже зарегистрирован",
"txt_server_error_email_password_required": "Требуются адрес электронной почты и пароль",
"txt_server_error_email_required": "Требуется адрес электронной почты",
"txt_server_error_invalid_refresh_token": "Сеанс истек. Войдите снова.",
"txt_server_error_invalid_request_payload": "Недопустимый запрос",
"txt_server_error_invite_invalid_or_expired": "Код приглашения недействителен или истек",
"txt_server_error_invite_required": "Требуется код приглашения",
"txt_server_error_jwt_secret_default": "JWT_SECRET использует значение по умолчанию/пример. Измените его.",
"txt_server_error_jwt_secret_missing": "JWT_SECRET не настроен",
"txt_server_error_jwt_secret_too_short": "JWT_SECRET должен содержать не менее 32 символов",
"txt_server_error_parameter_error": "Ошибка параметров",
"txt_server_error_refresh_token_required": "Сеанс отсутствует. Войдите снова.",
"txt_server_error_registration_retry": "Регистрация временно недоступна. Повторите попытку один раз.",
"txt_server_error_totp_token_required": "Требуется код двухэтапной проверки",
"txt_server_error_two_factor_invalid": "Код двухэтапной проверки недействителен. Повторите попытку.",
"txt_server_error_two_factor_required": "Требуется двухэтапная проверка.",
"txt_server_error_username_password_incorrect": "Имя пользователя или пароль неверны. Повторите попытку.",
"txt_ios": "iOS",
"txt_item": "Товар",
"txt_item_created": "Объект создан",
@@ -546,6 +569,7 @@ const ru: Record<string, string> = {
"txt_master_password_is_required": "Требуется мастер-пароль",
"txt_master_password_is_required_2": "Требуется мастер-пароль.",
"txt_master_password_must_be_at_least_12_chars": "Мастер-пароль должен содержать не менее 12 символов.",
"txt_master_password_verify_failed": "Не удалось проверить мастер-пароль",
"txt_master_password_reprompt": "Повторный запрос мастер-пароля",
"txt_master_password_reprompt_2": "Повторный запрос мастер-пароля",
"txt_max_access_count": "Максимальное количество доступов",
@@ -632,6 +656,9 @@ const ru: Record<string, string> = {
"txt_api_key_rotated": "Ключ API поменян",
"txt_rotate_api_key_confirm": "Поменять ключ API? Текущий ключ немедленно перестанет работать.",
"txt_api_key_is_empty": "Ключ API пуст",
"txt_get_api_key_failed": "Не удалось получить ключ API",
"txt_get_recovery_code_failed": "Не удалось получить код восстановления",
"txt_rotate_api_key_failed": "Не удалось сменить ключ API",
"txt_api_key_dialog_intro": "Ваш ключ API можно использовать для аутентификации с помощью Bitwarden CLI.",
"txt_api_key_warning_body": "Ваш ключ API — это альтернативный механизм аутентификации. Держите это в секрете.",
"txt_oauth_client_credentials": "Учетные данные клиента OAuth 2.0",
@@ -669,6 +696,7 @@ const ru: Record<string, string> = {
"txt_save_profile": "Сохранить профиль",
"txt_save_profile_failed": "Сохранить профиль не удалось",
"txt_search_sends": "Поиск отправляет...",
"txt_session_refresh_failed": "Не удалось обновить сеанс. Войдите снова.",
"txt_search_your_secure_vault": "Найдите свое безопасное хранилище...",
"txt_clear_search": "Очистить поиск",
"txt_clear_search_esc": "Очистить поиск (Esc)",