diff --git a/config/2fauth.php b/config/2fauth.php index c8fa2802..fc367661 100644 --- a/config/2fauth.php +++ b/config/2fauth.php @@ -51,7 +51,8 @@ return [ 'fr', 'de', 'zh', - 'es' + 'es', + 'bg', ], /* diff --git a/resources/lang/bg/auth.php b/resources/lang/bg/auth.php new file mode 100644 index 00000000..44b65e04 --- /dev/null +++ b/resources/lang/bg/auth.php @@ -0,0 +1,124 @@ + 'Тези идентификационни данни не съответстват на нашите записи.', + 'password' => 'Предоставената парола е неправилна.', + 'throttle' => 'Твърде много опити за влизане. Опитайте се пак след :seconds секунди.', + + // 2FAuth + 'sign_out' => 'Изход', + 'sign_in' => 'Вход', + 'sign_in_using' => 'Влизане с', + 'sign_in_using_security_device' => 'Влезте с помощта на защитно устройство', + 'login_and_password' => 'потребител и парола', + 'register' => 'Регистрация', + 'welcome_to_2fauth' => 'Welcome to 2FAuth', + 'autolock_triggered' => 'Задейства се автоматично заключване', + 'autolock_triggered_punchline' => 'Задействано е автоматизно заклюване. Връзката ви е автоматично прекратена.', + 'change_autolock_in_settings' => 'Можете да промените поведението на функцията за автоматично заключване в раздела Настройки > Опции.', + 'already_authenticated' => 'Вече сте удостоверени', + 'authentication' => 'Удостоверяване', + 'maybe_later' => 'Може би по-късно', + 'user_account_controlled_by_proxy' => 'Потребителски акаунт, предоставен от прокси за удостоверяване.
Управлявайте акаунта на ниво прокси.', + 'auth_handled_by_proxy' => 'Удостоверяването се обработва от ревърс прокси, настройките по-долу са деактивирани.
Управлявайте удостоверяването на ниво прокси.', + 'confirm' => [ + 'logout' => 'Сигурни ли сте, че искате да излезете?', + 'revoke_device' => 'Сигурни ли сте, че искате да анулирате това устройство?', + 'delete_account' => 'Сигурни ли сте, че искате да изтриете профила си?', + ], + 'webauthn' => [ + 'security_device' => 'устройство за сигурност', + 'security_devices' => 'Устройства за сигурност', + 'security_devices_legend' => 'Устройства за удостоверяване, които можете да използвате за влизане в 2FAuth, като ключове за сигурност (като Yubikey) или смартфони с биометрични възможности (като Apple FaceId/TouchId)', + 'enhance_security_using_webauthn' => 'Можете да подобрите сигурността на вашия 2FAuth акаунт, като активирате WebAuthn удостоверяване.

+ WebAuthn ви позволява да използвате надеждни устройства (като Yubikeys или смартфони с биометрични възможности), за да влизате бързо и по-сигурно.', + 'use_security_device_to_sign_in' => 'Пригответе се за удостоверяване с помощта на (едно от) вашите устройства за сигурност. Включете ключа си, свалете маската за лице или ръкавиците и т.н.', + 'lost_your_device' => 'Загубихте устройството си?', + 'recover_your_account' => 'Възстановете профила си', + 'account_recovery' => 'Възстановяване на профил', + 'recovery_punchline' => '2FAuth will send you a recovery link to this email address. Click the link in the received email and follow the instructions.

Ensure you open the email on a device you fully own.', + 'send_recovery_link' => 'Изпратете връзка за възстановяване', + 'account_recovery_email_sent' => 'Имейлът за възстановяване на акаунта е изпратен!', + 'disable_all_security_devices' => 'Disable all security devices', + 'disable_all_security_devices_help' => 'All your security devices will be revoked. Use this option if you have lost one or its security has been compromised.', + 'register_a_new_device' => 'Регистрирайте ново устройство', + 'register_a_device' => 'Регистрирайте устройство', + 'device_successfully_registered' => 'Устройството е регистрирано успешно', + 'device_revoked' => 'Устройството е анулирано успешно', + 'revoking_a_device_is_permanent' => 'Анулираното на устройство е перманентно', + 'recover_account_instructions' => 'To recover your account, 2FAuth resets some Webauthn settings so you will be able to sign in using your email and password.', + 'invalid_recovery_token' => 'Невалиден токен за възстановяване', + 'webauthn_login_disabled' => 'Webauthn login disabled', + 'invalid_reset_token' => 'This reset token is invalid.', + 'rename_device' => 'Преименуване на устройство', + 'my_device' => 'Моето устройство', + 'unknown_device' => 'Неразпознато устройство', + 'use_webauthn_only' => [ + 'label' => 'Използвайте само WebAuthn', + 'help' => 'Make WebAuthn the only authorized method to log into your 2FAuth account. This is the recommended setup to take advantage of the WebAuthn enhanced security.

+ In case of device lost, you will be able to recover your account by resetting this option and signing in using your email and password.

+ Attention! The Email & Password form remains available despite this option being enabled, but it will always return an \'Authentication failed\' response.' + ], + 'need_a_security_device_to_enable_options' => 'Set at least one device to enable the following options', + ], + 'forms' => [ + 'name' => 'Име', + 'login' => 'Вход', + 'webauthn_login' => 'WebAuthn вход', + 'email' => 'Имейл', + 'password' => 'Парола', + 'reveal_password' => 'Покажи паролата', + 'hide_password' => 'Скрий паролата', + 'confirm_password' => 'Потвърждаване на паролата', + 'confirm_new_password' => 'Потвърди новата парола', + 'dont_have_account_yet' => 'Все още нямате акаунт?', + 'already_register' => 'Вече сте регистриран?', + 'authentication_failed' => 'Неуспешна идентификация', + 'forgot_your_password' => 'Забравена парола?', + 'request_password_reset' => 'Възстанови я', + 'reset_your_password' => 'Нулиране на паролата', + 'reset_password' => 'Нулиране на парола', + 'disabled_in_demo' => 'Функцията е деактивирана в демо режима', + 'new_password' => 'Нова парола', + 'current_password' => [ + 'label' => 'Текуща парола', + 'help' => 'Попълнете текущата си парола, за да потвърдите, че това сте вие' + ], + 'change_password' => 'Промяна на паролата', + 'send_password_reset_link' => 'Изпратете връзка за нулиране на паролата', + 'password_successfully_changed' => 'Паролата е променена успешно', + 'edit_account' => 'Редактиране на профил', + 'profile_saved' => 'Профилът е актуализиран успешно!', + 'welcome_to_demo_app_use_those_credentials' => 'Добре дошли в демонстрацията на 2FAuth.

Можете да влезете с имейл demo@2fauth.app и парола demo', + 'welcome_to_testing_app_use_those_credentials' => 'Добре дошли в тестовата версия на 2FAuth.

Използвайте имейл testing@2fauth.app и парола password', + 'register_punchline' => 'Добре дошли в 2FAuth.
Имате нужда от акаунт, за да продължите, моля, регистрирайте се.', + 'reset_punchline' => '2FAuth ще ви изпрати връзка за нулиране на паролата на този адрес. Кликнете върху връзката в получения имейл, за да зададете нова парола.', + 'name_this_device' => 'Назовете това устройство', + 'delete_account' => 'Изтриване на профил', + 'delete_your_account' => 'Изтрийте профила си', + 'delete_your_account_and_reset_all_data' => 'Това ще нулира 2FAuth. Вашият потребителски акаунт ще бъде изтрит, както и всички 2FA данни. Няма връщане назад.', + 'user_account_successfully_deleted' => 'Потребителският профил е изтрит успешно', + 'has_lower_case' => 'Съдържа малки букви', + 'has_upper_case' => 'Съдържа големи букви', + 'has_special_char' => 'Съдържа символи', + 'has_number' => 'Съдържа числа', + 'is_long_enough' => 'Минимум 8 символа.', + 'mandatory_rules' => 'Задължително', + 'optional_rules_you_should_follow' => 'Силно препоръчително', + 'caps_lock_is_on' => 'Главните букви са включени', + ], + +]; diff --git a/resources/lang/bg/commons.php b/resources/lang/bg/commons.php new file mode 100644 index 00000000..f3095f44 --- /dev/null +++ b/resources/lang/bg/commons.php @@ -0,0 +1,73 @@ + 'Отказ', + 'update' => 'Актуализация', + 'copy' => 'Копиране', + 'copy_to_clipboard' => 'Копиране в клипборда', + 'copied_to_clipboard' => 'Копирано в клипборда', + 'profile' => 'Профил', + 'edit' => 'Редактиране', + 'delete' => 'Изтрий', + 'disable' => 'Деактивиране', + 'enable' => 'Активирай', + 'create' => 'Създай', + 'save' => 'Запази', + 'close' => 'Затвори', + 'clear' => 'Изчисти', + 'clear_search' => 'Изчисти търсенето', + 'demo_do_not_post_sensitive_data' => 'Това е демонстрационна програма. Не записвайте чуествителна информация', + 'testing_do_not_post_sensitive_data' => 'Това е тестова програма. Не записвайте чуествителна информация', + 'selected' => 'избрани', + 'name' => 'Име', + 'manage' => 'Управление', + 'done' => 'Готово', + 'new' => 'Нов', + 'back' => 'Назад', + 'move' => 'Премести', + 'export' => 'Export', + 'all' => 'Всички', + 'select_all' => 'Избери всички', + 'clear_selection' => 'Изчисти избраните', + 'sort_descending' => 'Сортирай низходящо', + 'sort_ascending' => 'Cортирай възходящо', + 'rename' => 'Преименуване', + 'new_name' => 'Ново име', + 'options' => 'Настроики', + 'reload' => 'презаредите', + 'some_data_have_changed' => 'Някой записи са променени. Трябва да', + 'generate' => 'Създаване', + 'open_in_browser' => 'Отвори в браузър', + 'continue' => 'Продължи', + 'discard' => 'Откажи', + 'about' => 'Относно', + 'usefull_links' => 'Полезни връзки', + 'environment' => 'Среда', + 'credits' => 'Заслуги', + '2fauth_teaser' => 'Уеб приложение за управление на вашите акаунти с двуфакторно удостоверяване (2FA) и генериране на техните кодове за сигурност', + 'made_with' => 'Изработено с', + 'ui_icons_by' => 'Икони', + 'logos_by' => 'Лога от', + 'search' => 'Търсене', + 'resources' => 'Ресурси', + 'check_for_update' => 'Проверка за нова версия', + 'check_for_update_help' => 'Автоматично проверявайте (веднъж седмично) и предупреди, когато в Github се публикува нова версия на 2FAuth', + 'you_are_up_to_date' => 'Тази инстанция е актуална', + '2fauth_description' => 'Уеб приложение за управление на вашите акаунти с двуфакторно удостоверяване (2FA) и генериране на техните кодове за сигурност', + 'image_of_qrcode_to_scan' => 'Изображение на QR код за сканиране', + 'file' => 'Файл', + 'or' => 'ИЛИ', + 'close_the_x_page' => 'Затвори {pagetitle} страницата', +]; \ No newline at end of file diff --git a/resources/lang/bg/errors.php b/resources/lang/bg/errors.php new file mode 100644 index 00000000..261a34ab --- /dev/null +++ b/resources/lang/bg/errors.php @@ -0,0 +1,55 @@ + 'Ресурсът не е намерен', + 'error_occured' => 'Възникна грешка:', + 'refresh' => 'Презареждане', + 'no_valid_otp' => 'Няма валиден OTP ресурс в този QR код', + 'something_wrong_with_server' => 'Нещо не е наред със сървъра ви', + 'Unable_to_decrypt_uri' => 'URIа не може да се декриптира', + 'not_a_supported_otp_type' => 'Този OTP формат не се поддържа', + 'cannot_create_otp_without_secret' => 'Не може да се създаде OTP без тайна', + 'data_of_qrcode_is_not_valid_URI' => 'Данните от този QR код не са валиден OTP Auth URI. QR кодът съдържа:', + 'wrong_current_password' => 'Wrong current password, nothing has changed', + 'error_during_encryption' => 'Шифроването е неуспешно, вашата база данни остава незащитена.', + 'error_during_decryption' => 'Дешифрирането е неуспешно, вашата база данни все още е защитена. Това се дължи главно на проблем с целостта на криптираните данни за един или повече акаунти.', + 'qrcode_cannot_be_read' => 'Този QR код е нечетлив', + 'too_many_ids' => 'твърде много идентификатори бяха включени в параметъра на заявката, разрешени са максимум 100', + 'delete_user_setting_only' => 'Само настройка създадена от потребител може да бъде изтрита', + 'indecipherable' => '*неразгадаем*', + 'cannot_decipher_secret' => 'Тайната не може да бъде разгадана. Това се причинява главно от грешен APP_KEY, зададен в конфигурационния файл .env на 2Fauth или на повредени данни в базата данни.', + 'https_required' => 'Изисква се HTTPS контекст', + 'browser_does_not_support_webauthn' => 'Вашето устройство не поддържа webauthn. Опитайте отново с по-модерен браузър', + 'aborted_by_user' => 'Прекратено от потребителя', + 'security_device_unsupported' => 'Unsupported or in use device', + 'not_allowed_operation' => 'Operation not allowed', + 'unsupported_operation' => 'Unsupported operation', + 'unknown_error' => 'Unknown error', + 'security_error_check_rpid' => 'Security error
Check your WEBAUTHN_ID env var', + 'unsupported_with_reverseproxy' => 'Не е приложимо при използване на прокси за удостоверяване', + 'user_deletion_failed' => 'Изтриването на профила не бе успешно, няма изтрити данни', + 'auth_proxy_failed' => 'Неуспешно удостоверяване на проксито', + 'auth_proxy_failed_legend' => '2Fauth е конфигуриран да работи зад прокси за удостоверяване, но вашето прокси не връща очаквания хедър. Проверете конфигурацията си и опитайте отново.', + 'invalid_x_migration' => 'Невалидни или нечетливи :appname данни', + 'invalid_2fa_data' => 'Невалидни 2FA данни', + 'unsupported_migration' => 'Данните не отговарят на нито един поддържан формат', + 'unsupported_otp_type' => 'Неподдържан OTP тип', + 'encrypted_migration' => 'Нечетимо, данните изглеждат криптирани', + 'no_logo_found_for_x' => 'Няма налично лого за {service}', + 'file_upload_failed' => 'Качването на файл не бе успешно', + 'unauthorized' => 'Unauthorized', + 'unauthorized_legend' => 'You do not have permissions to view this resource or to perform this action', + 'cannot_delete_the_only_admin' => 'Cannot delete the only admin account' +]; \ No newline at end of file diff --git a/resources/lang/bg/groups.php b/resources/lang/bg/groups.php new file mode 100644 index 00000000..8e986464 --- /dev/null +++ b/resources/lang/bg/groups.php @@ -0,0 +1,40 @@ + 'Групи', + 'create_group' => 'Създай нова група', + 'show_group_selector' => 'Покажи избора на групи', + 'hide_group_selector' => 'Скрий избора на групи', + 'select_accounts_to_show' => 'Избери група профили за показване', + 'manage_groups' => 'Управление на групи', + 'active_group' => 'Активна група', + 'manage_groups_legend' => 'Можете да създавате групи, за да организирате акаунтите си по желания от вас начин. Всички профили остават видими в псевдо групата, наречена „Всички“, независимо от групата, към която принадлежат.', + 'deleting_group_does_not_delete_accounts' => 'Изтриването на група не изтрива профили', + 'move_selected_to' => 'Премести избраните в', + 'move_selected_to_group' => 'Move selected into a group', + 'no_group' => 'Няма група', + 'change_group' => 'Промени група', + 'group_successfully_created' => 'Групата беше създадена успешно', + 'group_name_saved' => 'Групата беше преименувана', + 'group_successfully_deleted' => 'Групата беше изтрита успешно', + 'forms' => [ + 'new_group' => 'Нова група', + 'new_name' => 'Ново име', + 'rename_group' => 'Преименуване на група', + ], + 'confirm' => [ + 'delete' => 'Сигурни ли сте, че искате да изтриете тази група?', + ], +]; \ No newline at end of file diff --git a/resources/lang/bg/languages.php b/resources/lang/bg/languages.php new file mode 100644 index 00000000..3389a10d --- /dev/null +++ b/resources/lang/bg/languages.php @@ -0,0 +1,20 @@ + 'По предпочитание на браузъра', + 'en' => 'Английски', + 'fr' => 'Френски', + 'de' => 'Немски', + 'es' => 'Испански', + 'zh' => 'Китайски (опростен)', + 'ru' => 'Russian', +]; \ No newline at end of file diff --git a/resources/lang/bg/pagination.php b/resources/lang/bg/pagination.php new file mode 100644 index 00000000..80d76894 --- /dev/null +++ b/resources/lang/bg/pagination.php @@ -0,0 +1,19 @@ + '« Назад', + 'next' => 'Напред »', + +]; diff --git a/resources/lang/bg/passwords.php b/resources/lang/bg/passwords.php new file mode 100644 index 00000000..1bdb9e2b --- /dev/null +++ b/resources/lang/bg/passwords.php @@ -0,0 +1,26 @@ + 'Вашата парола е нулирана!', + 'sent' => 'Изпратихме Ви писмо с линк за нова парола!', + 'throttled' => 'Моля, изчакайте, преди да опитате отново.', + 'token' => 'Ключът за нулиране на паролата е невалиден.', + 'user' => "Не можем да намерим потребител с този имейл адрес.", + + // 2FAuth + 'password' => 'Паролите трябва да имат поне 8 символа и да съвпадат с потвърждението.', + +]; diff --git a/resources/lang/bg/settings.php b/resources/lang/bg/settings.php new file mode 100644 index 00000000..03c6bfd4 --- /dev/null +++ b/resources/lang/bg/settings.php @@ -0,0 +1,141 @@ + 'Настройки', + 'preferences' => 'Preferences', + 'account' => 'Профил', + 'oauth' => 'OAuth', + 'webauthn' => 'WebAuthn', + 'tokens' => 'Токени', + 'options' => 'Опции', + 'user_preferences' => 'User preferences', + 'admin_settings' => 'Admin settings', + 'confirm' => [ + + ], + 'administration' => 'Administration', + 'administration_legend' => 'While previous settings are user settings (every user can set its own preferences), following settings are global and apply to all users. Only an administrator can view and edit those settings.', + 'you_are_administrator' => 'You are an administrator', + 'general' => 'Общи', + 'security' => 'Сигурност', + 'profile' => 'Профил', + 'change_password' => 'Промяна на паролата', + 'personal_access_tokens' => 'Персонални токени за достъп', + 'token_legend' => 'Токените за персонален достъп позволяват на всяко приложение да се удостовери в 2Fauth API. Трябва да посочите токена за достъп като токен на Bearer в хедърите за оторизация на заявките за потребителски приложения.', + 'generate_new_token' => 'Генерирайте нов токен', + 'revoke' => 'Анулирaне', + 'token_revoked' => 'Токена е анулиран успешно', + 'revoking_a_token_is_permanent' => 'Анулираното на токена е перманентно', + 'confirm' => [ + 'revoke' => 'Наистина ли искате да анулирате този токен?', + ], + 'make_sure_copy_token' => 'Уверете се, че сте копирали вашия личен токен за достъп. Няма да можете да го видите отново!', + 'data_input' => 'Въвеждане на данни', + 'forms' => [ + 'edit_settings' => 'Редактиране на настройките', + 'setting_saved' => 'Настройките са запазени', + 'new_token' => 'Нов токен', + 'some_translation_are_missing' => 'Някои преводи липсват при използване на предпочитания от браузъра език?', + 'help_translate_2fauth' => 'Помогнете за превода на 2FAuth', + 'language' => [ + 'label' => 'Език', + 'help' => 'Език, използван за превод на потребителския интерфейс 2FAuth. Наименуваните езици са завършени, задайте този по ваш избор, който да замени предпочитанията на браузъра ви.' + ], + 'show_otp_as_dot' => [ + 'label' => 'Показване на генерираните еднократни пароли като точка', + 'help' => 'Заменете генерираните знаци за парола с ***, за да осигурите поверителност. Не засягайте функцията за копиране/поставяне' + ], + 'close_otp_on_copy' => [ + 'label' => 'Затворете OTP след копиране', + 'help' => 'Кликването върху генерираната парола ще я копира и автоматично ще я скрива от екрана' + ], + 'copy_otp_on_display' => [ + 'label' => 'Копирайте OTP при показване', + 'help' => 'Автоматично копиране на генерирана парола веднага след като се появи на екрана. Поради ограниченията на браузърите само първата TOTP парола ще бъде копирана, а не ротационните' + ], + 'use_basic_qrcode_reader' => [ + 'label' => 'Използване на основен четец на QR код', + 'help' => 'Ако имате проблеми при заснемането на QR кодове, тази опция позволява превключване към по-прост, но по-надежден четец на QR кодове' + ], + 'display_mode' => [ + 'label' => 'Режим на показване', + 'help' => 'Изберете дали искате профилите да се показват като списък или като решетка' + ], + 'password_format' => [ + 'label' => 'Password formatting', + 'help' => 'Change how the passwords are displayed by grouping digits to ease readability and memorization' + ], + 'pair' => 'by Pair', + 'pair_legend' => 'Group digits two by two', + 'trio_legend' => 'Group digits three by three', + 'half_legend' => 'Split digits into two equals groups', + 'trio' => 'by Trio', + 'half' => 'by Half', + 'grid' => 'Решетка', + 'list' => 'Списък', + 'theme' => [ + 'label' => 'Theme', + 'help' => 'Force a specific theme or apply the theme defined in your system/browser preferences' + ], + 'light' => 'Light', + 'dark' => 'Dark', + 'automatic' => 'Auto', + 'show_accounts_icons' => [ + 'label' => 'Показвай иконите', + 'help' => 'Показва иконите на профилите в основният екран' + ], + 'get_official_icons' => [ + 'label' => 'Взимане на официални икони', + 'help' => 'Взима официалната икона на издателя на 2FA при добавяне на акаунт (ако е възможно)' + ], + 'auto_lock' => [ + 'label' => 'Автоматично заключване', + 'help' => 'Отписване на потребителя автоматично в случай на неактивност. Няма ефект, когато удостоверяването се обработва от прокси и не е указан персонализиран URL адрес за излизане.' + ], + 'use_encryption' => [ + 'label' => 'Защита на чувствителните данни', + 'help' => 'Чувствителните данни, 2FA тайните и имейлите се съхраняват криптирани в база данни. Не забравяйте да направите резервно копие на стойността "APP_KEY" във вашия .env файл (или на целия файл), тъй като тя служи като ключ за криптиране. Няма начин да дешифрирате криптирани данни без този ключ.', + ], + 'default_group' => [ + 'label' => 'Група по подразбиране', + 'help' => 'Групата, към която са свързани новосъздадените акаунти', + ], + 'useDirectCapture' => [ + 'label' => 'Директно въвеждане', + 'help' => 'Изберете дали искате да бъдете подканени да изберете режим на въвеждане сред наличните или искате директно да използвате режима на въвеждане по подразбиране', + ], + 'defaultCaptureMode' => [ + 'label' => 'Режим на въвеждане по подразбиране', + 'help' => 'Режим на въвеждане по подразбиране, използван, когато опцията Директно въвеждане е включена', + ], + 'remember_active_group' => [ + 'label' => 'Запомняне на груповия филтър', + 'help' => 'Запазва последния приложен групов филтър и го възстановява при следващото ви посещение', + ], + 'never' => 'Никога', + 'on_otp_copy' => 'При копиране на кода', + '1_minutes' => 'След 1 минута', + '5_minutes' => 'След 5 минути', + '10_minutes' => 'След 10 минути', + '15_minutes' => 'След 15 минути', + '30_minutes' => 'След 30 минути', + '1_hour' => 'След 1 час', + '1_day' => 'След 1 ден', + 'livescan' => 'Сканиране на QR код', + 'upload' => 'Качване на QR код', + 'advanced_form' => 'Разширена форма', + ], + +]; \ No newline at end of file diff --git a/resources/lang/bg/titles.php b/resources/lang/bg/titles.php new file mode 100644 index 00000000..22f3240d --- /dev/null +++ b/resources/lang/bg/titles.php @@ -0,0 +1,49 @@ + 'Нов профил', + 'capture' => 'Заснеми QR', + 'accounts' => 'Профили', + 'createAccount' => 'Създай профил', + 'importAccounts' => 'Импортиране на профили', + 'editAccount' => 'Промени профил', + 'showQRcode' => 'Профил като QR код', + 'groups' => 'Групи', + 'createGroup' => 'Създай група', + 'editGroup' => 'Промяна на група', + 'settings' => [ + 'options' => 'Настроики', + 'account' => 'Потребителски профил', + 'oauth' => [ + 'tokens' => 'OAuth токени', + 'generatePAT' => 'Нов персонален токен', + ], + 'webauthn' => [ + 'editCredential' => 'Редакция на устройство', + 'devices' => 'WebAuthn устройства', + ], + ], + 'login' => 'Вход', + 'register' => 'Регистрация', + 'autolock' => 'Авт. заключване', + 'password' => [ + 'request' => 'Нулиране на паролата', + 'reset' => 'Нова парола', + ], + 'webauthn' => [ + 'lost' => 'Възстановяване на профил', + 'recover' => 'Регистриране на устройство', + ], + 'flooded' => 'Наводнение', + 'genericError' => 'Грешка', + '404' => 'Записът не е намерен', + 'about' => 'Относно', +]; \ No newline at end of file diff --git a/resources/lang/bg/twofaccounts.php b/resources/lang/bg/twofaccounts.php new file mode 100644 index 00000000..a277af41 --- /dev/null +++ b/resources/lang/bg/twofaccounts.php @@ -0,0 +1,162 @@ + 'Услуга', + 'account' => 'Профил', + 'accounts' => 'Профили', + 'icon' => 'Икона', + 'icon_for_account_x_at_service_y' => 'Икона на профил {account} в {service}', + 'icon_to_illustrate_the_account' => 'Икона, илюстрираща акаунта', + 'remove_icon' => 'Премахни икона', + 'no_account_here' => 'Тук няма 2FA!', + 'add_first_account' => 'Изберете метод и добавете първия си акаунт', + 'use_full_form' => 'Или използвайте пълния формуляр', + 'add_one' => 'Добавяне на един', + 'show_qrcode' => 'Покажи QR код', + 'no_service' => '- няма услуга -', + 'account_created' => 'Профилът беше създаден успешно', + 'account_updated' => 'Профилът е актуализиран успешно', + 'accounts_deleted' => 'Профил(ите) са изтрити успешно', + 'accounts_moved' => 'Профил(ите) са преместени успешно', + 'export_selected_to_json' => 'Download a json export of selected accounts', + 'forms' => [ + 'service' => [ + 'placeholder' => 'Google, Twitter, Apple', + ], + 'account' => [ + 'placeholder' => 'Джон Доу', + ], + 'new_account' => 'Нов профил', + 'edit_account' => 'Редактиране на профил', + 'otp_uri' => 'OTP Uri', + 'scan_qrcode' => 'Сканирайте QR код', + 'upload_qrcode' => 'Качете QR код', + 'use_advanced_form' => 'Използвайте разширената форма', + 'prefill_using_qrcode' => 'Попълнете използвайки QR код', + 'use_qrcode' => [ + 'val' => 'Използвайте QR код', + 'title' => 'Използвайте QR код, за магическо попълване', + ], + 'unlock' => [ + 'val' => 'Отключи', + 'title' => 'Отключи го (на ваш собствен риск)', + ], + 'lock' => [ + 'val' => 'Заключи', + 'title' => 'Заключи го', + ], + 'choose_image' => 'Качи', + 'i_m_lucky' => 'На късмет', + 'i_m_lucky_legend' => 'Бутонът "На късмет" ще опита да изтегли официалната икона на дадената услуга. Въведете действителното име на услугата без разширение ".xyz" и се опитайте да избегнете правописна грешка. (бета функция)', + 'test' => 'Тест', + 'secret' => [ + 'label' => 'Тайна', + 'help' => 'Ключът, използван за генериране на вашите кодове за сигурност' + ], + 'plain_text' => 'Чист текст', + 'otp_type' => [ + 'label' => 'Изберете типа на OTP за създаване', + 'help' => 'Временен OTP или HMAC базиран OTP или Steam OTP' + ], + 'digits' => [ + 'label' => 'Цифри', + 'help' => 'Броят цифри на генерираните кодове за сигурност' + ], + 'algorithm' => [ + 'label' => 'Алгоритъм', + 'help' => 'Алгоритъмът, използван за защита на вашите кодове за сигурност' + ], + 'period' => [ + 'label' => 'Период', + 'placeholder' => '30 по подразбиране', + 'help' => 'Периодът на валидност на генерираните кодове за сигурност в секунди' + ], + 'counter' => [ + 'label' => 'Брояч', + 'placeholder' => '0 по подразбиране', + 'help' => 'Първоначалната стойност на брояча', + 'help_lock' => 'Рисковано е да редактирате брояча, тъй като можете да десинхронизирате акаунта със сървъра за проверка на услугата. Използвайте иконата за заключване, за да разрешите промяната, но само ако знаете, че правите' + ], + 'image' => [ + 'label' => 'Изображение', + 'placeholder' => 'http://...', + 'help' => 'URL адресът на външно изображение, което да се използва като икона на акаунта' + ], + 'options_help' => 'Можете да оставите следните опции празни, ако не знаете как да ги зададете. Ще бъдат приложени най-често използваните стойности.', + 'alternative_methods' => 'Алтернативни методи', + ], + 'stream' => [ + 'live_scan_cant_start' => 'Сканирането не може да стартира :(', + 'need_grant_permission' => [ + 'reason' => '2FAuth няма разрешение за достъп до камерата ви', + 'solution' => 'Трябва да дадете разрешение за използване на камерата на вашето устройство. Ако вече сте отказали и вашият браузър не ви подкани отново, моля, вижте документацията на браузъра, за да разберете как да дадете разрешение.' + ], + 'not_readable' => [ + 'reason' => 'Неуспешно зареждане на скенера', + 'solution' => 'Камерата използва ли се вече? Уверете се, че никое друго приложение не използва камерата и опитайте отново' + ], + 'no_cam_on_device' => [ + 'reason' => 'Няма камера на това устройство', + 'solution' => 'Може би сте забравили да включите уеб камерата си' + ], + 'secured_context_required' => [ + 'reason' => 'Изисква се защитен контекст', + 'solution' => 'За сканиране се изисква HTTPS. Ако стартирате 2FAuth от вашия компютър, не използвайте виртуален хост, различен от localhost' + ], + 'https_required' => 'За стрийминг от камерата се изисква HTTPS', + 'camera_not_suitable' => [ + 'reason' => 'Инсталираните камери не са подходящи', + 'solution' => 'Моля, използвайте друго устройство/камера' + ], + 'stream_api_not_supported' => [ + 'reason' => 'Бразучера не поддържа поточно API', + 'solution' => 'Трябва да използвате модерен браузър' + ], + ], + 'confirm' => [ + 'delete' => 'Сигурни ли сте, че искате да изтриете този профил?', + 'cancel' => 'Профилът ще бъде загубен. Сигурен ли си?', + 'discard' => 'Сигурни ли сте, че искате да отхвърлите профила?', + 'discard_all' => 'Сигурни ли сте, че искате да отхвърлите всички профили?', + 'discard_duplicates' => 'Сигурни ли сте, че искате да отхвърлите всички дубликати?', + ], + 'import' => [ + 'import' => 'Импорт', + 'to_import' => 'Импорт', + 'import_legend' => '2FAuth може да импортира данни от различни 2FA приложения.
Използвайте функцията за експортиране на тези приложения, за да получите ресурс за мигриране (QR код или файл) и да го заредите, като използвате предпочитания от вас метод по-долу.', + 'upload' => 'Качи', + 'scan' => 'Сканирай', + 'supported_formats_for_qrcode_upload' => 'Приемат се: jpg, jpeg, png, bmp, gif, svg или webp', + 'supported_formats_for_file_upload' => 'Приема се: чист текст, json, 2fas', + 'supported_migration_formats' => 'Поддържани формати за миграция', + 'qr_code' => 'QR код', + 'plain_text' => 'Чист текст', + 'issuer' => 'Издател', + 'imported' => 'Импортиран', + 'failure' => 'Грешка', + 'x_valid_accounts_found' => 'Намерени са {count} валидни профила', + 'import_all' => 'Импорт. на всички', + 'import_this_account' => 'Импориране на профила', + 'discard_all' => 'Отхвърли всички', + 'discard_duplicates' => 'Отхвърли дубликатите', + 'discard_this_account' => 'Отхвърли профила', + 'generate_a_test_password' => 'Генериране на тестов код', + 'possible_duplicate' => 'Вече съществува профил със същите данни', + 'invalid_account' => '- невалиден профил -', + 'invalid_service' => '- невалидна услуга -', + 'do_not_set_password_or_encryption' => 'Do NOT enable Password protection or Encryption when you export data (from a 2FA app) you want to import into 2FAuth.', + ], + +]; \ No newline at end of file diff --git a/resources/lang/bg/validation.php b/resources/lang/bg/validation.php new file mode 100644 index 00000000..8adbba16 --- /dev/null +++ b/resources/lang/bg/validation.php @@ -0,0 +1,204 @@ + 'Полето :attribute да бъде приет.', + 'accepted_if' => 'Полето :attribute:attribute да бъде приет когато :other е :value.', + 'active_url' => 'Полето :attribute не е валиден URL.', + 'after' => 'Полето :attribute трябва да е дата след :date.', + 'after_or_equal' => 'Полето :attribute трябва да е дата след или равна на :date.', + 'alpha' => 'The :attribute must only contain letters.', + 'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.', + 'alpha_num' => 'The :attribute must only contain letters and numbers.', + 'array' => 'Полето :attribute трябва да е низ.', + 'before' => 'Полето :attribute трябва да е дата преди :date.', + 'before_or_equal' => 'Полето :attribute трябва да е дата преди или равна на :date.', + 'between' => [ + 'array' => 'Полето :attribute трябва да е между :min и :max елемента.', + 'file' => 'Полето :attribute трябва да е между :min и :max килобайта.', + 'numeric' => 'Полето :attribute трябва да е между :min и :max.', + 'string' => 'Полето :attribute трябва да е между :min и :max символа.', + ], + 'boolean' => 'Полето :attribute трябва да съдържа булева стойност (true или false).', + 'confirmed' => 'Потвърждението на полето :attribute не съвпада.', + 'current_password' => 'Паролата е грешна.', + 'date' => 'Полето :attribute не е валидна дата.', + 'date_equals' => ':attribute трябва да е дата равна на :date.', + 'date_format' => 'Полето :attribute не съвпада с формата :format.', + 'declined' => 'Полето :attribute трябва да бъде отказано.', + 'declined_if' => 'Полето :attribute трябва да бъде отказано когато :other е :value.', + 'different' => 'Полето :attribute и :other трябва да са различни.', + 'digits' => 'Полето :attribute трябва да е :digits цифри.', + 'digits_between' => 'Полето :attribute трябва да е между :min и :max цифри.', + 'dimensions' => 'Полето :attribute съдържа невалидни размери.', + 'distinct' => 'Полето :attribute има дублирана стойност.', + 'doesnt_end_with' => 'The :attribute may not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute may not start with one of the following: :values.', + 'email' => 'Полето :attribute трябва да съдържа валиден имейл.', + 'ends_with' => 'Полето :attribute трябва да завърпва с една от следните стойности: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'Избраното поле :attribute е невалидно.', + 'file' => 'Полето :attribute трябва да е файл.', + 'filled' => 'Полето :attribute трябва да съдържа стойнот.', + 'gt' => [ + 'array' => ':Attribute трябва да разполага с повече от :value елемента.', + 'file' => 'Полето :attribute трябва да е по-голямо от :value килобакта.', + 'numeric' => 'Полето :attribute трябва да е по-голямо от :value.', + 'string' => 'Дължината на :attribute трябва да бъде по-голямо от :value символа.', + ], + 'gte' => [ + 'array' => 'The :attribute must have :value items or more.', + 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be greater than or equal to :value.', + 'string' => 'The :attribute must be greater than or equal to :value characters.', + ], + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'lt' => [ + 'array' => 'The :attribute must have less than :value items.', + 'file' => 'The :attribute must be less than :value kilobytes.', + 'numeric' => 'The :attribute must be less than :value.', + 'string' => 'The :attribute must be less than :value characters.', + ], + 'lte' => [ + 'array' => 'The :attribute must not have more than :value items.', + 'file' => 'The :attribute must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be less than or equal to :value.', + 'string' => 'The :attribute must be less than or equal to :value characters.', + ], + 'mac_address' => 'The :attribute must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute must not have more than :max items.', + 'file' => 'The :attribute must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute must not be greater than :max.', + 'string' => 'The :attribute must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute must not have more than :max digits.', + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute must have at least :min items.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'numeric' => 'The :attribute must be at least :min.', + 'string' => 'The :attribute must be at least :min characters.', + ], + 'min_digits' => 'The :attribute must have at least :min digits.', + 'multiple_of' => 'The :attribute must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'password' => [ + 'letters' => 'The :attribute must contain at least one letter.', + 'mixed' => 'The :attribute must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute must contain at least one number.', + 'symbols' => 'The :attribute must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'present' => 'The :attribute field must be present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'array' => 'The :attribute must contain :size items.', + 'file' => 'The :attribute must be :size kilobytes.', + 'numeric' => 'The :attribute must be :size.', + 'string' => 'The :attribute must be :size characters.', + ], + 'starts_with' => 'The :attribute must start with one of the following: :values.', + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute must be a valid URL.', + 'uuid' => 'The :attribute must be a valid UUID.', + + 'single' => 'When using :attribute it must be the only parameter in this request body', + 'onlyCustomOtpWithUri' => 'The uri parameter must be provided alone or only in combination with the \'custom_otp\' parameter', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'icon' => [ + 'image' => 'Supported format are jpeg, png, bmp, gif, svg, or webp.', + ], + 'qrcode' => [ + 'image' => 'Supported format are jpeg, png, bmp, gif, svg, or webp.', + ], + 'uri' => [ + 'regex' => 'The :attribute is not a valid otpauth uri.', + ], + 'otp_type' => [ + 'in' => 'The :attribute is not supported.', + ], + 'email' => [ + 'exists' => 'No account found using this email.', + ], + 'secret' => [ + 'isBase32Encoded' => 'The :attribute must be a base32 encoded string.', + ], + 'account' => [ + 'regex' => 'The :attribute must not contain colon.', + ], + 'service' => [ + 'regex' => 'The :attribute must not contain colon.', + ], + 'label' => [ + 'required' => 'The uri must have a label.', + ], + 'ids' => [ + 'regex' => 'IDs must be comma separated, without trailing comma.', + ] + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [], + +]; diff --git a/resources/lang/de/auth.php b/resources/lang/de/auth.php index 71fa08d3..3a424f8c 100644 --- a/resources/lang/de/auth.php +++ b/resources/lang/de/auth.php @@ -22,58 +22,57 @@ return [ 'sign_out' => 'Abmelden', 'sign_in' => 'Anmelden', 'sign_in_using' => 'Anmelden mit', - 'sign_in_using_security_device' => 'Sign in using a security device', + 'sign_in_using_security_device' => 'Mit einem Sicherheitsgerät anmelden', 'login_and_password' => 'benutzername & passwort', 'register' => 'Registrieren', - 'welcome_back_x' => 'Willkommen zurück, {0}', + 'welcome_to_2fauth' => 'Welcome to 2FAuth', 'autolock_triggered' => 'Automatische Sperre ausgelöst', - 'autolock_triggered_punchline' => 'The event watched by the Auto Lock feature has fired. You\'ve been automatically disconnected.', - 'change_autolock_in_settings' => 'You can change the behavior of the Autolock feature in Settings > Options tab.', + 'autolock_triggered_punchline' => 'Das Ereignis, das von der Auto-Lock-Funktion beobachtet wird, wurde gestartet. Sie wurden automatisch getrennt.', + 'change_autolock_in_settings' => 'Sie können das Verhalten der Autolock-Funktion unter Einstellungen > Optionen ändern.', 'already_authenticated' => 'Bereits angemeldet', - 'authentication' => 'Authentication', + 'authentication' => 'Authentifizierung', 'maybe_later' => 'Vielleicht später', - 'user_account_controlled_by_proxy' => 'User account made available by an authentication proxy.
Manage the account at proxy level.', - 'auth_handled_by_proxy' => 'Authentication handled by a reverse proxy, below settings are disabled.
Manage authentication at proxy level.', + 'user_account_controlled_by_proxy' => 'Benutzerkonto, das von einem Authentifizierungsproxy zur Verfügung gestellt wurde.
Verwalte das Konto auf Proxy-Ebene.', + 'auth_handled_by_proxy' => 'Authentifizierung von einem Reverse-Proxy verwaltet, unten sind die Einstellungen deaktiviert.
Authentifizierung auf Proxy-Ebene verwalten.', 'confirm' => [ 'logout' => 'Sind Sie sicher, dass Sie sich abmelden möchten?', - 'revoke_device' => 'Are you sure you want to revoke this device?', - 'delete_account' => 'Are you sure you want to delete your account?', + 'revoke_device' => 'Möchten Sie das Gerät wirklich entfernen?', + 'delete_account' => 'Möchten Sie Ihr Konto wirklich löschen?', ], 'webauthn' => [ - 'security_device' => 'a security device', + 'security_device' => 'ein Sicherheitsgerät', 'security_devices' => 'Sicherheitsgeräte', - 'security_devices_legend' => 'Authentication devices you can use to sign in 2FAuth, like security keys (i.e Yubikey) or smartphones with biometric capabilities (i.e. Apple FaceId/TouchId)', + 'security_devices_legend' => 'Authentifizierungsgeräte, mit denen Sie sich in 2FAuth anmelden können, wie z.B. Sicherheitsschlüssel (z.B. Yubikey) oder Smartphones mit biometrischen Fähigkeiten (z.B. Apple FaceId/TouchId)', 'enhance_security_using_webauthn' => 'You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

WebAuthn allows you to use trusted devices (like Yubikeys or smartphones with biometric capabilities) to sign in quickly and more securely.', 'use_security_device_to_sign_in' => 'Get ready to authenticate using (one of) your security devices. Plug your key in, remove face mask or gloves, etc.', 'lost_your_device' => 'Haben Sie Ihr Gerät verloren?', 'recover_your_account' => 'Konto wiederherstellen', 'account_recovery' => 'Kontowiederherstellung', - 'recovery_punchline' => '2FAuth will send you a recovery link to this email address. Click the link in the received email to register a new security device.

Ensure you open the email on a device you fully own.', + 'recovery_punchline' => '2FAuth will send you a recovery link to this email address. Click the link in the received email and follow the instructions.

Ensure you open the email on a device you fully own.', 'send_recovery_link' => 'Send recovery link', 'account_recovery_email_sent' => 'Account recovery email sent!', - 'disable_all_other_devices' => 'Disable all other devices except this one', + 'disable_all_security_devices' => 'Disable all security devices', + 'disable_all_security_devices_help' => 'All your security devices will be revoked. Use this option if you have lost one or its security has been compromised.', 'register_a_new_device' => 'Register a new device', 'register_a_device' => 'Register a device', 'device_successfully_registered' => 'Device successfully registered', 'device_revoked' => 'Device successfully revoked', 'revoking_a_device_is_permanent' => 'Revoking a device is permanent', - 'recover_account_instructions' => 'Click the button below to register a new security device to recover your account. Just follow your browser instructions.', + 'recover_account_instructions' => 'To recover your account, 2FAuth resets some Webauthn settings so you will be able to sign in using your email and password.', 'invalid_recovery_token' => 'Invalid recovery token', + 'webauthn_login_disabled' => 'Webauthn login disabled', + 'invalid_reset_token' => 'This reset token is invalid.', 'rename_device' => 'Rename device', 'my_device' => 'My device', 'unknown_device' => 'Unknown device', 'use_webauthn_only' => [ 'label' => 'Use WebAuthn only', - 'help' => 'Make WebAuthn the only available method to sign in 2FAuth. This is the recommended setup to take advantage of the WebAuthn enhanced security.
- In case of device lost you will always be able to register a new security device to recover your account.' - ], - 'need_a_security_device_to_enable_options' => 'Fügen Sie mindestens ein Gerät hinzu, um diese Optionen zu aktivieren', - 'use_webauthn_as_default' => [ - 'label' => 'Use WebAuthn as default sign in method', - 'help' => 'Set the 2FAuth sign in form to propose the WebAuthn authentication at first. The Login/password method is then available as an alternative/fallback solution.
- This has no effect if you only use WebAuthn.' + 'help' => 'Make WebAuthn the only authorized method to log into your 2FAuth account. This is the recommended setup to take advantage of the WebAuthn enhanced security.

+ In case of device lost, you will be able to recover your account by resetting this option and signing in using your email and password.

+ Attention! The Email & Password form remains available despite this option being enabled, but it will always return an \'Authentication failed\' response.' ], + 'need_a_security_device_to_enable_options' => 'Set at least one device to enable the following options', ], 'forms' => [ 'name' => 'Name', diff --git a/resources/lang/de/commons.php b/resources/lang/de/commons.php index aeec9813..f313e83b 100644 --- a/resources/lang/de/commons.php +++ b/resources/lang/de/commons.php @@ -26,8 +26,8 @@ return [ 'create' => 'Erstellen', 'save' => 'Speichern', 'close' => 'Schließen', - 'clear' => 'Clear', - 'clear_search' => 'Clear search', + 'clear' => 'Leeren', + 'clear_search' => 'Suche leeren', 'demo_do_not_post_sensitive_data' => 'Dies ist eine Demo-App, veröffentlichen Sie keine sensiblen Daten', 'testing_do_not_post_sensitive_data' => 'Dies ist eine Test-App, veröffentlichen Sie keine sensiblen Daten', 'selected' => 'ausgewählt', @@ -37,6 +37,7 @@ return [ 'new' => 'Neu', 'back' => 'Zurück', 'move' => 'Verschieben', + 'export' => 'Exportieren', 'all' => 'Alle', 'select_all' => 'Alle auswählen', 'clear_selection' => 'Auswahl löschen', @@ -59,14 +60,14 @@ return [ 'made_with' => 'Erstellt mit', 'ui_icons_by' => 'UI-Icons von', 'logos_by' => 'Logos von', - 'search' => 'Search', - 'resources' => 'Resources', - 'check_for_update' => 'Check for new version', - 'check_for_update_help' => 'Automatically check (once a week) and warn when a new release of 2FAuth is published on Github', - 'you_are_up_to_date' => 'This instance is up-to-date', - '2fauth_description' => 'A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes', - 'image_of_qrcode_to_scan' => 'Image of a QR code to scan', - 'file' => 'File', - 'or' => 'OR', - 'close_the_x_page' => 'Close the {pagetitle} page', + 'search' => 'Suche', + 'resources' => 'Ressourcen', + 'check_for_update' => 'Auf neue Version prüfen', + 'check_for_update_help' => 'Automatisch überprüfen (einmal pro Woche) und warnen, wenn eine neue Version von 2FAuth auf Github veröffentlicht wird', + 'you_are_up_to_date' => 'Instanz ist auf dem neusten Stand', + '2fauth_description' => 'Eine Web-App um Ihre Zwei-Faktor-Authentifizierung (2FA) Konten zu verwalten und deren Sicherheitscodes zu generieren', + 'image_of_qrcode_to_scan' => 'Bild eines QR-Codes zum Scannen', + 'file' => 'Datei', + 'or' => 'ODER', + 'close_the_x_page' => '{pagetitle} Seite schließen', ]; \ No newline at end of file diff --git a/resources/lang/de/errors.php b/resources/lang/de/errors.php index fade353d..6e76d716 100644 --- a/resources/lang/de/errors.php +++ b/resources/lang/de/errors.php @@ -15,7 +15,6 @@ return [ 'resource_not_found' => 'Resource nicht gefunden', 'error_occured' => 'Ein Fehler ist aufgetreten:', - 'cannot_register_more_user' => 'Sie können nicht mehr als einen Benutzer registrieren.', 'refresh' => 'Aktualisieren', 'no_valid_otp' => 'Keine gültige OTP-Ressource in diesem QR-Code', 'something_wrong_with_server' => 'Etwas stimmt mit Ihrem Server nicht', @@ -34,7 +33,11 @@ return [ 'https_required' => 'HTTPS-Kontext erforderlich', 'browser_does_not_support_webauthn' => 'Ihr Gerät unterstützt nicht webauthn. Versuchen Sie es später mit einem moderneren Browser erneut', 'aborted_by_user' => 'Vom Benutzer abgebrochen', - 'security_device_unsupported' => 'Sicherheitsgerät nicht unterstützt', + 'security_device_unsupported' => 'Unsupported or in use device', + 'not_allowed_operation' => 'Operation not allowed', + 'unsupported_operation' => 'Unsupported operation', + 'unknown_error' => 'Unknown error', + 'security_error_check_rpid' => 'Security error
Check your WEBAUTHN_ID env var', 'unsupported_with_reverseproxy' => 'Nicht anwendbar, wenn ein Auth-Proxy benutzt wird', 'user_deletion_failed' => 'Löschen des Benutzerkontos fehlgeschlagen, es wurden keine Daten gelöscht', 'auth_proxy_failed' => 'Proxy-Anmeldung scheitern', @@ -45,5 +48,8 @@ return [ 'unsupported_otp_type' => 'Nicht unterstützter OTP -Typ', 'encrypted_migration' => 'Unreadable, the data seem encrypted', 'no_logo_found_for_x' => 'Kein Logo verfügbar für {service}', - 'file_upload_failed' => 'File upload failed' + 'file_upload_failed' => 'File upload failed', + 'unauthorized' => 'Unauthorized', + 'unauthorized_legend' => 'You do not have permissions to view this resource or to perform this action', + 'cannot_delete_the_only_admin' => 'Cannot delete the only admin account' ]; \ No newline at end of file diff --git a/resources/lang/de/groups.php b/resources/lang/de/groups.php index e1883fb5..2b9ba1fa 100644 --- a/resources/lang/de/groups.php +++ b/resources/lang/de/groups.php @@ -23,6 +23,7 @@ return [ 'manage_groups_legend' => 'Sie können Gruppen erstellen, um Ihre Konten so zu organisieren wie Sie wollen. Alle Konten bleiben in der Pseudo-Gruppe mit dem Namen "Alle" sichtbar, unabhängig davon, zu welcher Gruppe sie gehören.', 'deleting_group_does_not_delete_accounts' => 'Konten bleiben beim Löschen der Gruppe erhalten', 'move_selected_to' => 'Ausgewählte verschieben', + 'move_selected_to_group' => 'Move selected into a group', 'no_group' => 'Keine Gruppe', 'change_group' => 'Gruppe ändern', 'group_successfully_created' => 'Group successfully created', diff --git a/resources/lang/de/languages.php b/resources/lang/de/languages.php index 30dd9f5a..ee9a4118 100644 --- a/resources/lang/de/languages.php +++ b/resources/lang/de/languages.php @@ -14,4 +14,7 @@ return [ 'en' => 'Englisch', 'fr' => 'Französisch', 'de' => 'Deutsch', + 'es' => 'Spanisch', + 'zh' => 'Vereinfachtes Chinesisch', + 'ru' => 'Russisch', ]; \ No newline at end of file diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php index a9161de8..865f7360 100644 --- a/resources/lang/de/settings.php +++ b/resources/lang/de/settings.php @@ -14,15 +14,20 @@ return [ */ 'settings' => 'Einstellungen', + 'preferences' => 'Preferences', 'account' => 'Account', 'oauth' => 'OAuth', 'webauthn' => 'WebAuthn', 'tokens' => 'Token', 'options' => 'Einstellungen', - 'user_options' => 'Benutzeroptionen', + 'user_preferences' => 'User preferences', + 'admin_settings' => 'Admin settings', 'confirm' => [ ], + 'administration' => 'Administration', + 'administration_legend' => 'While previous settings are user settings (every user can set its own preferences), following settings are global and apply to all users. Only an administrator can view and edit those settings.', + 'you_are_administrator' => 'You are an administrator', 'general' => 'Allgemein', 'security' => 'Sicherheit', 'profile' => 'Profil', @@ -50,10 +55,10 @@ return [ ], 'show_otp_as_dot' => [ 'label' => 'Generierte Einmalpasswörter als Punkte anzeigen', - 'help' => 'Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature' + 'help' => 'Passwortzeichen werden als *** angezeigt, um die Vertraulichkeit zu gewährleisten. Dies beeinflusst nicht die Kopieren/Einfügen Funktion' ], 'close_otp_on_copy' => [ - 'label' => 'Close OTP after copy', + 'label' => 'Schließe OTP nach dem Kopieren', 'help' => 'Clicking a generated password to copy it automatically hide it from the screen' ], 'copy_otp_on_display' => [ @@ -68,8 +73,25 @@ return [ 'label' => 'Anzeigemodus', 'help' => 'Wählen Sie, ob Konten als Liste oder als Raster angezeigt werden sollen' ], + 'password_format' => [ + 'label' => 'Password formatting', + 'help' => 'Change how the passwords are displayed by grouping digits to ease readability and memorization' + ], + 'pair' => 'by Pair', + 'pair_legend' => 'Group digits two by two', + 'trio_legend' => 'Group digits three by three', + 'half_legend' => 'Split digits into two equals groups', + 'trio' => 'by Trio', + 'half' => 'by Half', 'grid' => 'Raster', 'list' => 'Liste', + 'theme' => [ + 'label' => 'Theme', + 'help' => 'Force a specific theme or apply the theme defined in your system/browser preferences' + ], + 'light' => 'Light', + 'dark' => 'Dark', + 'automatic' => 'Auto', 'show_accounts_icons' => [ 'label' => 'Symbole anzeigen', 'help' => 'Kontosymbole in der Hauptansicht anzeigen' diff --git a/resources/lang/de/twofaccounts.php b/resources/lang/de/twofaccounts.php index ac5caa57..640400d5 100644 --- a/resources/lang/de/twofaccounts.php +++ b/resources/lang/de/twofaccounts.php @@ -30,6 +30,7 @@ return [ 'account_updated' => 'Account successfully updated', 'accounts_deleted' => 'Account(s) successfully deleted', 'accounts_moved' => 'Account(s) successfully moved', + 'export_selected_to_json' => 'Download a json export of selected accounts', 'forms' => [ 'service' => [ 'placeholder' => 'Google, Twitter, Apple', @@ -155,7 +156,7 @@ return [ 'possible_duplicate' => 'Ein Konto mit der gleichen Daten ist bereits vorhanden', 'invalid_account' => '- invalid account -', 'invalid_service' => '- invalid service -', - 'do_not_set_password_or_encryption' => 'Do NOT set a password or encryption On when you export data from a 2FA app.', + 'do_not_set_password_or_encryption' => 'Do NOT enable Password protection or Encryption when you export data (from a 2FA app) you want to import into 2FAuth.', ], ]; \ No newline at end of file diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php index 26d206d4..433fa831 100644 --- a/resources/lang/de/validation.php +++ b/resources/lang/de/validation.php @@ -18,17 +18,17 @@ return [ 'active_url' => ':attribute ist keine gültige Internet-Adresse.', 'after' => ':attribute muss ein Datum nach dem :date sein.', 'after_or_equal' => ':attribute muss ein Datum nach dem :date oder gleich dem :date sein.', - 'alpha' => ':attribute darf nur aus Buchstaben bestehen.', - 'alpha_dash' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen.', - 'alpha_num' => ':attribute darf nur aus Buchstaben und Zahlen bestehen.', + 'alpha' => 'The :attribute must only contain letters.', + 'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.', + 'alpha_num' => 'The :attribute must only contain letters and numbers.', 'array' => ':attribute muss ein Array sein.', 'before' => ':attribute muss ein Datum vor dem :date sein.', 'before_or_equal' => ':attribute muss ein Datum vor dem :date oder gleich dem :date sein.', 'between' => [ - 'numeric' => ':attribute muss zwischen :min & :max liegen.', - 'file' => ':attribute muss zwischen :min & :max Kilobytes groß sein.', - 'string' => ':attribute muss zwischen :min & :max Zeichen lang sein.', 'array' => ':attribute muss zwischen :min & :max Elemente haben.', + 'file' => ':attribute muss zwischen :min & :max Kilobytes groß sein.', + 'numeric' => ':attribute muss zwischen :min & :max liegen.', + 'string' => ':attribute muss zwischen :min & :max Zeichen lang sein.', ], 'boolean' => ':attribute muss entweder \'true\' oder \'false\' sein.', 'confirmed' => ':attribute stimmt nicht mit der Bestätigung überein.', @@ -43,22 +43,25 @@ return [ 'digits_between' => ':attribute muss zwischen :min und :max Stellen haben.', 'dimensions' => ':attribute hat ungültige Bildabmessungen.', 'distinct' => ':attribute beinhaltet einen bereits vorhandenen Wert.', + 'doesnt_end_with' => 'The :attribute may not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute may not start with one of the following: :values.', 'email' => ':attribute muss eine gültige E-Mail-Adresse sein.', 'ends_with' => ':attribute muss eine der folgenden Endungen aufweisen: :values', + 'enum' => 'The selected :attribute is invalid.', 'exists' => 'Der gewählte Wert für :attribute ist ungültig.', 'file' => ':attribute muss eine Datei sein.', 'filled' => ':attribute muss ausgefüllt sein.', 'gt' => [ - 'numeric' => ':attribute muss größer als :value sein.', - 'file' => ':attribute muss größer als :value Kilobytes sein.', - 'string' => ':attribute muss länger als :value Zeichen sein.', 'array' => ':attribute muss mehr als :value Elemente haben.', + 'file' => ':attribute muss größer als :value Kilobytes sein.', + 'numeric' => ':attribute muss größer als :value sein.', + 'string' => ':attribute muss länger als :value Zeichen sein.', ], 'gte' => [ - 'numeric' => ':attribute muss größer oder gleich :value sein.', - 'file' => ':attribute muss größer oder gleich :value Kilobytes sein.', - 'string' => ':attribute muss mindestens :value Zeichen lang sein.', 'array' => ':attribute muss mindestens :value Elemente haben.', + 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be greater than or equal to :value.', + 'string' => 'The :attribute must be greater than or equal to :value characters.', ], 'image' => ':attribute muss ein Bild sein.', 'in' => 'Der gewählte Wert für :attribute ist ungültig.', @@ -69,36 +72,45 @@ return [ 'ipv6' => ':attribute muss eine gültige IPv6-Adresse sein.', 'json' => ':attribute muss ein gültiger JSON-String sein.', 'lt' => [ - 'numeric' => ':attribute muss kleiner als :value sein.', - 'file' => ':attribute muss kleiner als :value Kilobytes sein.', - 'string' => ':attribute muss kürzer als :value Zeichen sein.', 'array' => ':attribute muss weniger als :value Elemente haben.', + 'file' => ':attribute muss kleiner als :value Kilobytes sein.', + 'numeric' => ':attribute muss kleiner als :value sein.', + 'string' => ':attribute muss kürzer als :value Zeichen sein.', ], 'lte' => [ - 'numeric' => ':attribute muss kleiner oder gleich :value sein.', - 'file' => ':attribute muss kleiner oder gleich :value Kilobytes sein.', - 'string' => ':attribute darf maximal :value Zeichen lang sein.', 'array' => ':attribute darf maximal :value Elemente haben.', + 'file' => 'The :attribute must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be less than or equal to :value.', + 'string' => 'The :attribute must be less than or equal to :value characters.', ], + 'mac_address' => 'The :attribute must be a valid MAC address.', 'max' => [ - 'numeric' => ':attribute darf maximal :max sein.', - 'file' => ':attribute darf maximal :max Kilobytes groß sein.', - 'string' => ':attribute darf maximal :max Zeichen haben.', - 'array' => ':attribute darf maximal :max Elemente haben.', + 'array' => 'The :attribute must not have more than :max items.', + 'file' => 'The :attribute must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute must not be greater than :max.', + 'string' => 'The :attribute must not be greater than :max characters.', ], + 'max_digits' => 'The :attribute must not have more than :max digits.', 'mimes' => ':attribute muss den Dateityp :values haben.', 'mimetypes' => ':attribute muss den Dateityp :values haben.', 'min' => [ - 'numeric' => ':attribute muss mindestens :min sein.', - 'file' => ':attribute muss mindestens :min Kilobytes groß sein.', - 'string' => ':attribute muss mindestens :min Zeichen lang sein.', 'array' => ':attribute muss mindestens :min Elemente haben.', + 'file' => ':attribute muss mindestens :min Kilobytes groß sein.', + 'numeric' => ':attribute muss mindestens :min sein.', + 'string' => ':attribute muss mindestens :min Zeichen lang sein.', ], + 'min_digits' => 'The :attribute must have at least :min digits.', 'multiple_of' => 'The :attribute must be a multiple of :value.', 'not_in' => 'Der gewählte Wert für :attribute ist ungültig.', 'not_regex' => ':attribute hat ein ungültiges Format.', 'numeric' => ':attribute muss eine Zahl sein.', - 'password' => 'Das Passwort ist falsch.', + 'password' => [ + 'letters' => 'The :attribute must contain at least one letter.', + 'mixed' => 'The :attribute must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute must contain at least one number.', + 'symbols' => 'The :attribute must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], 'present' => ':attribute muss vorhanden sein.', 'prohibited' => 'The :attribute field is prohibited.', 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', @@ -106,7 +118,9 @@ return [ 'prohibits' => 'The :attribute field prohibits :other from being present.', 'regex' => ':attribute Format ist ungültig.', 'required' => ':attribute muss ausgefüllt werden.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', 'required_if' => ':attribute muss ausgefüllt werden, wenn :other den Wert :value hat.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', 'required_unless' => ':attribute muss ausgefüllt werden, wenn :other nicht den Wert :values hat.', 'required_with' => ':attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', 'required_with_all' => ':attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', @@ -114,17 +128,17 @@ return [ 'required_without_all' => ':attribute muss ausgefüllt werden, wenn keines der Felder :values ausgefüllt wurde.', 'same' => ':attribute und :other müssen übereinstimmen.', 'size' => [ - 'numeric' => ':attribute muss gleich :size sein.', - 'file' => ':attribute muss :size Kilobyte groß sein.', - 'string' => ':attribute muss :size Zeichen lang sein.', 'array' => ':attribute muss genau :size Elemente haben.', + 'file' => ':attribute muss :size Kilobyte groß sein.', + 'numeric' => ':attribute muss gleich :size sein.', + 'string' => ':attribute muss :size Zeichen lang sein.', ], 'starts_with' => ':attribute muss mit einem der folgenden Anfänge aufweisen: :values', 'string' => ':attribute muss ein String sein.', - 'timezone' => ':attribute muss eine gültige Zeitzone sein.', + 'timezone' => 'The :attribute must be a valid timezone.', 'unique' => ':attribute ist bereits vergeben.', 'uploaded' => ':attribute konnte nicht hochgeladen werden.', - 'url' => ':attribute muss eine gültige URL sein.', + 'url' => 'The :attribute must be a valid URL.', 'uuid' => ':attribute muss ein UUID sein.', 'single' => 'When using :attribute it must be the only parameter in this request body', @@ -171,9 +185,6 @@ return [ ], 'ids' => [ 'regex' => 'IDs must be comma separated, without trailing comma.', - ], - 'name' => [ - 'firstUser' => 'Es gibt schon einen registrierten Anwender', ] ], diff --git a/resources/lang/es/auth.php b/resources/lang/es/auth.php index 0a652b07..941288a5 100644 --- a/resources/lang/es/auth.php +++ b/resources/lang/es/auth.php @@ -22,10 +22,10 @@ return [ 'sign_out' => 'Cerrar sesión', 'sign_in' => 'Iniciar sesión', 'sign_in_using' => 'Inicia sesión, usando', - 'sign_in_using_security_device' => 'Sign in using a security device', + 'sign_in_using_security_device' => 'Iniciar sesión usando un dispositivo de seguridad', 'login_and_password' => 'usuario y contraseña', 'register' => 'Registrarse', - 'welcome_back_x' => 'Bienvenido/a otra vez {0}', + 'welcome_to_2fauth' => 'Welcome to 2FAuth', 'autolock_triggered' => 'Autobloqueo activado', 'autolock_triggered_punchline' => 'El evento observado por el Auto Bloqueo ha sido activado. Has sido desconectado automáticamente.', 'change_autolock_in_settings' => 'Puedes cambiar el comportamiento de la función Auto Bloqueo en la pestaña Configuración > Opciones.', @@ -49,31 +49,30 @@ return [ 'lost_your_device' => '¿Perdió su dispositivo?', 'recover_your_account' => 'Recuperar su cuenta', 'account_recovery' => 'Recuperación cuenta', - 'recovery_punchline' => '2FAuth enviará un enlace de recuperación a esta dirección de correo. Clic en el enlace recibido para registrar un nuevo dispositivo de seguridad.

Asegúrese de abrir el correo en un dispositivo de confianza.', + 'recovery_punchline' => '2FAuth will send you a recovery link to this email address. Click the link in the received email and follow the instructions.

Ensure you open the email on a device you fully own.', 'send_recovery_link' => 'Enviar enlace de recuperación', 'account_recovery_email_sent' => '¡Correo de recuperación de cuenta enviado!', - 'disable_all_other_devices' => 'Desactivar el resto de dispositivos, excepto éste', + 'disable_all_security_devices' => 'Disable all security devices', + 'disable_all_security_devices_help' => 'All your security devices will be revoked. Use this option if you have lost one or its security has been compromised.', 'register_a_new_device' => 'Registrar un nuevo dispositivo', - 'register_a_device' => 'Register a device', + 'register_a_device' => 'Registrar un dispositivo', 'device_successfully_registered' => 'Dispositivo registrado correctamente', 'device_revoked' => 'Dispositivo revocado correctamente', 'revoking_a_device_is_permanent' => 'El revocado de un dispositivo es permanente', - 'recover_account_instructions' => 'Clic en el botón de abajo para registrar un nuevo dispositivo para recuperar su cuenta. Simplemente, siga las instrucciones del navegador.', + 'recover_account_instructions' => 'To recover your account, 2FAuth resets some Webauthn settings so you will be able to sign in using your email and password.', 'invalid_recovery_token' => 'Token de recuperación inválido', + 'webauthn_login_disabled' => 'Webauthn login disabled', + 'invalid_reset_token' => 'This reset token is invalid.', 'rename_device' => 'Renombrar dispositivo', 'my_device' => 'Mi dispositivo', 'unknown_device' => 'Dispositivo desconocido', 'use_webauthn_only' => [ 'label' => 'Usar WebAuthn solo', - 'help' => 'Hacer que WebAuthn sea el único método para iniciar sesión disponible en 2FAuth. Esta es la configuración recomendada para aprovechar la mejora en la seguridad de WebAuthn.
- En caso de pérdida del dispositivo, siempre tendrá la posibilidad de registrar un nuevo dispositivo de seguridad para recuperar su cuenta.' - ], - 'need_a_security_device_to_enable_options' => 'Establezca, al menos, un dispositivo para activar estas opciones', - 'use_webauthn_as_default' => [ - 'label' => 'Usar WebAuthn como método de inicio de sesión predeterminado', - 'help' => 'Establezca el formulario de inicio de sesión de 2FAuth para proponer la autenticación WebAuthn en primer lugar. El método Login/password está entonces disponible como solución alternativa o de retorno.
- Esto no tiene efecto si sólo utiliza WebAuthn.' + 'help' => 'Make WebAuthn the only authorized method to log into your 2FAuth account. This is the recommended setup to take advantage of the WebAuthn enhanced security.

+ In case of device lost, you will be able to recover your account by resetting this option and signing in using your email and password.

+ Attention! The Email & Password form remains available despite this option being enabled, but it will always return an \'Authentication failed\' response.' ], + 'need_a_security_device_to_enable_options' => 'Set at least one device to enable the following options', ], 'forms' => [ 'name' => 'Nombre', @@ -81,8 +80,8 @@ return [ 'webauthn_login' => 'Inicio de sesión WebAuthn', 'email' => 'E-mail', 'password' => 'Contraseña', - 'reveal_password' => 'Reveal password', - 'hide_password' => 'Hide password', + 'reveal_password' => 'Revelar contraseña', + 'hide_password' => 'Ocultar contraseña', 'confirm_password' => 'Confirmar contraseña', 'confirm_new_password' => 'Confirma la contraseña nueva', 'dont_have_account_yet' => '¿Aún no tienes una cuenta?', @@ -90,7 +89,7 @@ return [ 'authentication_failed' => 'La autenticación ha fallado', 'forgot_your_password' => '¿Olvidó su contraseña?', 'request_password_reset' => 'Reiniciarlo', - 'reset_your_password' => 'Reset your password', + 'reset_your_password' => 'Reestablecer tu contraseña', 'reset_password' => 'Restablecer contraseña', 'disabled_in_demo' => 'Característica desactivada en el modo Demo', 'new_password' => 'Nueva contraseña', @@ -105,21 +104,21 @@ return [ 'profile_saved' => '¡Perfil actualizado con éxito!', 'welcome_to_demo_app_use_those_credentials' => 'Bienvenido/a a la demostración de 2FAuth.

Puedes conectarte usando el email demo@2fauth.app y la contraseña demo', 'welcome_to_testing_app_use_those_credentials' => 'Bienvenido/a a la instancia de prueba 2FAuth.

Usa el email testing@2fauth.app y la contraseña password', - 'register_punchline' => 'Welcome to 2FAuth.
You need an account to go further, please register yourself.', + 'register_punchline' => 'Bienvenido a 2FAuth.
Necesitas una cuenta para ir más allá, por favor, regístrate.', 'reset_punchline' => '2FAuth le enviará un enlace para restablecer la contraseña a esta dirección. Haga clic en el enlace en el correo electrónico recibido para establecer una nueva contraseña.', 'name_this_device' => 'Proporcione nombre al dispositivo', 'delete_account' => 'Eliminar cuenta', 'delete_your_account' => 'Eliminar su cuenta', 'delete_your_account_and_reset_all_data' => 'Esto restablecerá 2FAuth. Su cuenta de usuario se eliminará, así como, todos los datos de 2FA. No hay vuelta atrás.', 'user_account_successfully_deleted' => 'Cuenta de usuario eliminada correctamente', - 'has_lower_case' => 'Has lower case', - 'has_upper_case' => 'Has upper case', - 'has_special_char' => 'Has special char', - 'has_number' => 'Has number', - 'is_long_enough' => '8 characters min.', - 'mandatory_rules' => 'Mandatory', - 'optional_rules_you_should_follow' => 'Recommanded (highly)', - 'caps_lock_is_on' => 'Caps lock is On', + 'has_lower_case' => 'Tiene minúsculas', + 'has_upper_case' => 'Tiene mayúsculas', + 'has_special_char' => 'Tiene carácter especial', + 'has_number' => 'Tiene número', + 'is_long_enough' => '8 carácteres min.', + 'mandatory_rules' => 'Obligatorio', + 'optional_rules_you_should_follow' => 'Recomendado (altamente)', + 'caps_lock_is_on' => 'Bloqueo de mayúsculas está Activado', ], ]; diff --git a/resources/lang/es/commons.php b/resources/lang/es/commons.php index bddd5884..0800d10b 100644 --- a/resources/lang/es/commons.php +++ b/resources/lang/es/commons.php @@ -26,8 +26,8 @@ return [ 'create' => 'Crear', 'save' => 'Guardar', 'close' => 'Cerrar', - 'clear' => 'Clear', - 'clear_search' => 'Clear search', + 'clear' => 'Limpiar', + 'clear_search' => 'Limpiar búsqueda', 'demo_do_not_post_sensitive_data' => 'Esta instancia es para demostracion, no ingrese informacion privada', 'testing_do_not_post_sensitive_data' => 'Esta instancia es para demostracion, no ingrese informacion privada', 'selected' => 'seleccionado', @@ -37,6 +37,7 @@ return [ 'new' => 'Nuevo', 'back' => 'Volver', 'move' => 'Mover', + 'export' => 'Export', 'all' => 'Todo', 'select_all' => 'Seleccionar todo', 'clear_selection' => 'Borrar selección', @@ -59,14 +60,14 @@ return [ 'made_with' => 'Hecho con', 'ui_icons_by' => 'Iconos UI por', 'logos_by' => 'Logos por', - 'search' => 'Search', - 'resources' => 'Resources', - 'check_for_update' => 'Check for new version', - 'check_for_update_help' => 'Automatically check (once a week) and warn when a new release of 2FAuth is published on Github', - 'you_are_up_to_date' => 'This instance is up-to-date', - '2fauth_description' => 'A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes', - 'image_of_qrcode_to_scan' => 'Image of a QR code to scan', - 'file' => 'File', - 'or' => 'OR', - 'close_the_x_page' => 'Close the {pagetitle} page', + 'search' => 'Buscar', + 'resources' => 'Recursos', + 'check_for_update' => 'Comprobar nueva versión', + 'check_for_update_help' => 'Comprobar automáticamente (una vez por semana), y avisar si una nueva versión de 2FAuth se publique en Github', + 'you_are_up_to_date' => 'Esta instancia está actualizada', + '2fauth_description' => 'Una app web para administrar tus cuentas de autenticación de doble factor (2FA), y generar tus códigos de seguridad', + 'image_of_qrcode_to_scan' => 'Imagen de código QR para escanear', + 'file' => 'Archivo', + 'or' => 'O', + 'close_the_x_page' => 'Cerrar la página {pagetitle}', ]; \ No newline at end of file diff --git a/resources/lang/es/errors.php b/resources/lang/es/errors.php index 597b19b1..69fb473e 100644 --- a/resources/lang/es/errors.php +++ b/resources/lang/es/errors.php @@ -15,14 +15,13 @@ return [ 'resource_not_found' => 'Recurso no encontrado', 'error_occured' => 'Se ha producido un error:', - 'cannot_register_more_user' => 'No puede registrar más de un usuario.', 'refresh' => 'Actualizar', 'no_valid_otp' => 'No hay un recurso OTP válido en este código QR', 'something_wrong_with_server' => 'Algo va mal con su servidor', 'Unable_to_decrypt_uri' => 'No se puede descifrar uri', 'not_a_supported_otp_type' => 'Este formato OTP no está soportado actualmente', 'cannot_create_otp_without_secret' => 'No se puede crear un OTP sin una clave secreta', - 'data_of_qrcode_is_not_valid_URI' => 'The data of this QR code is not a valid OTP Auth URI. The QR code contains:', + 'data_of_qrcode_is_not_valid_URI' => 'Los datos de este código QR no son una URI OTP de Autenticación. El código QR contiene:', 'wrong_current_password' => 'Contraseña actual incorrecta, no ha cambiado nada', 'error_during_encryption' => 'El cifrado falló, la base de datos permanece sin protección.', 'error_during_decryption' => 'El descifrado falló, su base de datos todavía está protegida. Esto se debe, principalmente, a un problema de integridad de datos cifrados para una o más cuentas.', @@ -34,16 +33,23 @@ return [ 'https_required' => 'Contexto HTTPS requerido', 'browser_does_not_support_webauthn' => 'Su dispositivo no soporta WebAuthn. Intente de nuevo más tarde en un navegador más moderno', 'aborted_by_user' => 'Abortado por el usuario', - 'security_device_unsupported' => 'Dispositivo de seguridad no soportado', + 'security_device_unsupported' => 'Unsupported or in use device', + 'not_allowed_operation' => 'Operation not allowed', + 'unsupported_operation' => 'Unsupported operation', + 'unknown_error' => 'Unknown error', + 'security_error_check_rpid' => 'Security error
Check your WEBAUTHN_ID env var', 'unsupported_with_reverseproxy' => 'No aplicable cuando se utiliza un proxy de autenticación', 'user_deletion_failed' => 'Error al borrar la cuenta de usuario, no se han eliminado datos', 'auth_proxy_failed' => 'La autenticación proxy falló', 'auth_proxy_failed_legend' => '2FAuth está configurado para ejecutarse detrás de un proxy de autenticación, pero, su proxy no devuelve el encabezado esperado. Compruebe su configuración e intente de nuevo.', - 'invalid_x_migration' => 'Invalid or unreadable :appname data', - 'invalid_2fa_data' => 'Invalid 2FA data', - 'unsupported_migration' => 'Data do not match any supported format', + 'invalid_x_migration' => 'Inválido o ilegible: datos de ', + 'invalid_2fa_data' => 'Datos 2FA inválidos', + 'unsupported_migration' => 'Los datos no coinciden con ningún formato soportado', 'unsupported_otp_type' => 'Tipo de OTP no soportada', - 'encrypted_migration' => 'Unreadable, the data seem encrypted', + 'encrypted_migration' => 'Ilegíble, los datos parecen estar encriptados', 'no_logo_found_for_x' => 'Logo no disponible para {service}', - 'file_upload_failed' => 'File upload failed' + 'file_upload_failed' => 'Fallo al subir el archivo', + 'unauthorized' => 'Unauthorized', + 'unauthorized_legend' => 'You do not have permissions to view this resource or to perform this action', + 'cannot_delete_the_only_admin' => 'Cannot delete the only admin account' ]; \ No newline at end of file diff --git a/resources/lang/es/groups.php b/resources/lang/es/groups.php index 69935b10..adc60c6c 100644 --- a/resources/lang/es/groups.php +++ b/resources/lang/es/groups.php @@ -15,19 +15,20 @@ return [ 'groups' => 'Grupos', 'create_group' => 'Crear nuevo grupo', - 'show_group_selector' => 'Show group selector', - 'hide_group_selector' => 'Hide group selector', - 'select_accounts_to_show' => 'Select accounts group to show', + 'show_group_selector' => 'Ver selector de grupo', + 'hide_group_selector' => 'Ocultar selector de grupo', + 'select_accounts_to_show' => 'Seleccionar grupo de cuenta a mostrar', 'manage_groups' => 'Gestionar grupos', 'active_group' => 'Grupo activo', 'manage_groups_legend' => 'Puedes crear grupos para organizar tus cuentas de la manera que quieras. Todas las cuentas permanecen visibles en el pseudo grupo llamado \'Todo\', independientemente del grupo al que pertenezcan.', 'deleting_group_does_not_delete_accounts' => 'La eliminación de un grupo no elimina cuentas', 'move_selected_to' => 'Mover selección a', + 'move_selected_to_group' => 'Move selected into a group', 'no_group' => 'Sin grupo', 'change_group' => 'Cambiar grupo', - 'group_successfully_created' => 'Group successfully created', - 'group_name_saved' => 'Group name saved', - 'group_successfully_deleted' => 'Group successfully deleted', + 'group_successfully_created' => 'Grupo creado correctamente', + 'group_name_saved' => 'Nombre de grupo guardado', + 'group_successfully_deleted' => 'Grupo eliminado correctamente', 'forms' => [ 'new_group' => 'Nuevo grupo', 'new_name' => 'Nuevo nombre', diff --git a/resources/lang/es/languages.php b/resources/lang/es/languages.php index 371a581b..3ab90006 100644 --- a/resources/lang/es/languages.php +++ b/resources/lang/es/languages.php @@ -14,4 +14,7 @@ return [ 'en' => 'Inglés', 'fr' => 'Francés', 'de' => 'Alemán', + 'es' => 'Español', + 'zh' => 'Chino Simplificado', + 'ru' => 'Russian', ]; \ No newline at end of file diff --git a/resources/lang/es/settings.php b/resources/lang/es/settings.php index 4ef8eb61..5c8ed830 100644 --- a/resources/lang/es/settings.php +++ b/resources/lang/es/settings.php @@ -14,15 +14,20 @@ return [ */ 'settings' => 'Ajustes', + 'preferences' => 'Preferences', 'account' => 'Cuenta', 'oauth' => 'OAuth', 'webauthn' => 'WebAuthn', 'tokens' => 'Tokens', 'options' => 'Opciones', - 'user_options' => 'Opciones de usuario', + 'user_preferences' => 'User preferences', + 'admin_settings' => 'Admin settings', 'confirm' => [ ], + 'administration' => 'Administration', + 'administration_legend' => 'While previous settings are user settings (every user can set its own preferences), following settings are global and apply to all users. Only an administrator can view and edit those settings.', + 'you_are_administrator' => 'You are an administrator', 'general' => 'General', 'security' => 'Seguridad', 'profile' => 'Perfil', @@ -50,15 +55,15 @@ return [ ], 'show_otp_as_dot' => [ 'label' => 'Mostrar contraseñas generadas de un solo uso como punto', - 'help' => 'Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature' + 'help' => 'Reemplaza carácteres de contraseñas generados con *** para asegurar confidencialidad. No afecta la función copiar/pegar.' ], 'close_otp_on_copy' => [ - 'label' => 'Close OTP after copy', - 'help' => 'Clicking a generated password to copy it automatically hide it from the screen' + 'label' => 'Cerrar OTP después de copiar', + 'help' => 'Haciendo clic en la contraseña generada para copiarla, la oculta automáticamente de la pantalla' ], 'copy_otp_on_display' => [ - 'label' => 'Copy OTP on display', - 'help' => 'Automatically copy a generated password right after it appears on screen. Due to browsers limitations, only the first TOTP password will be copied, not the rotating ones' + 'label' => 'Copiar OTP en pantalla', + 'help' => 'Copiar automáticamente la contraseña justo después de aparecer en pantalla. Debido a limitaciones en los navegadores, solo la primera contraseña TOTP será copiada, no las que roten' ], 'use_basic_qrcode_reader' => [ 'label' => 'Usar lector de código QR básico', @@ -68,8 +73,25 @@ return [ 'label' => 'Modo de visualización', 'help' => 'Elija si desea que las cuentas se muestren como una lista o como una cuadrícula' ], + 'password_format' => [ + 'label' => 'Password formatting', + 'help' => 'Change how the passwords are displayed by grouping digits to ease readability and memorization' + ], + 'pair' => 'by Pair', + 'pair_legend' => 'Group digits two by two', + 'trio_legend' => 'Group digits three by three', + 'half_legend' => 'Split digits into two equals groups', + 'trio' => 'by Trio', + 'half' => 'by Half', 'grid' => 'Cuadrícula', 'list' => 'Lista', + 'theme' => [ + 'label' => 'Theme', + 'help' => 'Force a specific theme or apply the theme defined in your system/browser preferences' + ], + 'light' => 'Light', + 'dark' => 'Dark', + 'automatic' => 'Auto', 'show_accounts_icons' => [ 'label' => 'Mostrar iconos', 'help' => 'Mostar iconos de aplicaciones en la vista principal' diff --git a/resources/lang/es/twofaccounts.php b/resources/lang/es/twofaccounts.php index 80059809..90b73eed 100644 --- a/resources/lang/es/twofaccounts.php +++ b/resources/lang/es/twofaccounts.php @@ -17,19 +17,20 @@ return [ 'account' => 'Cuenta', 'accounts' => 'Cuentas', 'icon' => 'Icono', - 'icon_for_account_x_at_service_y' => 'Icon of the {account} account at {service}', - 'icon_to_illustrate_the_account' => 'Icon that illustrates the account', - 'remove_icon' => 'Remove icon', + 'icon_for_account_x_at_service_y' => 'Icono de la cuenta {account} en {service}', + 'icon_to_illustrate_the_account' => 'Icono que representa a la cuenta', + 'remove_icon' => 'Eliminar icono', 'no_account_here' => '¡No hay 2FA aquí!', - 'add_first_account' => 'Pick a method and add your first account', + 'add_first_account' => 'Elige un método y añade tu primer cuenta', 'use_full_form' => 'O usa el formulario completo', 'add_one' => 'Agregar uno', 'show_qrcode' => 'Muestra el código QR', 'no_service' => '- sin servicio -', - 'account_created' => 'Account successfully created', - 'account_updated' => 'Account successfully updated', - 'accounts_deleted' => 'Account(s) successfully deleted', - 'accounts_moved' => 'Account(s) successfully moved', + 'account_created' => 'Cuenta creada correctamente', + 'account_updated' => 'Cuenta actualizada correctamente', + 'accounts_deleted' => 'Cuenta(s) eliminada(s) correctamente', + 'accounts_moved' => 'Cuenta(s) movida(s) correctamente', + 'export_selected_to_json' => 'Download a json export of selected accounts', 'forms' => [ 'service' => [ 'placeholder' => 'Google, Twitter, Apple', @@ -66,8 +67,8 @@ return [ ], 'plain_text' => 'Texto plano', 'otp_type' => [ - 'label' => 'Choose the type of OTP to create', - 'help' => 'Time-based OTP or HMAC-based OTP or Steam OTP' + 'label' => 'Elige el tipo de OTP a crear', + 'help' => 'Time-based OTP, HMAC-based OTP o Steam OTP' ], 'digits' => [ 'label' => 'Dígitos', @@ -134,14 +135,14 @@ return [ 'import' => [ 'import' => 'Import', 'to_import' => 'Importar', - 'import_legend' => '2FAuth can import data from various 2FA apps.
Use the Export feature of these apps to get a migration resource (a QR code or a file) and load it using your preferred method below.', - 'upload' => 'Upload', - 'scan' => 'Scan', - 'supported_formats_for_qrcode_upload' => 'Accepted: jpg, jpeg, png, bmp, gif, svg, or webp', - 'supported_formats_for_file_upload' => 'Accepted: Plain text, json, 2fas', - 'supported_migration_formats' => 'Supported migration formats', - 'qr_code' => 'QR Code', - 'plain_text' => 'Plain text', + 'import_legend' => '2FAuth puede importar datos de varias apps 2FA.
Usa la función de Exportación de éstas apps para generar los recursos de migración (código QR o archivo), y cargalo usando el método preferido abajo.', + 'upload' => 'Subir', + 'scan' => 'Escanear', + 'supported_formats_for_qrcode_upload' => 'Aceptado: jpg, jpeg, png, bmp, gif, svg, o webp', + 'supported_formats_for_file_upload' => 'Aceptado: texto plano, json, 2fas', + 'supported_migration_formats' => 'Formatos de migración soportados', + 'qr_code' => 'Código QR', + 'plain_text' => 'Texto plano', 'issuer' => 'Emisor', 'imported' => 'Importado', 'failure' => 'Fallo', @@ -153,9 +154,9 @@ return [ 'discard_this_account' => 'Descartar esta cuenta', 'generate_a_test_password' => 'Generar una contraseña de prueba', 'possible_duplicate' => 'Ya existe una cuenta con exactamente los mismos datos', - 'invalid_account' => '- invalid account -', - 'invalid_service' => '- invalid service -', - 'do_not_set_password_or_encryption' => 'Do NOT set a password or encryption On when you export data from a 2FA app.', + 'invalid_account' => '- cuenta inválida -', + 'invalid_service' => '- servicio inválido -', + 'do_not_set_password_or_encryption' => 'Do NOT enable Password protection or Encryption when you export data (from a 2FA app) you want to import into 2FAuth.', ], ]; \ No newline at end of file diff --git a/resources/lang/es/validation.php b/resources/lang/es/validation.php index 45adc361..eb74f66e 100644 --- a/resources/lang/es/validation.php +++ b/resources/lang/es/validation.php @@ -18,17 +18,17 @@ return [ 'active_url' => ':attribute no es una URL válida.', 'after' => ':attribute debe ser una fecha posterior a :date.', 'after_or_equal' => ':attribute debe ser una fecha posterior o igual a :date.', - 'alpha' => ':attribute sólo debe contener letras.', - 'alpha_dash' => ':attribute sólo debe contener letras, números, guiones y guiones bajos.', - 'alpha_num' => ':attribute sólo debe contener letras y números.', + 'alpha' => 'The :attribute must only contain letters.', + 'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.', + 'alpha_num' => 'The :attribute must only contain letters and numbers.', 'array' => ':attribute debe ser un conjunto de datos.', 'before' => ':attribute debe ser una fecha anterior a :date.', 'before_or_equal' => ':attribute debe ser una fecha anterior o igual a :date.', 'between' => [ - 'numeric' => ':attribute tiene que estar entre :min - :max.', - 'file' => ':attribute debe pesar entre :min - :max kilobytes.', - 'string' => ':attribute tiene que tener entre :min - :max caracteres.', 'array' => ':attribute tiene que tener entre :min - :max elementos.', + 'file' => ':attribute debe pesar entre :min - :max kilobytes.', + 'numeric' => ':attribute tiene que estar entre :min - :max.', + 'string' => ':attribute tiene que tener entre :min - :max caracteres.', ], 'boolean' => 'El campo :attribute debe tener un valor verdadero o falso.', 'confirmed' => 'La confirmación de :attribute no coincide.', @@ -43,22 +43,25 @@ return [ 'digits_between' => ':attribute debe tener entre :min y :max dígitos.', 'dimensions' => 'Las dimensiones de la imagen :attribute no son válidas.', 'distinct' => 'El campo :attribute contiene un valor duplicado.', + 'doesnt_end_with' => 'The :attribute may not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute may not start with one of the following: :values.', 'email' => ':attribute no es un correo válido.', 'ends_with' => 'El campo :attribute debe finalizar con uno de los siguientes valores: :values', + 'enum' => 'The selected :attribute is invalid.', 'exists' => ':attribute es inválido.', 'file' => 'El campo :attribute debe ser un archivo.', 'filled' => 'El campo :attribute es obligatorio.', 'gt' => [ - 'numeric' => 'El campo :attribute debe ser mayor que :value.', - 'file' => 'El campo :attribute debe tener más de :value kilobytes.', - 'string' => 'El campo :attribute debe tener más de :value caracteres.', 'array' => 'El campo :attribute debe tener más de :value elementos.', + 'file' => 'El campo :attribute debe tener más de :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser mayor que :value.', + 'string' => 'El campo :attribute debe tener más de :value caracteres.', ], 'gte' => [ - 'numeric' => 'El campo :attribute debe ser como mínimo :value.', - 'file' => 'El campo :attribute debe tener como mínimo :value kilobytes.', - 'string' => 'El campo :attribute debe tener como mínimo :value caracteres.', 'array' => 'El campo :attribute debe tener como mínimo :value elementos.', + 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be greater than or equal to :value.', + 'string' => 'The :attribute must be greater than or equal to :value characters.', ], 'image' => ':attribute debe ser una imagen.', 'in' => ':attribute es inválido.', @@ -69,36 +72,45 @@ return [ 'ipv6' => ':attribute debe ser una dirección IPv6 válida.', 'json' => 'El campo :attribute debe ser una cadena JSON válida.', 'lt' => [ - 'numeric' => 'El campo :attribute debe ser menor que :value.', - 'file' => 'El campo :attribute debe tener menos de :value kilobytes.', - 'string' => 'El campo :attribute debe tener menos de :value caracteres.', 'array' => 'El campo :attribute debe tener menos de :value elementos.', + 'file' => 'El campo :attribute debe tener menos de :value kilobytes.', + 'numeric' => 'El campo :attribute debe ser menor que :value.', + 'string' => 'El campo :attribute debe tener menos de :value caracteres.', ], 'lte' => [ - 'numeric' => 'El campo :attribute debe ser como máximo :value.', - 'file' => 'El campo :attribute debe tener como máximo :value kilobytes.', - 'string' => 'El campo :attribute debe tener como máximo :value caracteres.', 'array' => 'El campo :attribute debe tener como máximo :value elementos.', + 'file' => 'The :attribute must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be less than or equal to :value.', + 'string' => 'The :attribute must be less than or equal to :value characters.', ], + 'mac_address' => 'The :attribute must be a valid MAC address.', 'max' => [ - 'numeric' => ':attribute no debe ser mayor que :max.', - 'file' => ':attribute no debe ser mayor que :max kilobytes.', - 'string' => ':attribute no debe ser mayor que :max caracteres.', - 'array' => ':attribute no debe tener más de :max elementos.', + 'array' => 'The :attribute must not have more than :max items.', + 'file' => 'The :attribute must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute must not be greater than :max.', + 'string' => 'The :attribute must not be greater than :max characters.', ], + 'max_digits' => 'The :attribute must not have more than :max digits.', 'mimes' => ':attribute debe ser un archivo con formato: :values.', 'mimetypes' => ':attribute debe ser un archivo con formato: :values.', 'min' => [ - 'numeric' => 'El tamaño de :attribute debe ser de al menos :min.', - 'file' => 'El tamaño de :attribute debe ser de al menos :min kilobytes.', - 'string' => ':attribute debe contener al menos :min caracteres.', 'array' => ':attribute debe tener al menos :min elementos.', + 'file' => 'El tamaño de :attribute debe ser de al menos :min kilobytes.', + 'numeric' => 'El tamaño de :attribute debe ser de al menos :min.', + 'string' => ':attribute debe contener al menos :min caracteres.', ], + 'min_digits' => 'The :attribute must have at least :min digits.', 'multiple_of' => ':attribute debe ser un múltiplo de :value.', 'not_in' => ':attribute es inválido.', 'not_regex' => 'El formato del campo :attribute no es válido.', 'numeric' => ':attribute debe ser numérico.', - 'password' => 'La contraseña es incorrecta.', + 'password' => [ + 'letters' => 'The :attribute must contain at least one letter.', + 'mixed' => 'The :attribute must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute must contain at least one number.', + 'symbols' => 'The :attribute must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], 'present' => 'El campo :attribute debe estar presente.', 'prohibited' => 'El campo :attribute está prohibido.', 'prohibited_if' => 'El campo :attribute está prohibido cuando :other es :value.', @@ -106,7 +118,9 @@ return [ 'prohibits' => 'El campo :attribute prohíbe que :other esté presente.', 'regex' => 'El formato de :attribute es inválido.', 'required' => 'El campo :attribute es obligatorio.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', 'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', 'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.', 'required_with' => 'El campo :attribute es obligatorio cuando :values está presente.', 'required_with_all' => 'El campo :attribute es obligatorio cuando :values están presentes.', @@ -114,17 +128,17 @@ return [ 'required_without_all' => 'El campo :attribute es obligatorio cuando ninguno de :values está presente.', 'same' => ':attribute y :other deben coincidir.', 'size' => [ - 'numeric' => 'El tamaño de :attribute debe ser :size.', - 'file' => 'El tamaño de :attribute debe ser :size kilobytes.', - 'string' => ':attribute debe contener :size caracteres.', 'array' => ':attribute debe contener :size elementos.', + 'file' => 'El tamaño de :attribute debe ser :size kilobytes.', + 'numeric' => 'El tamaño de :attribute debe ser :size.', + 'string' => ':attribute debe contener :size caracteres.', ], 'starts_with' => 'El campo :attribute debe comenzar con uno de los siguientes valores: :values', 'string' => 'El campo :attribute debe ser una cadena de caracteres.', - 'timezone' => 'El :attribute debe ser una zona válida.', + 'timezone' => 'The :attribute must be a valid timezone.', 'unique' => 'El campo :attribute ya ha sido registrado.', 'uploaded' => 'Subir :attribute ha fallado.', - 'url' => ':attribute debe ser una URL válida.', + 'url' => 'The :attribute must be a valid URL.', 'uuid' => 'El campo :attribute debe ser un UUID válido.', 'single' => 'Cuando se usa :attribute, éste debe ser el único parámetro en este cuerpo de la solicitud', @@ -171,9 +185,6 @@ return [ ], 'ids' => [ 'regex' => 'Los IDs deben estar separados por comas, sin comas finales.', - ], - 'name' => [ - 'firstUser' => 'Ya hay un usuario registrado', ] ], diff --git a/resources/lang/fr/auth.php b/resources/lang/fr/auth.php index 56150403..1afa4659 100644 --- a/resources/lang/fr/auth.php +++ b/resources/lang/fr/auth.php @@ -25,7 +25,7 @@ return [ 'sign_in_using_security_device' => 'Se connecter en utilisant un périphérique de sécurité', 'login_and_password' => 'login & mot de passe', 'register' => 'Créer un compte', - 'welcome_back_x' => 'Bienvenue {0}', + 'welcome_to_2fauth' => 'Bienvenue sur 2FAuth', 'autolock_triggered' => 'Verrouillage automatique déclenché', 'autolock_triggered_punchline' => 'L\'événement surveillé par la fonction de verrouillage automatique s\'est déclenché. Vous avez été automatiquement déconnecté.', 'change_autolock_in_settings' => 'Vous pouvez modifier le comportement de la fonction de verrouillage automatique dans Réglages, onglet Options.', @@ -49,31 +49,30 @@ return [ 'lost_your_device' => 'Vous avez perdu votre appareil ?', 'recover_your_account' => 'Récupérer votre compte', 'account_recovery' => 'Récupération du compte', - 'recovery_punchline' => '2FAuth vous enverra un lien de récupération à cette adresse e-mail. Cliquez sur le lien dans l\'e-mail reçu pour enregistrer un nouveau périphérique de sécurité.

Assurez-vous d\'ouvrir l\'e-mail depuis un appareil qui vous appartient ou que vous considérez de confiance.', + 'recovery_punchline' => '2FAuth vous enverra un lien de récupération à cette adresse e-mail. Cliquez sur le lien et suivez les instructions pour restaurer l\'accès à votre compte.

Assurez-vous d\'ouvrir l\'e-mail depuis un appareil qui vous appartient ou que vous considérez de confiance.', 'send_recovery_link' => 'Envoyer le lien de récupération', 'account_recovery_email_sent' => 'E-mail de récupération du compte envoyé !', - 'disable_all_other_devices' => 'Désactiver tous les autres périphériques sauf celui-ci', + 'disable_all_security_devices' => 'Désactiver tous les périphériques de sécurité', + 'disable_all_security_devices_help' => 'Tous vos périphériques de sécurité seront révoqués. Utilisez cette option si vous avez perdu un périphérique ou si sa sécurité a été compromise.', 'register_a_new_device' => 'Ajouter un nouveau périphérique', 'register_a_device' => 'Ajouter un périphérique', 'device_successfully_registered' => 'Périphérique enregistré avec succès', 'device_revoked' => 'Périphérique révoqué avec succès', 'revoking_a_device_is_permanent' => 'La révocation d\'un périphérique est définitive', - 'recover_account_instructions' => 'Cliquez sur le bouton ci-dessous pour enregistrer un nouveau périphérique de sécurité afin de récupérer votre compte. Suivez simplement les instructions de votre navigateur.', + 'recover_account_instructions' => 'Pour récupérer votre compte, 2FAuth réinitialise certains paramètres Webauthn afin que vous puissiez vous connecter en utilisant votre adresse e-mail et votre mot de passe.', 'invalid_recovery_token' => 'Jeton de sécurité invalide', + 'webauthn_login_disabled' => 'Connexion Webauthn désactivée', + 'invalid_reset_token' => 'Ce jeton de réinitialisation n\'est pas valide.', 'rename_device' => 'Renommer le périphérique', 'my_device' => 'Mon périphérique', 'unknown_device' => 'Périphérique inconnu', 'use_webauthn_only' => [ 'label' => 'Utiliser uniquement WebAuthn', - 'help' => 'Faire de WebAuthn la seule méthode disponible pour se connecter à 2FAuth. Ceci est la configuration recommandée pour profiter de la sécurité améliorée de WebAuthn.
- En cas de perte de votre périphérique, vous serez toujours en mesure d\'enregistrer un nouveau périphérique de sécurité pour récupérer votre compte.' + 'help' => 'Faire de WebAuthn la seule méthode autorisée pour vous connecter à votre compte 2FAuth. Ceci est la configuration recommandée pour profiter de la sécurité améliorée de WebAuthn.

+ En cas de perte de votre périphérique, vous pourrez récupérer votre compte en réinitialisant cette option et en vous connectant à l\'aide de votre adresse e-mail et de votre mot de passe.

+ Attention ! Le formulaire E-mail + Mot de passe restera disponible même si l\'option est activée, mais il retournera systématiquement une réponse \'Échec de l\'authentification\'.' ], 'need_a_security_device_to_enable_options' => 'Définissez au moins un périphérique pour activer ces options', - 'use_webauthn_as_default' => [ - 'label' => 'Utiliser WebAuthn comme méthode de connexion par défaut', - 'help' => 'Proposer d\'abord d\'utiliser WebAuthn lors de l\'identification. L\'identification avec login et mot de passe reste disponible en tant que méthode secondaire.
- Ceci est sans effet si vous utilisez uniquement WebAuthn.' - ], ], 'forms' => [ 'name' => 'Nom', diff --git a/resources/lang/fr/commons.php b/resources/lang/fr/commons.php index 9ab98c11..b8e34413 100644 --- a/resources/lang/fr/commons.php +++ b/resources/lang/fr/commons.php @@ -37,6 +37,7 @@ return [ 'new' => 'Nouveau', 'back' => 'Retour', 'move' => 'Déplacer', + 'export' => 'Exporter', 'all' => 'Tous', 'select_all' => 'Tout sélectionner', 'clear_selection' => 'Effacer la sélection', diff --git a/resources/lang/fr/errors.php b/resources/lang/fr/errors.php index 0e4c348a..cdb72e41 100644 --- a/resources/lang/fr/errors.php +++ b/resources/lang/fr/errors.php @@ -15,7 +15,6 @@ return [ 'resource_not_found' => 'Ressource introuvable', 'error_occured' => 'Une erreur est survenue :', - 'cannot_register_more_user' => 'Vous ne pouvez pas enregistrer plus d\'un utilisateur.', 'refresh' => 'Actualiser', 'no_valid_otp' => 'Aucune donnée OTP valide dans ce QR code', 'something_wrong_with_server' => 'Il y a un problème avec votre serveur', @@ -34,7 +33,11 @@ return [ 'https_required' => 'Contexte HTTPS requis', 'browser_does_not_support_webauthn' => 'Votre appareil ne supporte pas WebAuthn. Réessayez plus tard en utilisant un navigateur plus récent', 'aborted_by_user' => 'Abandonné par l\'utilisateur', - 'security_device_unsupported' => 'Périphérique de sécurité non pris en charge', + 'security_device_unsupported' => 'Périphérique non pris en charge ou déjà utilisé', + 'not_allowed_operation' => 'Opération non autorisée', + 'unsupported_operation' => 'Opération non supportée', + 'unknown_error' => 'Erreur inconnue', + 'security_error_check_rpid' => 'Erreur de sécurité
Vérifiez votre variable d\'environnement WEBAUTHN_ID', 'unsupported_with_reverseproxy' => 'Sans effet avec un proxy d\'authentification', 'user_deletion_failed' => 'La suppression du compte utilisateur a échoué, aucune donnée n\'a été supprimée', 'auth_proxy_failed' => 'Échec de l\'authentification par le proxy', @@ -45,5 +48,8 @@ return [ 'unsupported_otp_type' => 'Type OTP non supporté', 'encrypted_migration' => 'Non lisible, les données semblent chiffrées', 'no_logo_found_for_x' => 'Aucun logo disponible pour {service}', - 'file_upload_failed' => 'Échec de téléchargement du fichier' + 'file_upload_failed' => 'Échec de téléchargement du fichier', + 'unauthorized' => 'Non autorisé', + 'unauthorized_legend' => 'Vous n\'avez pas la permission de voir cette ressource ou d\'effectuer cette action', + 'cannot_delete_the_only_admin' => 'Impossible de supprimer le seul compte administrateur' ]; \ No newline at end of file diff --git a/resources/lang/fr/groups.php b/resources/lang/fr/groups.php index 0c255c04..3aa2e559 100644 --- a/resources/lang/fr/groups.php +++ b/resources/lang/fr/groups.php @@ -23,6 +23,7 @@ return [ 'manage_groups_legend' => 'Vous pouvez créer des groupes pour organiser vos comptes comme bon vous semble. Tous les comptes restent visibles dans le pseudo groupe nommé "Tous", quel que soit le groupe auquel ils appartiennent.', 'deleting_group_does_not_delete_accounts' => 'La suppression d\'un groupe ne supprime pas les comptes', 'move_selected_to' => 'Déplacer la sélection vers', + 'move_selected_to_group' => 'Déplacer la sélection dans un groupe', 'no_group' => 'Aucun groupe', 'change_group' => 'Changer de groupe', 'group_successfully_created' => 'Groupe créé avec succès', diff --git a/resources/lang/fr/languages.php b/resources/lang/fr/languages.php index 2045ff67..3157f6d2 100644 --- a/resources/lang/fr/languages.php +++ b/resources/lang/fr/languages.php @@ -16,4 +16,5 @@ return [ 'de' => 'Allemand', 'es' => 'Espagnol', 'zh' => 'Chinois simplifié', + 'ru' => 'Russe', ]; \ No newline at end of file diff --git a/resources/lang/fr/settings.php b/resources/lang/fr/settings.php index 5a299e69..359eb422 100644 --- a/resources/lang/fr/settings.php +++ b/resources/lang/fr/settings.php @@ -14,15 +14,20 @@ return [ */ 'settings' => 'Réglages', + 'preferences' => 'Préférences', 'account' => 'Compte', 'oauth' => 'OAuth', 'webauthn' => 'WebAuthn', 'tokens' => 'Jetons', 'options' => 'Options', - 'user_options' => 'Options de l\'utilisateur', + 'user_preferences' => 'Préférences utilisateur', + 'admin_settings' => 'Paramètres administrateur', 'confirm' => [ ], + 'administration' => 'Administration', + 'administration_legend' => 'Contrairement aux paramètres précédents qui sont des paramètres utilisateur (chaque utilisateur peut les personnaliser à sa convenance), les paramètres qui suivent sont globaux et s\'appliquent à tous les utilisateurs. Seul les administrateurs peuvent voir et modifier ces paramètres.', + 'you_are_administrator' => 'Vous êtes administrateur', 'general' => 'General', 'security' => 'Sécurité', 'profile' => 'Profil', @@ -68,8 +73,25 @@ return [ 'label' => 'Mode d\'affichage', 'help' => 'Change le mode d\'affichage des comptes, soit sous forme de liste, soit sous forme de grille' ], + 'password_format' => [ + 'label' => 'Mise en forme des mots de passe', + 'help' => 'Modifie l\'affichage des mots de passe en regroupement les chiffres afin de faciliter la lisibilité et leur mémorisation' + ], + 'pair' => 'par Paire', + 'pair_legend' => 'Groupe les chiffres deux par deux', + 'trio_legend' => 'Groupe les chiffres trois par trois', + 'half_legend' => 'Sépare les chiffres en deux groupes égaux', + 'trio' => 'par Trio', + 'half' => 'par Moitié', 'grid' => 'Grille', 'list' => 'Liste', + 'theme' => [ + 'label' => 'Thème', + 'help' => 'Forcer un thème spécifique ou appliquer le thème défini dans vos préférences système/navigateur' + ], + 'light' => 'Clair', + 'dark' => 'Sombre', + 'automatic' => 'Auto', 'show_accounts_icons' => [ 'label' => 'Afficher les icônes', 'help' => 'Affiche les icônes des comptes dans la vue principale' diff --git a/resources/lang/fr/twofaccounts.php b/resources/lang/fr/twofaccounts.php index 5951d38a..289aef8d 100644 --- a/resources/lang/fr/twofaccounts.php +++ b/resources/lang/fr/twofaccounts.php @@ -30,6 +30,7 @@ return [ 'account_updated' => 'Compte mis à jour avec succès', 'accounts_deleted' => 'Compte·s supprimé·s avec succès', 'accounts_moved' => 'Compte·s déplacé·s avec succès', + 'export_selected_to_json' => 'Télécharger un export json des comptes sélectionnés', 'forms' => [ 'service' => [ 'placeholder' => 'Google, Twitter, Apple', @@ -155,7 +156,7 @@ return [ 'possible_duplicate' => 'Un compte avec les mêmes informations existe déjà', 'invalid_account' => '- compte non valide -', 'invalid_service' => '- service non valide -', - 'do_not_set_password_or_encryption' => 'Ne définissez PAS de mot de passe ou de chiffrement lorsque vous exportez des données à partir d\'une application 2FA.', + 'do_not_set_password_or_encryption' => 'N\'activez PAS la protection par mot de passe ou le chiffrement lorsque vous exportez des données (depuis une application 2FA) que vous comptez importer dans 2FAuth.', ], ]; \ No newline at end of file diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php index 628fa1dc..535fb291 100644 --- a/resources/lang/fr/validation.php +++ b/resources/lang/fr/validation.php @@ -19,16 +19,16 @@ return [ 'after' => 'Le champ :attribute doit être une date postérieure au :date.', 'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale au :date.', 'alpha' => 'Le champ :attribute doit contenir uniquement des lettres.', - 'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets.', + 'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets (hauts ou bas).', 'alpha_num' => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.', 'array' => 'Le champ :attribute doit être un tableau.', 'before' => 'Le champ :attribute doit être une date antérieure au :date.', 'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.', 'between' => [ - 'numeric' => 'La valeur de :attribute doit être comprise entre :min et :max.', - 'file' => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.', - 'string' => 'Le texte :attribute doit contenir entre :min et :max caractères.', 'array' => 'Le tableau :attribute doit contenir entre :min et :max éléments.', + 'file' => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être comprise entre :min et :max.', + 'string' => 'Le texte :attribute doit contenir entre :min et :max caractères.', ], 'boolean' => 'Le champ :attribute doit être vrai ou faux.', 'confirmed' => 'Le champ de confirmation :attribute ne correspond pas.', @@ -43,22 +43,25 @@ return [ 'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.', 'dimensions' => 'La taille de l\'image :attribute n\'est pas conforme.', 'distinct' => 'Le champ :attribute a une valeur en double.', + 'doesnt_end_with' => 'Le champ :attribute ne peut pas se terminer par l\'une de ces valeurs : :values.', + 'doesnt_start_with' => 'Le champ :attribute ne peut pas commencer par l\'une de ces valeurs : :values.', 'email' => 'Le champ :attribute doit être une adresse email valide.', 'ends_with' => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values', + 'enum' => 'Le champ :attribute sélectionné n\'est pas valide.', 'exists' => 'Le champ :attribute sélectionné est invalide.', 'file' => 'Le champ :attribute doit être un fichier.', 'filled' => 'Le champ :attribute doit avoir une valeur.', 'gt' => [ - 'numeric' => 'La valeur de :attribute doit être supérieure à :value.', - 'file' => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.', - 'string' => 'Le texte :attribute doit contenir plus de :value caractères.', 'array' => 'Le tableau :attribute doit contenir plus de :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être supérieure à :value.', + 'string' => 'Le texte :attribute doit contenir plus de :value caractères.', ], 'gte' => [ - 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :value.', - 'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :value kilo-octets.', - 'string' => 'Le texte :attribute doit contenir au moins :value caractères.', 'array' => 'Le tableau :attribute doit contenir au moins :value éléments.', + 'file' => 'La taille du fichier :attribute doit être supérieure ou égale à :value kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :value.', + 'string' => 'Le texte :attribute doit contenir au moins :value caractères.', ], 'image' => 'Le champ :attribute doit être une image.', 'in' => 'Le champ :attribute est invalide.', @@ -69,36 +72,45 @@ return [ 'ipv6' => 'Le champ :attribute doit être une adresse IPv6 valide.', 'json' => 'Le champ :attribute doit être un document JSON valide.', 'lt' => [ - 'numeric' => 'La valeur de :attribute doit être inférieure à :value.', - 'file' => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.', - 'string' => 'Le texte :attribute doit contenir moins de :value caractères.', 'array' => 'Le tableau :attribute doit contenir moins de :value éléments.', + 'file' => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être inférieure à :value.', + 'string' => 'Le texte :attribute doit contenir moins de :value caractères.', ], 'lte' => [ - 'numeric' => 'La valeur de :attribute doit être inférieure ou égale à :value.', - 'file' => 'La taille du fichier de :attribute doit être inférieure ou égale à :value kilo-octets.', - 'string' => 'Le texte :attribute doit contenir au plus :value caractères.', 'array' => 'Le tableau :attribute doit contenir au plus :value éléments.', + 'file' => 'La taille du fichier :attribute doit être inférieure ou égale à :value kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être inférieure ou égale à :value.', + 'string' => 'Le texte :attribute doit contenir au plus :value caractères.', ], + 'mac_address' => 'Le champ :attribute doit être une adresse MAC valide.', 'max' => [ - 'numeric' => 'La valeur de :attribute ne peut être supérieure à :max.', - 'file' => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.', - 'string' => 'Le texte de :attribute ne peut contenir plus de :max caractères.', - 'array' => 'Le tableau :attribute ne peut contenir plus de :max éléments.', + 'array' => ':attribute ne doit pas dépasser :max éléments.', + 'file' => ':attribute ne doit pas excéder :max Ko.', + 'numeric' => ':attribute ne doit pas excéder :max.', + 'string' => ':attribute ne doit pas excéder :max caractères.', ], + 'max_digits' => ':attribute ne doit pas excéder :max chiffres.', 'mimes' => 'Le champ :attribute doit être un fichier de type : :values.', 'mimetypes' => 'Le champ :attribute doit être un fichier de type : :values.', 'min' => [ - 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :min.', - 'file' => 'La taille du fichier de :attribute doit être supérieure à :min kilo-octets.', - 'string' => 'Le texte :attribute doit contenir au moins :min caractères.', 'array' => 'Le tableau :attribute doit contenir au moins :min éléments.', + 'file' => 'La taille du fichier de :attribute doit être supérieure à :min kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :min.', + 'string' => 'Le texte :attribute doit contenir au moins :min caractères.', ], + 'min_digits' => ':attribute doit avoir au moins :min chiffres.', 'multiple_of' => 'La valeur de :attribute doit être un multiple de :value.', 'not_in' => 'Le champ :attribute sélectionné n\'est pas valide.', 'not_regex' => 'Le format du champ :attribute n\'est pas valide.', 'numeric' => 'Le champ :attribute doit contenir un nombre.', - 'password' => 'Le mot de passe est incorrect', + 'password' => [ + 'letters' => ':attribute doit contenir au moins une lettre.', + 'mixed' => ':attribute doit contenir au moins une majuscule et une minuscule.', + 'numbers' => ':attribute doit contenir au moins un nombre.', + 'symbols' => ':attribute doit contenir au moins un symbole.', + 'uncompromised' => 'Le champ :attribute est apparu dans une fuite de données, merci d\'en choisir un différent.', + ], 'present' => 'Le champ :attribute doit être présent.', 'prohibited' => 'Le champ :attribute est interdit.', 'prohibited_if' => 'Le champ :attribute est interdit quand :other a la valeur :value.', @@ -106,7 +118,9 @@ return [ 'prohibits' => 'Le champ :attribute interdit :other d\'être présent.', 'regex' => 'Le format du champ :attribute est invalide.', 'required' => 'Le champ :attribute est obligatoire.', + 'required_array_keys' => 'Le champ :attribute doit contenir des entrées pour : :values.', 'required_if' => 'Le champ :attribute est obligatoire quand la valeur de :other est :value.', + 'required_if_accepted' => 'Le champ :attribute est requis lorsque :other est accepté.', 'required_unless' => 'Le champ :attribute est obligatoire sauf si :other est :values.', 'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.', 'required_with_all' => 'Le champ :attribute est obligatoire quand :values sont présents.', @@ -114,17 +128,17 @@ return [ 'required_without_all' => 'Le champ :attribute est requis quand aucun de :values n\'est présent.', 'same' => 'Les champs :attribute et :other doivent être identiques.', 'size' => [ - 'numeric' => 'La valeur de :attribute doit être :size.', - 'file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.', - 'string' => 'Le texte de :attribute doit contenir :size caractères.', 'array' => 'Le tableau :attribute doit contenir :size éléments.', + 'file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.', + 'numeric' => 'La valeur de :attribute doit être :size.', + 'string' => 'Le texte de :attribute doit contenir :size caractères.', ], 'starts_with' => 'Le champ :attribute doit commencer avec une des valeurs suivantes : :values', 'string' => 'Le champ :attribute doit être une chaîne de caractères.', - 'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.', + 'timezone' => ':attribute doit être un fuseau horaire valide.', 'unique' => 'La valeur du champ :attribute est déjà utilisée.', 'uploaded' => 'Le fichier du champ :attribute n\'a pu être téléversé.', - 'url' => 'Le champ :attribute doit être une url valide.', + 'url' => ':attribute doit être une URL valide.', 'uuid' => 'Le champ :attribute doit être un UUID valide', 'single' => 'Lors de l\'utilisation de :attribut, il doit être le seul paramètre dans le corps de la requête', @@ -171,9 +185,6 @@ return [ ], 'ids' => [ 'regex' => 'Les IDs doivent être séparés par des virgules, sans virgule en fin de chaîne.', - ], - 'name' => [ - 'firstUser' => 'Un compte utilisateur existe déjà', ] ], diff --git a/resources/lang/zh/auth.php b/resources/lang/zh/auth.php index a8296313..6350ec0d 100644 --- a/resources/lang/zh/auth.php +++ b/resources/lang/zh/auth.php @@ -19,28 +19,28 @@ return [ 'throttle' => '您尝试的登录次数过多,请 :seconds 秒后再试。', // 2FAuth - 'sign_out' => '退出', + 'sign_out' => '登出', 'sign_in' => '登录', 'sign_in_using' => '登录使用', 'sign_in_using_security_device' => '使用安全设备登录', - 'login_and_password' => '使用密码登录', + 'login_and_password' => '用户名和密码', 'register' => '注册', - 'welcome_back_x' => '欢迎回来,{0}!', - 'autolock_triggered' => '自动锁定已触发', + 'welcome_to_2fauth' => 'Welcome to 2FAuth', + 'autolock_triggered' => '已自动锁定', 'autolock_triggered_punchline' => '自动锁定已触发。您已被自动断开连接。', 'change_autolock_in_settings' => '您可以在“设置 > 选项”中更改自动锁定的行为。', 'already_authenticated' => '已验证', 'authentication' => '身份认证', 'maybe_later' => '以后再说', - 'user_account_controlled_by_proxy' => '用户帐户由身份验证代理提供。
在代理管理帐户。', + 'user_account_controlled_by_proxy' => '用户帐户由身份验证代理提供。
请在代理中管理帐户。', 'auth_handled_by_proxy' => '身份验证由代理处理,下面的设置被禁用。
在代理管理身份验证。', 'confirm' => [ - 'logout' => '确定要退出吗?', + 'logout' => '您确定要注销吗?', 'revoke_device' => '你确定要删除此设备?', 'delete_account' => '您确定要删除您的账户?', ], 'webauthn' => [ - 'security_device' => '安全设备', + 'security_device' => '硬件安全密钥', 'security_devices' => '安全设备', 'security_devices_legend' => '您可以用来登录2FAuth的认证设备,例如安全密钥(如Yubikey)或具有生物识别能力的智能手机(如Apple Face Id/TouchId)', 'enhance_security_using_webauthn' => '您可以通过启用 WebAuthn 身份验证来增强您的2FAuth 账户的安全性。

@@ -49,74 +49,75 @@ WebAuthn允许您使用受信任的设备 (如Yubikeys 或具有生物识别能 'lost_your_device' => '设备丢失?', 'recover_your_account' => '恢复您的账号', 'account_recovery' => '恢复账号', - 'recovery_punchline' => '2FAuth 将向您发送恢复链接到此电子邮件地址。点击收到电子邮件中的链接注册新的安全设备。

确保在您拥有的设备上打开电子邮件。', + 'recovery_punchline' => '2FAuth 将向您发送恢复链接到此电子邮件地址。点击收到电子邮件中的链接注册新的安全设备。

确保在您可以在自己的设备上打开电子邮件。', 'send_recovery_link' => '发送恢复链接', - 'account_recovery_email_sent' => '帐号恢复邮件已发送!', - 'disable_all_other_devices' => '禁用除此设备以外的所有其他设备', + 'account_recovery_email_sent' => '账号恢复邮件已发送!', + 'disable_all_security_devices' => '禁用所有安全设备', + 'disable_all_security_devices_help' => '您的所有安全设备都将被撤销。如果您丢失了一个设备或其安全性已经受到损害,请使用此选项。', 'register_a_new_device' => '注册新设备', 'register_a_device' => '注册设备', - 'device_successfully_registered' => '成功注册设备。', - 'device_revoked' => '成功注销设备。', + 'device_successfully_registered' => '成功注册设备', + 'device_revoked' => '成功注销设备', 'revoking_a_device_is_permanent' => '注销设备是永久性的', - 'recover_account_instructions' => '点击下面的按钮注册一个新的安全设备来恢复您的帐户。只需遵循您的浏览器说明。', + 'recover_account_instructions' => '若要恢复您的帐户,2FAuth 将会重置一些Webauth设置,以便您可以使用您的电子邮件和密码登录。', 'invalid_recovery_token' => '无效的恢复密钥', + 'webauthn_login_disabled' => 'Webauthn 登录已被禁用', + 'invalid_reset_token' => '此密码重置令牌无效', 'rename_device' => '重命名设备', 'my_device' => '我的设备', 'unknown_device' => '未知设备', 'use_webauthn_only' => [ 'label' => '仅使用 WebAuthn', - 'help' => '使WebAuth成为唯一可用的登录 2FAuth的方法。这是推荐的设置,以利用WebAuth增强安全性。
如果设备丢失,您总是能够注册一个新的安全设备来恢复您的帐户。' - ], - 'need_a_security_device_to_enable_options' => '设置至少一个设备以启用这些选项', - 'use_webauthn_as_default' => [ - 'label' => '使用 WebAuthn 作为默认登录方式', - 'help' => '设置 2FAuth 首先提出WebAuth身份验证。然后用户名/密码作为备用解决方案。
如果您只使用WebAuthn,这将不会产生任何效果。' + 'help' => 'Make WebAuthn the only authorized method to log into your 2FAuth account. This is the recommended setup to take advantage of the WebAuthn enhanced security.

+ In case of device lost, you will be able to recover your account by resetting this option and signing in using your email and password.

+ Attention! The Email & Password form remains available despite this option being enabled, but it will always return an \'Authentication failed\' response.' ], + 'need_a_security_device_to_enable_options' => 'Set at least one device to enable the following options', ], 'forms' => [ 'name' => '用户名', 'login' => '登录', 'webauthn_login' => '使用 WebAuthn 登录', - 'email' => '电子邮件', + 'email' => '邮箱', 'password' => '密码', 'reveal_password' => '显示密码', 'hide_password' => '隐藏密码', 'confirm_password' => '确认密码', 'confirm_new_password' => '确认新密码', - 'dont_have_account_yet' => '还没有账号?', + 'dont_have_account_yet' => '还没有账号?', 'already_register' => '已经注册?', 'authentication_failed' => '验证失败', 'forgot_your_password' => '忘记密码?', - 'request_password_reset' => '重置', - 'reset_your_password' => '重置密码', + 'request_password_reset' => '重置密码', + 'reset_your_password' => '重置你的密码', 'reset_password' => '重置密码', 'disabled_in_demo' => '此功能将在演示模式下禁用。', 'new_password' => '新密码', 'current_password' => [ 'label' => '当前密码', - 'help' => '填写您当前的密码以确认是你' + 'help' => '填写您当前设置的密码以确认是您本人' ], 'change_password' => '修改密码', 'send_password_reset_link' => '发送密码重置链接', 'password_successfully_changed' => '密码修改成功', 'edit_account' => '编辑账户', - 'profile_saved' => '帐户资料更新成功', - 'welcome_to_demo_app_use_those_credentials' => '欢迎访问 2FAuth 的演示。

您可以使用电子邮件地址 demo@2fauth.app 和密码 demo', - 'welcome_to_testing_app_use_those_credentials' => '欢迎访问 2FAuth 的测试实例。

您可以使用电子邮件地址 testing@2fauth.app 和密码 password', - 'register_punchline' => '欢迎使用 2FAuth
您需要一个帐户才能继续,请注册自己。', - 'reset_punchline' => '2FAuth 将向您发送密码重置链接到此地址。点击收到的电子邮件中的链接设置新密码。', + 'profile_saved' => '个人资料更新成功!', + 'welcome_to_demo_app_use_those_credentials' => '欢迎访问 2FAuth 的演示站点。

您可以使用电子邮件地址 demo@2fauth.app 和密码 demo来登录。', + 'welcome_to_testing_app_use_those_credentials' => '欢迎访问 2FAuth 的测试实例。

您可以使用电子邮件地址 testing@2fauth.app 和密码 password来登录。', + 'register_punchline' => '欢迎使用 2FAuth
您需要一个账号才能继续,请先完成注册。', + 'reset_punchline' => '2FAuth 将向您发送密码重置链接到此邮箱。请点击收到的电子邮件中的链接设置新密码。', 'name_this_device' => '命名此设备', 'delete_account' => '删除账户', - 'delete_your_account' => '删除您的帐户', - 'delete_your_account_and_reset_all_data' => '这将重置 2FAuth。您的用户帐户以及所有 2FA 数据都将被删除,没有回头路。', - 'user_account_successfully_deleted' => '帐户已成功删除', - 'has_lower_case' => '包含小写', - 'has_upper_case' => '包含大写', + 'delete_your_account' => '删除您的账户', + 'delete_your_account_and_reset_all_data' => '这将重置您的 2FAuth。您的账号以及所有的 2FA 数据都将被删除,这是一个不可逆的操作。', + 'user_account_successfully_deleted' => '账号已成功删除', + 'has_lower_case' => '包含小写字母', + 'has_upper_case' => '包含大写字母', 'has_special_char' => '包含特殊字符', 'has_number' => '包含数字', - 'is_long_enough' => '至少8个字符', + 'is_long_enough' => '至少 8 个字符', 'mandatory_rules' => '必选项', - 'optional_rules_you_should_follow' => '(强烈) 推荐', + 'optional_rules_you_should_follow' => '建议(推荐)', 'caps_lock_is_on' => '大写锁定已开启', ], diff --git a/resources/lang/zh/commons.php b/resources/lang/zh/commons.php index e2e77cf5..cdb18bf5 100644 --- a/resources/lang/zh/commons.php +++ b/resources/lang/zh/commons.php @@ -18,18 +18,18 @@ return [ 'copy' => '复制', 'copy_to_clipboard' => '复制到剪贴板', 'copied_to_clipboard' => '已复制到剪贴板', - 'profile' => '配置文件', + 'profile' => '个人资料', 'edit' => '编辑', 'delete' => '删除', - 'disable' => '停用', + 'disable' => '禁用', 'enable' => '启用', 'create' => '创建', 'save' => '保存', 'close' => '关闭', 'clear' => '清空', 'clear_search' => '清除搜索结果', - 'demo_do_not_post_sensitive_data' => '这是一个演示应用,不要上传任何敏感数据', - 'testing_do_not_post_sensitive_data' => '这是一个测试应用,不要上传任何敏感数据', + 'demo_do_not_post_sensitive_data' => '这是一个演示应用,请不要上传任何敏感数据', + 'testing_do_not_post_sensitive_data' => '这是一个测试应用,请不要上传任何敏感数据', 'selected' => '项被选中', 'name' => '名称', 'manage' => '管理', @@ -37,6 +37,7 @@ return [ 'new' => '新建', 'back' => '返回', 'move' => '移动', + 'export' => '导出', 'all' => '全部', 'select_all' => '全选', 'clear_selection' => '清除选择', @@ -62,9 +63,9 @@ return [ 'search' => '搜索​​​​', 'resources' => '资源', 'check_for_update' => '检查更新', - 'check_for_update_help' => '自动检查 (每周一次) 并当 2FAuth 在 Github 上发布新版本时发出警告', + 'check_for_update_help' => '自动检查 (每周一次) 并当 2FAuth 在 Github 上发布新版本时发出提醒', 'you_are_up_to_date' => '该实例是最新的', - '2fauth_description' => '用于管理您的两步验证 (2FA) 帐户并生成安全码的网页应用', + '2fauth_description' => '用于管理您的两步验证 (2FA) 账户并生成安全码的网页应用', 'image_of_qrcode_to_scan' => '要扫描的二维码图像', 'file' => '文件', 'or' => '或', diff --git a/resources/lang/zh/errors.php b/resources/lang/zh/errors.php index 40840328..cb65478b 100644 --- a/resources/lang/zh/errors.php +++ b/resources/lang/zh/errors.php @@ -15,7 +15,6 @@ return [ 'resource_not_found' => '资源未找到', 'error_occured' => '发生错误:', - 'cannot_register_more_user' => '您不能注册多个用户', 'refresh' => '刷新', 'no_valid_otp' => '此二维码中没有有效的OTP资源', 'something_wrong_with_server' => '服务器发生内部错误', @@ -34,7 +33,11 @@ return [ 'https_required' => '需要 HTTPS', 'browser_does_not_support_webauthn' => '您的设备不支持Webauthn。请使用更现代的浏览器重试。', 'aborted_by_user' => '被用户中止。', - 'security_device_unsupported' => '不支持的安全设备', + 'security_device_unsupported' => '不支持或正在使用的设备', + 'not_allowed_operation' => '不允许此操作', + 'unsupported_operation' => 'Unsupported operation', + 'unknown_error' => 'Unknown error', + 'security_error_check_rpid' => '安全错误
请检查您的 WEBAUTHN_ID env var', 'unsupported_with_reverseproxy' => '使用代理进行认证时不可用', 'user_deletion_failed' => '帐户删除失败,没有数据被删除', 'auth_proxy_failed' => '代理认证失败', @@ -45,5 +48,8 @@ return [ 'unsupported_otp_type' => '不支持的 OTP 类型', 'encrypted_migration' => '无法读取,数据似乎已加密', 'no_logo_found_for_x' => '{service} 没有可用的 Logo', - 'file_upload_failed' => '文件上传失败' + 'file_upload_failed' => '文件上传失败', + 'unauthorized' => 'Unauthorized', + 'unauthorized_legend' => 'You do not have permissions to view this resource or to perform this action', + 'cannot_delete_the_only_admin' => 'Cannot delete the only admin account' ]; \ No newline at end of file diff --git a/resources/lang/zh/groups.php b/resources/lang/zh/groups.php index da94bd14..4ed3d0bb 100644 --- a/resources/lang/zh/groups.php +++ b/resources/lang/zh/groups.php @@ -23,6 +23,7 @@ return [ 'manage_groups_legend' => '您可以创建组以按照您想要的方式组织您的账户。 所有账户在名为“全部”的伪组中仍然可见,无论它们属于哪个组。', 'deleting_group_does_not_delete_accounts' => '删除组不会删除帐户', 'move_selected_to' => '移动选择到', + 'move_selected_to_group' => '将所选移入组中', 'no_group' => '没有分组', 'change_group' => '更改组', 'group_successfully_created' => '分组成功创建', diff --git a/resources/lang/zh/languages.php b/resources/lang/zh/languages.php index 49da380c..24590fe7 100644 --- a/resources/lang/zh/languages.php +++ b/resources/lang/zh/languages.php @@ -14,4 +14,7 @@ return [ 'en' => 'English', 'fr' => 'French', 'de' => 'German', + 'es' => '西班牙语', + 'zh' => '简体中文', + 'ru' => '俄语', ]; \ No newline at end of file diff --git a/resources/lang/zh/settings.php b/resources/lang/zh/settings.php index 68b2d703..98eb4047 100644 --- a/resources/lang/zh/settings.php +++ b/resources/lang/zh/settings.php @@ -14,27 +14,32 @@ return [ */ 'settings' => '设置', + 'preferences' => 'Preferences', 'account' => '账户', 'oauth' => 'OAuth', 'webauthn' => 'WebAuthn', 'tokens' => '令牌', 'options' => '选项', - 'user_options' => '用户选项', + 'user_preferences' => 'User preferences', + 'admin_settings' => 'Admin settings', 'confirm' => [ ], + 'administration' => 'Administration', + 'administration_legend' => 'While previous settings are user settings (every user can set its own preferences), following settings are global and apply to all users. Only an administrator can view and edit those settings.', + 'you_are_administrator' => 'You are an administrator', 'general' => '常规', 'security' => '安全', 'profile' => '配置文件', 'change_password' => '更改密码', 'personal_access_tokens' => '个人访问令牌', - 'token_legend' => '个人访问令牌允许任何应用访问 2Fauth API。 您应该在消费者应用授权请求头中指定访问令牌作为一个Bearer令牌。', + 'token_legend' => '个人访问令牌允许任何应用访问 2Fauth API。您应该在第三方应用授权请求头中提供访问令牌作为一个 Bearer 令牌。', 'generate_new_token' => '生成新令牌', - 'revoke' => '撤回', + 'revoke' => '吊销', 'token_revoked' => '已成功吊销令牌', - 'revoking_a_token_is_permanent' => '撤销令牌是永久的', + 'revoking_a_token_is_permanent' => '吊销令牌是永久的', 'confirm' => [ - 'revoke' => '你确定要撤销此令牌?', + 'revoke' => '你确定要吊销此令牌?', ], 'make_sure_copy_token' => '请确保您已复制个人访问令牌。令牌将不再显示。', 'data_input' => '数据输入', @@ -42,22 +47,22 @@ return [ 'edit_settings' => '编辑设置', 'setting_saved' => '设置已保存', 'new_token' => '新建令牌', - 'some_translation_are_missing' => '使用浏览器首选语言时缺少一些翻译?', + 'some_translation_are_missing' => '使用浏览器偏好时缺少一些翻译?', 'help_translate_2fauth' => '帮助翻译 2FAuth', 'language' => [ 'label' => '语言', - 'help' => '语言用于翻译 2FAuth 用户界面。命名的语言已完成,请设置您的选项来覆盖您的浏览器首选项。' + 'help' => '用来翻译 2FAuth 用户界面的语言。列出的语言已完成翻译,请设置你选择的语言来覆盖你的浏览器偏好。' ], 'show_otp_as_dot' => [ 'label' => '将生成的一次性密码作为点显示', - 'help' => '将生成的密码替换为 *** 以确保保密。不影响复制/粘贴功能。' + 'help' => '将生成的密码替换为 *** 以确保保密。不影响复制和粘贴功能。' ], 'close_otp_on_copy' => [ 'label' => '复制后关闭 OTP', - 'help' => '点击生成的密码可复制并从屏幕上自动隐藏密码' + 'help' => '点击生成的密码进行复制,并自动将其从屏幕上隐藏' ], 'copy_otp_on_display' => [ - 'label' => '复制后关闭 OTP', + 'label' => '在显示时复制 OTP', 'help' => '在屏幕显示后自动复制生成的密码。 由于浏览器限制,只有第一个 TOTP 密码将被复制,而不是更新后的' ], 'use_basic_qrcode_reader' => [ @@ -66,29 +71,46 @@ return [ ], 'display_mode' => [ 'label' => '显示模式', - 'help' => '选择将帐户显示为列表或网格。' + 'help' => '选择将账户以列表或网格的方式进行展示' ], + 'password_format' => [ + 'label' => 'Password formatting', + 'help' => 'Change how the passwords are displayed by grouping digits to ease readability and memorization' + ], + 'pair' => 'by Pair', + 'pair_legend' => 'Group digits two by two', + 'trio_legend' => 'Group digits three by three', + 'half_legend' => 'Split digits into two equals groups', + 'trio' => 'by Trio', + 'half' => 'by Half', 'grid' => '网格', 'list' => '列表', + 'theme' => [ + 'label' => '主题', + 'help' => '强制一个特定主题或应用系统/浏览器首选项中定义的主题' + ], + 'light' => '亮色主题', + 'dark' => '暗色主题', + 'automatic' => '自动检测', 'show_accounts_icons' => [ 'label' => '显示图标', 'help' => '在主视图中显示应用图标' ], 'get_official_icons' => [ 'label' => '获取官方图标', - 'help' => '(尝试) 添加帐户时获取两步验证发行者的官方图标' + 'help' => '(尝试) 在添加账户时获取两步验证发行者的官方图标' ], 'auto_lock' => [ 'label' => '自动锁定', - 'help' => '在没有活动的情况下自动登出用户。 当使用认证代理或没有指定自定义注销 URL 时,没有任何效果。' + 'help' => '在没有活动的情况下自动登出用户。当使用认证代理或没有指定自定义注销 URL 时无效。' ], 'use_encryption' => [ 'label' => '保护敏感数据', - 'help' => '敏感数据、2FA 秘钥和电子邮件已被加密存储在数据库中。请务必备份您在 .env 中的 APP_KEY 值或备份整个文件。没有此密钥,无法解码加密数据。', + 'help' => '敏感数据、2FA 秘钥和电子邮件已被加密存储在数据库中。请务必备份您在 .env 中设置的 APP_KEY 的值(或备份整个文件)。没有此密钥将无法解码已加密的数据。', ], 'default_group' => [ - 'label' => '默认群组', - 'help' => '新创建的帐户所关联的组', + 'label' => '默认分组', + 'help' => '新创建的账户所关联的分组', ], 'useDirectCapture' => [ 'label' => '直接输入', diff --git a/resources/lang/zh/twofaccounts.php b/resources/lang/zh/twofaccounts.php index 37f729b8..57fc00e9 100644 --- a/resources/lang/zh/twofaccounts.php +++ b/resources/lang/zh/twofaccounts.php @@ -30,6 +30,7 @@ return [ 'account_updated' => '账户成功更新', 'accounts_deleted' => '帐户成功删除', 'accounts_moved' => '帐户成功移动', + 'export_selected_to_json' => '将所选账号以json导出', 'forms' => [ 'service' => [ 'placeholder' => '谷歌, 推特, 苹果', @@ -155,7 +156,7 @@ return [ 'possible_duplicate' => '完全相同的帐户已经存在', 'invalid_account' => '- 无效账户 -', 'invalid_service' => '- 无效服务 -', - 'do_not_set_password_or_encryption' => '当您从 2FA 应用程序导出数据时,不要设置密码或加密。', + 'do_not_set_password_or_encryption' => '当您想要导入到2FAuth时不要启用密码保护或加密。', ], ]; \ No newline at end of file diff --git a/resources/lang/zh/validation.php b/resources/lang/zh/validation.php index b933a1d5..d8bedc46 100644 --- a/resources/lang/zh/validation.php +++ b/resources/lang/zh/validation.php @@ -18,17 +18,17 @@ return [ 'active_url' => ':attribute 不是一个有效的网址。', 'after' => ':attribute 必须要晚于 :date。', 'after_or_equal' => ':attribute 必须要等于 :date 或更晚。', - 'alpha' => ':attribute 只能由字母组成。', - 'alpha_dash' => ':attribute 只能由字母、数字、短划线(-)和下划线(_)组成。', - 'alpha_num' => ':attribute 只能由字母和数字组成。', + 'alpha' => ':attribute 只能包含字母。', + 'alpha_dash' => ':attribute 只能包含字母、 数字、 破折号和下划线', + 'alpha_num' => ':attribute 只能包含字母和数字', 'array' => ':attribute 必须是一个数组。', 'before' => ':attribute 必须要早于 :date。', 'before_or_equal' => ':attribute 必须要等于 :date 或更早。', 'between' => [ - 'numeric' => ':attribute 必须介于 :min - :max 之间。', - 'file' => ':attribute 必须介于 :min - :max KB 之间。', - 'string' => ':attribute 必须介于 :min - :max 个字符之间。', 'array' => ':attribute 必须只有 :min - :max 个单元。', + 'file' => ':attribute 必须介于 :min - :max KB 之间。', + 'numeric' => ':attribute 必须介于 :min - :max 之间。', + 'string' => ':attribute 必须介于 :min - :max 个字符之间。', ], 'boolean' => ':attribute 必须为布尔值。', 'confirmed' => ':attribute 两次输入不一致。', @@ -43,22 +43,25 @@ return [ 'digits_between' => ':attribute 必须是介于 :min 和 :max 位的数字。', 'dimensions' => ':attribute 图片尺寸不正确。', 'distinct' => ':attribute 已经存在。', + 'doesnt_end_with' => 'The :attribute may not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute may not start with one of the following: :values.', 'email' => ':attribute 不是一个合法的邮箱。', 'ends_with' => ':attribute 必须以 :values 为结尾。', + 'enum' => 'The selected :attribute is invalid.', 'exists' => ':attribute 不存在。', 'file' => ':attribute 必须是文件。', 'filled' => ':attribute 不能为空。', 'gt' => [ - 'numeric' => ':attribute 必须大于 :value。', - 'file' => ':attribute 必须大于 :value KB。', - 'string' => ':attribute 必须多于 :value 个字符。', 'array' => ':attribute 必须多于 :value 个元素。', + 'file' => ':attribute 必须大于 :value KB。', + 'numeric' => ':attribute 必须大于 :value。', + 'string' => ':attribute 必须多于 :value 个字符。', ], 'gte' => [ - 'numeric' => ':attribute 必须大于或等于 :value。', - 'file' => ':attribute 必须大于或等于 :value KB。', - 'string' => ':attribute 必须多于或等于 :value 个字符。', 'array' => ':attribute 必须多于或等于 :value 个元素。', + 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be greater than or equal to :value.', + 'string' => 'The :attribute must be greater than or equal to :value characters.', ], 'image' => ':attribute 必须是图片。', 'in' => '已选的属性 :attribute 无效。', @@ -69,36 +72,45 @@ return [ 'ipv6' => ':attribute 必须是有效的 IPv6 地址。', 'json' => ':attribute 必须是正确的 JSON 格式。', 'lt' => [ - 'numeric' => ':attribute 必须小于 :value。', - 'file' => ':attribute 必须小于 :value KB。', - 'string' => ':attribute 必须少于 :value 个字符。', 'array' => ':attribute 必须少于 :value 个元素。', + 'file' => ':attribute 必须小于 :value KB。', + 'numeric' => ':attribute 必须小于 :value。', + 'string' => ':attribute 必须少于 :value 个字符。', ], 'lte' => [ - 'numeric' => ':attribute 必须小于或等于 :value。', - 'file' => ':attribute 必须小于或等于 :value KB。', - 'string' => ':attribute 必须少于或等于 :value 个字符。', 'array' => ':attribute 必须少于或等于 :value 个元素。', + 'file' => 'The :attribute must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be less than or equal to :value.', + 'string' => 'The :attribute must be less than or equal to :value characters.', ], + 'mac_address' => 'The :attribute must be a valid MAC address.', 'max' => [ - 'numeric' => ':attribute 不能大于 :max。', - 'file' => ':attribute 不能大于 :max KB。', - 'string' => ':attribute 不能大于 :max 个字符。', - 'array' => ':attribute 最多只有 :max 个单元。', + 'array' => 'The :attribute must not have more than :max items.', + 'file' => 'The :attribute must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute must not be greater than :max.', + 'string' => 'The :attribute must not be greater than :max characters.', ], + 'max_digits' => 'The :attribute must not have more than :max digits.', 'mimes' => ':attribute 必须是一个 :values 类型的文件。', 'mimetypes' => ':attribute 必须是一个 :values 类型的文件。', 'min' => [ - 'numeric' => ':attribute 必须大于等于 :min。', - 'file' => ':attribute 大小不能小于 :min KB。', - 'string' => ':attribute 至少为 :min 个字符。', 'array' => ':attribute 至少有 :min 个单元。', + 'file' => ':attribute 大小不能小于 :min KB。', + 'numeric' => ':attribute 必须大于等于 :min。', + 'string' => ':attribute 至少为 :min 个字符。', ], + 'min_digits' => 'The :attribute must have at least :min digits.', 'multiple_of' => ':attribute 必须是 :value 的倍数', 'not_in' => '已选的属性 :attribute 非法。', 'not_regex' => ':attribute 的格式错误。', 'numeric' => ':attribute 必须是一个数字。', - 'password' => '密码错误', + 'password' => [ + 'letters' => 'The :attribute must contain at least one letter.', + 'mixed' => 'The :attribute must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute must contain at least one number.', + 'symbols' => 'The :attribute must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], 'present' => ':attribute 必须存在。', 'prohibited' => ':attribute 字段是禁止的.', 'prohibited_if' => '当 :other 为 :value 时, :attribute 字段被禁止', @@ -106,7 +118,9 @@ return [ 'prohibits' => ':attribute 字段禁止出现 ":other"', 'regex' => ':attribute 格式不正确。', 'required' => ':attribute 不能为空。', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', 'required_if' => '当 :other 为 :value 时 :attribute 不能为空。', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', 'required_unless' => '当 :other 不为 :values 时 :attribute 不能为空。', 'required_with' => '当 :values 存在时 :attribute 不能为空。', 'required_with_all' => '当 :values 存在时 :attribute 不能为空。', @@ -114,17 +128,17 @@ return [ 'required_without_all' => '当 :values 都不存在时 :attribute 不能为空。', 'same' => ':attribute 和 :other 必须相同。', 'size' => [ - 'numeric' => ':attribute 大小必须为 :size。', - 'file' => ':attribute 大小必须为 :size KB。', - 'string' => ':attribute 必须是 :size 个字符。', 'array' => ':attribute 必须为 :size 个单元。', + 'file' => ':attribute 大小必须为 :size KB。', + 'numeric' => ':attribute 大小必须为 :size。', + 'string' => ':attribute 必须是 :size 个字符。', ], 'starts_with' => ':attribute 必须以 :values 为开头。', 'string' => ':attribute 必须是一个字符串。', - 'timezone' => ':attribute 必须是一个合法的时区值。', + 'timezone' => 'The :attribute must be a valid timezone.', 'unique' => ':attribute 已经存在。', 'uploaded' => ':attribute 上传失败。', - 'url' => ':attribute 必须是有效的 url。', + 'url' => 'The :attribute must be a valid URL.', 'uuid' => ':attribute 必须是有效的 UUID。', 'single' => '当使用 :attribute 时,它必须是此请求主体中的唯一参数', @@ -171,9 +185,6 @@ return [ ], 'ids' => [ 'regex' => 'ID必须以逗号分隔,无需尾随逗号。', - ], - 'name' => [ - 'firstUser' => '已有注册用户', ] ],