From 2dfb1ef7547bb944b77720cab3c96208fb9b1b7b Mon Sep 17 00:00:00 2001 From: Bubka <858858+Bubka@users.noreply.github.com> Date: Fri, 15 Jul 2022 08:56:09 +0200 Subject: [PATCH] Recompile assets --- public/js/app.js | 1550 +++++++++++++++++++++++++++------------------- 1 file changed, 923 insertions(+), 627 deletions(-) diff --git a/public/js/app.js b/public/js/app.js index 48ce74d9..d98e536b 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -13324,7 +13324,7 @@ var FontAwesomeLayersText = { \***********************************************************************************************************************************************************/ /***/ ((module) => { -module.exports = {"de":{"auth":{"failed":"Diese Kombination aus Zugangsdaten wurde nicht in unserer Datenbank gefunden.","password":"Das Passwort ist falsch.","throttle":"Zu viele Loginversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.","sign_out":"Abmelden","sign_in":"Anmelden","sign_in_using":"Anmelden mit","login_and_password":"benutzername & passwort","register":"Registrieren","welcome_back_x":"Willkommen zurück, {0}","already_authenticated":"Bereits angemeldet","authentication":"Authentication","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.","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?"},"webauthn":{"security_device":"a security device","security_devices":"Security devices","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)","enhance_security_using_webauthn":"You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

\n 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":"Lost your device?","recover_your_account":"Recover your account","account_recovery":"Account recovery","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.","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","register_a_new_device":"Register a new 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.","invalid_recovery_token":"Invalid recovery token","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.
\n 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":"Set at least one device to enable these options","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.
\n This has no effect if you only use WebAuthn."}},"forms":{"name":"Name","login":"Anmeldung","webauthn_login":"WebAuthn login","email":"E-Mail","password":"Passwort","confirm_password":"Passwort bestätigen","confirm_new_password":"Neues Passwort bestätigen","dont_have_account_yet":"Sie haben noch keinen Account?","already_register":"Schon registriert?","authentication_failed":"Authentication failed","forgot_your_password":"Passwort vergessen?","request_password_reset":"Zurücksetzen","reset_password":"Password zurücksetzen","disabled_in_demo":"Feature disabled in Demo mode","new_password":"Neues Passwort","current_password":{"label":"Aktuelles Passwort","help":"Geben Sie Ihr aktuelles Passwort ein, um zu bestätigen, dass Sie es sind"},"change_password":"Passwort ändern","send_password_reset_link":"Link zum Zurücksetzen des Passworts senden","password_successfully_changed":"Passwort erfolgreich geändert","edit_account":"Account bearbeiten","profile_saved":"Profil erfolgreich aktualisiert!","welcome_to_demo_app_use_those_credentials":"Willkommen bei der 2FAuth Demo.

Sie können sich mit der E-Mail-Adresse demo@2fauth.app und dem Passwort demo anmelden","register_punchline":"Willkommen bei 2FAuth.
Du benötigst einen Account, um weiterzumachen. Füllen Sie dieses Formular aus, um sich zu registrieren, und wählen Sie bitte ein starkes Passwort, denn 2FA-Daten sind sensibel.","reset_punchline":"2FAuth sendet Ihnen einen Link zum Zurücksetzen des Passworts an diese Adresse. Klicken Sie auf den Link in der erhaltenen E-Mail, um ein neues Passwort festzulegen.","name_this_device":"Name this device","delete_account":"Delete account","delete_your_account":"Delete your account","delete_your_account_and_reset_all_data":"This will reset 2FAuth. Your user account will be deleted as well as all 2FA data. There is no going back.","user_account_successfully_deleted":"User account successfully deleted"}},"commons":{"cancel":"Abbrechen","update":"Aktualisieren","copy":"Copy","copy_to_clipboard":"In die Zwischenablage kopieren","copied_to_clipboard":"In die Zwischenablage kopiert","profile":"Profil","edit":"Bearbeiten","delete":"Löschen","disable":"Disable","enable":"Enable","create":"Erstellen","save":"Speichern","close":"Schließen","demo_do_not_post_sensitive_data":"Dies ist eine Demo-App, veröffentlichen Sie keine sensiblen Daten","selected":"ausgewählt","name":"Name","manage":"Verwalten","done":"Fertig","new":"Neu","back":"Zurück","move":"Verschieben","all":"Alle","rename":"Umbenennen","new_name":"New name","options":"Einstellungen","reload":"Aktualisieren","some_data_have_changed":"Einige Daten haben sich geändert. Sie sollten diese Seite","generate":"Generate","open_in_browser":"Open in browser","continue":"Continue"},"errors":{"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","Unable_to_decrypt_uri":"URI konnte nicht entschlüsselt werden","not_a_supported_otp_type":"Dieses OTP-Format wird derzeit nicht unterstützt","cannot_create_otp_without_secret":"Das OTP kann nicht ohne Geheimnis erstellt werden","data_of_qrcode_is_not_valid_URI":"The data of this QR code is not a valid OTP Auth URI:","wrong_current_password":"Aktuelles Passwort falsch, nichts wurde geändert","error_during_encryption":"Verschlüsselung fehlgeschlagen, Ihre Datenbank bleibt ungeschützt.","error_during_decryption":"Entschlüsselung fehlgeschlagen, Ihre Datenbank bleibt geschützt. Dies wird hauptsächlich durch eine Integritätsproblem verschlüsselter Daten für ein oder mehrere Konten verursacht.","qrcode_cannot_be_read":"Dieser QR-Code ist unlesbar","too_many_ids":"too many ids were included in the query parameter, max 100 allowed","delete_user_setting_only":"Only user-created setting can be deleted","indecipherable":"*indecipherable*","cannot_decipher_secret":"The secret cannot be deciphered. This is mainly caused by a wrong APP_KEY set in the .env configuration file of 2Fauth or a corrupted data stored in database.","https_required":"HTTPS context required","browser_does_not_support_webauthn":"Your device does not support webauthn. Try again later using a more modern browser","aborted_by_user":"Aborted by user","security_device_unsupported":"Security device unsupported","unsupported_with_reverseproxy":"Not applicable when using an auth proxy","user_deletion_failed":"User account deletion failed, no data have been deleted","auth_proxy_failed":"Proxy authentication failed","auth_proxy_failed_legend":"2Fauth is configured to run behind an authentication proxy but your proxy does not return the expected header. Check your configuration and try again."},"groups":{"groups":"Gruppen","create_group":"Create new group","select_accounts_to_show":"Konten zum Anzeigen auswählen","manage_groups":"Gruppen verwalten","active_group":"Aktive Gruppe","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","no_group":"Keine Gruppe","forms":{"new_group":"Neue Gruppe","new_name":"Neuer Name","rename_group":"Gruppe umbenennen"},"confirm":{"delete":"Sind Sie sicher, dass Sie diese Gruppe löschen möchten?"}},"languages":{"browser_preference":"Browser preference","en":"Englisch","fr":"Französisch","de":"Deutsch"},"pagination":{"previous":"« Zurück","next":"Weiter »"},"passwords":{"reset":"Das Passwort wurde zurückgesetzt!","sent":"Passworterinnerung wurde gesendet!","throttled":"Bitte warten Sie, bevor Sie es erneut versuchen.","token":"Der Passwort-Wiederherstellungs-Schlüssel ist ungültig oder abgelaufen.","user":"Es konnte leider kein Nutzer mit dieser E-Mail-Adresse gefunden werden.","password":"Passwörter müssen mindestens acht Zeichen lang sein und mit der Bestätigung übereinstimmen."},"settings":{"settings":"Einstellungen","account":"Account","oauth":"OAuth","webauthn":"WebAuthn","tokens":"Tokens","options":"Einstellungen","confirm":{"revoke":"Are you sure you want to revoke this token?"},"general":"Allgemein","security":"Sicherheit","profile":"Profile","change_password":"Change password","personal_access_tokens":"Personal access tokens","token_legend":"Personal Access Tokens allow any app to authenticate to the 2Fauth API. You should specify the access token as a Bearer token in the authorization header of consumer apps requests.","generate_new_token":"Generate a new token","revoke":"Revoke","token_revoked":"Token successfully revoked","revoking_a_token_is_permanent":"Revoking a token is permanent","make_sure_copy_token":"Make sure to copy your personal access token now. You won’t be able to see it again!","data_input":"Daten-Eingabe","forms":{"edit_settings":"Einstellungen bearbeiten","setting_saved":"Einstellungen gespeichert","new_token":"New token","some_translation_are_missing":"Some translations are missing using the browser preferred language?","help_translate_2fauth":"Help translate 2FAuth","language":{"label":"Sprache","help":"Language used to translate the 2FAuth user interface. Named languages are complete, set the one of your choice to override your browser preference."},"show_otp_as_dot":{"label":"Show generated one-time passwords as dot","help":"Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."},"close_otp_on_copy":{"label":"Close OTP after copy","help":"Automatically close the popup showing the generated password after it has been copied"},"use_basic_qrcode_reader":{"label":"Benutze den einfachen QR-Codeleser","help":"Wenn bei der Erfassung von QR-Codes Probleme auftreten können Sie mit dieser Option zu einem einfacheren, aber zuverlässigeren QR-Codeleser wechseln"},"display_mode":{"label":"Anzeigemodus","help":"Wählen Sie, ob Konten als Liste oder als Raster angezeigt werden sollen"},"grid":"Raster","list":"Liste","show_accounts_icons":{"label":"Symbole anzeigen","help":"Kontosymbole in der Hauptansicht anzeigen"},"auto_lock":{"label":"Automatische Sperrung","help":"Log out the user automatically in case of inactivity. Has no effect when authentication is handled by a proxy and no custom logout url is specified."},"use_encryption":{"label":"Sensible Daten schützen","help":"Vertrauliche Daten, die 2FA-Geheimnisse und E-Mails, werden verschlüsselt in der Datenbank gespeichert. Erstellen Sie ein Backup von der APP_KEY Variablen in der .env Datei (oder der gesamten Datei), da sie als Schlüssel zur gesicherten Datenbank dient. Es gibt keine Möglichkeit, verschlüsselte Daten ohne diesen Schlüssel zu wiederherzustellen."},"default_group":{"label":"Standardgruppe","help":"Die Gruppe, der neu erstellte Konten zugeordnet werden"},"useDirectCapture":{"label":"Direkteingabe","help":"Wählen Sie aus, ob Sie einen Eingabemodus unter den Verfügbaren wählen möchten oder ob Sie direkt den Standard-Eingabemodus verwenden möchten"},"defaultCaptureMode":{"label":"Standard-Eingabemodus","help":"Standard-Eingabemodus, der verwendet wird, falls die Direkteingabe aktiviert ist"},"remember_active_group":{"label":"Gruppenfilter merken","help":"Speichert den letzten Gruppenfilter und stellt ihn bei Ihrem nächsten Besuch wieder her"},"never":"Niemals","on_otp_copy":"On security code copy","1_minutes":"Nach 1 Minute","5_minutes":"Nach 5 Minuten","10_minutes":"Nach 10 Minuten","15_minutes":"Nach 15 Minuten","30_minutes":"Nach 30 Minuten","1_hour":"Nach 1 Stunde","1_day":"Nach 1 Tag","livescan":"QR-Code scannen","upload":"QR-Code hochladen","advanced_form":"Erweitertes Formular"}},"twofaccounts":{"service":"Dienst","account":"Benutzerkonto","accounts":"Benutzerkonten","icon":"Symbol","no_account_here":"Noch keine 2FA!","add_first_account":"Erstes Konto hinzufügen","use_full_form":"Oder nutzen Sie das vollständige Formular","add_one":"Konto hinzufügen","show_qrcode":"QR-Code anzeigen","no_service":"- no service -","forms":{"service":{"placeholder":"beispiel.de"},"account":{"placeholder":"Max Mustermann"},"new_account":"Neues Konto","edit_account":"Konto bearbeiten","otp_uri":"OTP Uri","scan_qrcode":"QR-Code scannen","upload_qrcode":"QR-Code hochladen","use_advanced_form":"Erweitertes Formular verwenden","prefill_using_qrcode":"Mit einem QR-Code ausfüllen","use_qrcode":{"val":"QR-Code verwenden","title":"Verwenden Sie einen QR-Code, um das Formular auszufüllen"},"unlock":{"val":"Entsperren","title":"Entsperren (auf eigene Gefahr)"},"lock":{"val":"Sperren","title":"Sperren"},"choose_image":"Bild auswählen…","test":"Test","secret":{"label":"Geheimnis","help":"Der Schlüssel, der zur Generierung Ihrer Sicherheitscodes verwendet wird"},"plain_text":"Klartext","otp_type":{"label":"Wählen Sie die Art des zu erstellenden OTP","help":"Zeit- oder HMAC-basiertes OTP"},"digits":{"label":"Ziffern","help":"Die Anzahl der Ziffern der generierten Sicherheitscodes"},"algorithm":{"label":"Algorithmus","help":"Der Algorithmus, der zur Sicherung Ihrer Sicherheitscodes verwendet wird"},"period":{"label":"Period","placeholder":"Default is 30","help":"The period of validity of the generated security codes in second"},"counter":{"label":"Counter","placeholder":"Default is 0","help":"The initial counter value","help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing"},"image":{"label":"Image","placeholder":"http://...","help":"The url of an external image to use as the account icon"},"options_help":"Sie können die folgenden Einstellungen leer lassen, wenn Sie nicht wissen, wie Sie sie einstellen. In dem Fall werden die Standardwerte verwendet.","alternative_methods":"Alternative Methoden"},"stream":{"live_scan_cant_start":"Der Live-Scan kann nicht gestartet werden :(","need_grant_permission":{"reason":"2FAuth hat keine Berechtigung auf Ihre Kamera zuzugreifen","solution":"Sie müssen die Erlaubnis erteilen, um Ihre Gerätekamera zu verwenden. Falls Sie bereits verweigert haben und Ihr Browser Sie nicht erneut anfragt, verweisen Sie bitte auf die Browser-Dokumentation, um herauszufinden, wie Sie die Erlaubnis erteilen können."},"not_readable":{"reason":"Fehler beim Laden des Scanners","solution":"Wird die Kamera bereits verwendet? Stellen Sie sicher, dass keine andere App Ihre Kamera verwendet und versuchen Sie es erneut"},"no_cam_on_device":{"reason":"Keine Kamera in diesem Gerät","solution":"Möglicherweise haben Sie vergessen, eine Webcam anzuschließen"},"secured_context_required":{"reason":"Sichere Umgebung erforderlich","solution":"HTTPS wird für den Live-Scan benötigt. Wenn Sie 2FAuth auf Ihrem Computer ausführen, verwenden Sie nur localhost und keinen anderen virtuellen Host"},"https_required":"HTTPS für Kamera-Übertragung erforderlich","camera_not_suitable":{"reason":"Die verbauten Kameras sind nicht geeignet","solution":"Bitte verwenden Sie ein anderes Gerät/Kamera"},"stream_api_not_supported":{"reason":"Stream API wird von diesem Browser nicht unterstützt","solution":"Sie sollten einen modernen Browser verwenden"}},"confirm":{"delete":"Sind Sie sicher, dass Sie dieses Konto löschen möchten?","cancel":"Das Konto wird gelöscht. Sind Sie sicher?"}},"validation":{"accepted":":attribute muss akzeptiert werden.","accepted_if":"The :attribute must be accepted when :other is :value.","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.","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."},"boolean":":attribute muss entweder 'true' oder 'false' sein.","confirmed":":attribute stimmt nicht mit der Bestätigung überein.","current_password":"The password is incorrect.","date":":attribute muss ein gültiges Datum sein.","date_equals":":attribute muss ein Datum gleich :date sein.","date_format":":attribute entspricht nicht dem gültigen Format für :format.","declined":"The :attribute must be declined.","declined_if":"The :attribute must be declined when :other is :value.","different":":attribute und :other müssen sich unterscheiden.","digits":":attribute muss :digits Stellen haben.","digits_between":":attribute muss zwischen :min und :max Stellen haben.","dimensions":":attribute hat ungültige Bildabmessungen.","distinct":":attribute beinhaltet einen bereits vorhandenen Wert.","email":":attribute muss eine gültige E-Mail-Adresse sein.","ends_with":":attribute muss eine der folgenden Endungen aufweisen: :values","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."},"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."},"image":":attribute muss ein Bild sein.","in":"Der gewählte Wert für :attribute ist ungültig.","in_array":"Der gewählte Wert für :attribute kommt nicht in :other vor.","integer":":attribute muss eine ganze Zahl sein.","ip":":attribute muss eine gültige IP-Adresse sein.","ipv4":":attribute muss eine gültige IPv4-Adresse sein.","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."},"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."},"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."},"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."},"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.","present":":attribute muss vorhanden sein.","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":":attribute Format ist ungültig.","required":":attribute muss ausgefüllt werden.","required_if":":attribute muss ausgefüllt werden, wenn :other den Wert :value hat.","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.","required_without":":attribute muss ausgefüllt werden, wenn :values nicht ausgefüllt wurde.","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."},"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.","unique":":attribute ist bereits vergeben.","uploaded":":attribute konnte nicht hochgeladen werden.","url":":attribute muss eine gültige URL sein.","uuid":":attribute muss ein UUID sein.","single":"When using :attribute it must be the only parameter in this request body","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."},"name":{"firstUser":"There is already a registered user"}},"attributes":[]}},"en":{"auth":{"failed":"These credentials do not match our records.","password":"The provided password is incorrect.","throttle":"Too many login attempts. Please try again in :seconds seconds.","sign_out":"Sign out","sign_in":"Sign in","sign_in_using":"Sign in using","login_and_password":"login & password","register":"Register","welcome_back_x":"Welcome back {0}","already_authenticated":"Already authenticated","authentication":"Authentication","maybe_later":"Maybe later","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.","confirm":{"logout":"Are you sure you want to log out?","revoke_device":"Are you sure you want to revoke this device?","delete_account":"Are you sure you want to delete your account?"},"webauthn":{"security_device":"a security device","security_devices":"Security devices","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)","enhance_security_using_webauthn":"You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

\n 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":"Lost your device?","recover_your_account":"Recover your account","account_recovery":"Account recovery","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.","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","register_a_new_device":"Register a new 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.","invalid_recovery_token":"Invalid recovery token","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.
\n 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":"Set at least one device to enable these options","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.
\n This has no effect if you only use WebAuthn."}},"forms":{"name":"Name","login":"Login","webauthn_login":"WebAuthn login","email":"Email","password":"Password","confirm_password":"Confirm password","confirm_new_password":"Confirm new password","dont_have_account_yet":"Don't have your account yet?","already_register":"Already registered?","authentication_failed":"Authentication failed","forgot_your_password":"Forgot your password?","request_password_reset":"Reset it","reset_password":"Reset password","disabled_in_demo":"Feature disabled in Demo mode","new_password":"New password","current_password":{"label":"Current password","help":"Fill in your current password to confirm that it's you"},"change_password":"Change password","send_password_reset_link":"Send password reset link","password_successfully_changed":"Password successfully changed","edit_account":"Edit account","profile_saved":"Profile successfully updated!","welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","register_punchline":"Welcome to 2FAuth.
You need an account to go further. Fill this form to register yourself, and please, choose a strong password, 2FA data are sensitives.","reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password.","name_this_device":"Name this device","delete_account":"Delete account","delete_your_account":"Delete your account","delete_your_account_and_reset_all_data":"This will reset 2FAuth. Your user account will be deleted as well as all 2FA data. There is no going back.","user_account_successfully_deleted":"User account successfully deleted"}},"commons":{"cancel":"Cancel","update":"Update","copy":"Copy","copy_to_clipboard":"Copy to clipboard","copied_to_clipboard":"Copied to clipboard","profile":"Profile","edit":"Edit","delete":"Delete","disable":"Disable","enable":"Enable","create":"Create","save":"Save","close":"Close","demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","selected":"selected","name":"Name","manage":"Manage","done":"Done","new":"New","back":"Back","move":"Move","all":"All","rename":"Rename","new_name":"New name","options":"Options","reload":"Reload","some_data_have_changed":"Some data have changed. You should","generate":"Generate","open_in_browser":"Open in browser","continue":"Continue","discard":"Discard"},"errors":{"resource_not_found":"Resource not found","error_occured":"An error occured:","cannot_register_more_user":"You cannot register more than one user.","refresh":"Refresh","no_valid_otp":"No valid OTP resource in this QR code","something_wrong_with_server":"Something is wrong with your server","Unable_to_decrypt_uri":"Unable to decrypt uri","not_a_supported_otp_type":"This OTP format is not currently supported","cannot_create_otp_without_secret":"Cannot create an OTP without a secret","data_of_qrcode_is_not_valid_URI":"The data of this QR code is not a valid OTP Auth URI:","wrong_current_password":"Wrong current password, nothing has changed","error_during_encryption":"Encryption failed, your database remains unprotected.","error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","qrcode_cannot_be_read":"This QR code is unreadable","too_many_ids":"too many ids were included in the query parameter, max 100 allowed","delete_user_setting_only":"Only user-created setting can be deleted","indecipherable":"*indecipherable*","cannot_decipher_secret":"The secret cannot be deciphered. This is mainly caused by a wrong APP_KEY set in the .env configuration file of 2Fauth or a corrupted data stored in database.","https_required":"HTTPS context required","browser_does_not_support_webauthn":"Your device does not support webauthn. Try again later using a more modern browser","aborted_by_user":"Aborted by user","security_device_unsupported":"Security device unsupported","unsupported_with_reverseproxy":"Not applicable when using an auth proxy","user_deletion_failed":"User account deletion failed, no data have been deleted","auth_proxy_failed":"Proxy authentication failed","auth_proxy_failed_legend":"2Fauth is configured to run behind an authentication proxy but your proxy does not return the expected header. Check your configuration and try again.","invalid_google_auth_migration":"Invalid or unreadable Google Authenticator data"},"groups":{"groups":"Groups","create_group":"Create new group","select_accounts_to_show":"Select accounts to show","manage_groups":"Manage groups","active_group":"Active group","manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","move_selected_to":"Move selected to","no_group":"No group","forms":{"new_group":"New group","new_name":"New name","rename_group":"Rename group"},"confirm":{"delete":"Are you sure you want to delete this group?"}},"languages":{"browser_preference":"Browser preference","en":"English","fr":"French","de":"German"},"pagination":{"previous":"« Previous","next":"Next »"},"passwords":{"reset":"Your password has been reset!","sent":"We have emailed your password reset link!","throttled":"Please wait before retrying.","token":"This password reset token is invalid.","user":"We can't find a user with that email address.","password":"Passwords must be at least eight characters and match the confirmation."},"settings":{"settings":"Settings","account":"Account","oauth":"OAuth","webauthn":"WebAuthn","tokens":"Tokens","options":"Options","confirm":{"revoke":"Are you sure you want to revoke this token?"},"general":"General","security":"Security","profile":"Profile","change_password":"Change password","personal_access_tokens":"Personal access tokens","token_legend":"Personal Access Tokens allow any app to authenticate to the 2Fauth API. You should specify the access token as a Bearer token in the authorization header of consumer apps requests.","generate_new_token":"Generate a new token","revoke":"Revoke","token_revoked":"Token successfully revoked","revoking_a_token_is_permanent":"Revoking a token is permanent","make_sure_copy_token":"Make sure to copy your personal access token now. You won’t be able to see it again!","data_input":"Data input","forms":{"edit_settings":"Edit settings","setting_saved":"Settings saved","new_token":"New token","some_translation_are_missing":"Some translations are missing using the browser preferred language?","help_translate_2fauth":"Help translate 2FAuth","language":{"label":"Language","help":"Language used to translate the 2FAuth user interface. Named languages are complete, set the one of your choice to override your browser preference."},"show_otp_as_dot":{"label":"Show generated one-time passwords as dot","help":"Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."},"close_otp_on_copy":{"label":"Close OTP after copy","help":"Automatically close the popup showing the generated password after it has been copied"},"use_basic_qrcode_reader":{"label":"Use basic QR code reader","help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader"},"display_mode":{"label":"Display mode","help":"Choose whether you want accounts to be displayed as a list or as a grid"},"grid":"Grid","list":"List","show_accounts_icons":{"label":"Show icons","help":"Show icons accounts in the main view"},"auto_lock":{"label":"Auto lock","help":"Log out the user automatically in case of inactivity. Has no effect when authentication is handled by a proxy and no custom logout url is specified."},"use_encryption":{"label":"Protect sensible data","help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key."},"default_group":{"label":"Default group","help":"The group to which the newly created accounts are associated"},"useDirectCapture":{"label":"Direct input","help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode"},"defaultCaptureMode":{"label":"Default input mode","help":"Default input mode used when the Direct input option is On"},"remember_active_group":{"label":"Remember group filter","help":"Save the last group filter applied and restore it on your next visit"},"never":"Never","on_otp_copy":"On security code copy","1_minutes":"After 1 minute","5_minutes":"After 5 minutes","10_minutes":"After 10 minutes","15_minutes":"After 15 minutes","30_minutes":"After 30 minutes","1_hour":"After 1 hour","1_day":"After 1 day","livescan":"QR code livescan","upload":"QR code upload","advanced_form":"Advanced form"}},"twofaccounts":{"service":"Service","account":"Account","accounts":"Accounts","icon":"Icon","no_account_here":"No 2FA here!","add_first_account":"Add your first account","use_full_form":"Or use the full form","add_one":"Add one","show_qrcode":"Show QR code","no_service":"- no service -","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"John DOE"},"new_account":"New account","edit_account":"Edit account","otp_uri":"OTP Uri","scan_qrcode":"Scan a QR code","upload_qrcode":"Upload a QR code","use_advanced_form":"Use the advanced form","prefill_using_qrcode":"Prefill using a QR Code","use_qrcode":{"val":"Use a qrcode","title":"Use a QR code to fill the form magically"},"unlock":{"val":"Unlock","title":"Unlock it (at your own risk)"},"lock":{"val":"Lock","title":"Lock it"},"choose_image":"Choose an image…","test":"Test","secret":{"label":"Secret","help":"The key used to generate your security codes"},"plain_text":"Plain text","otp_type":{"label":"Choose the type of OTP to create","help":"Time-based OTP or HMAC-based OTP"},"digits":{"label":"Digits","help":"The number of digits of the generated security codes"},"algorithm":{"label":"Algorithm","help":"The algorithm used to secure your security codes"},"period":{"label":"Period","placeholder":"Default is 30","help":"The period of validity of the generated security codes in second"},"counter":{"label":"Counter","placeholder":"Default is 0","help":"The initial counter value","help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing"},"image":{"label":"Image","placeholder":"http://...","help":"The url of an external image to use as the account icon"},"options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","alternative_methods":"Alternative methods"},"stream":{"live_scan_cant_start":"Live scan can't start :(","need_grant_permission":{"reason":"2FAuth does not have permission to access your camera","solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission."},"not_readable":{"reason":"Fail to load scanner","solution":"Is the camera already in use? Ensure that no other app use your camera and try again"},"no_cam_on_device":{"reason":"No camera on this device","solution":"Maybe your forget to plug in your webcam"},"secured_context_required":{"reason":"Secure context required","solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost"},"https_required":"HTTPS required for camera streaming","camera_not_suitable":{"reason":"Installed cameras are not suitable","solution":"Please use another device/camera"},"stream_api_not_supported":{"reason":"Stream API is not supported in this browser","solution":"You should use a modern browser"}},"confirm":{"delete":"Are you sure you want to delete this account?","cancel":"The account will be lost. Are you sure?","discard":"Are you sure you want to discard this account?","discard_all":"Are you sure you want to discard all accounts?","discard_duplicates":"Are you sure you want to discard all duplicates?"},"import":{"import":"Import","import_legend":"Import your Google Authenticator accounts.","use_the_gauth_qr_code":"Load a G-Auth QR code","issuer":"Issuer","imported":"Imported","failure":"Failure","x_valid_accounts_found":"{count} valid accounts found","import_all":"Import all","import_this_account":"Import this account","discard_all":"Discard all","discard_duplicates":"Discard duplicates","discard_this_account":"Discard this account","generate_a_test_password":"Generate a test pasword","possible_duplicate":"An account with the exact same data already exists"}},"validation":{"accepted":"The :attribute must be accepted.","accepted_if":"The :attribute must be accepted when :other is :value.","active_url":"The :attribute is not a valid URL.","after":"The :attribute must be a date after :date.","after_or_equal":"The :attribute must be a date after or equal to :date.","alpha":"The :attribute may only contain letters.","alpha_dash":"The :attribute may only contain letters, numbers, dashes and underscores.","alpha_num":"The :attribute may only contain letters and numbers.","array":"The :attribute must be an array.","before":"The :attribute must be a date before :date.","before_or_equal":"The :attribute must be a date before or equal to :date.","between":{"numeric":"The :attribute must be between :min and :max.","file":"The :attribute must be between :min and :max kilobytes.","string":"The :attribute must be between :min and :max characters.","array":"The :attribute must have between :min and :max items."},"boolean":"The :attribute field must be true or false.","confirmed":"The :attribute confirmation does not match.","current_password":"The password is incorrect.","date":"The :attribute is not a valid date.","date_equals":"The :attribute must be a date equal to :date.","date_format":"The :attribute does not match the format :format.","declined":"The :attribute must be declined.","declined_if":"The :attribute must be declined when :other is :value.","different":"The :attribute and :other must be different.","digits":"The :attribute must be :digits digits.","digits_between":"The :attribute must be between :min and :max digits.","dimensions":"The :attribute has invalid image dimensions.","distinct":"The :attribute field has a duplicate value.","email":"The :attribute must be a valid email address.","ends_with":"The :attribute must end with one of the following: :values.","exists":"The selected :attribute is invalid.","file":"The :attribute must be a file.","filled":"The :attribute field must have a value.","gt":{"numeric":"The :attribute must be greater than :value.","file":"The :attribute must be greater than :value kilobytes.","string":"The :attribute must be greater than :value characters.","array":"The :attribute must have more than :value items."},"gte":{"numeric":"The :attribute must be greater than or equal :value.","file":"The :attribute must be greater than or equal :value kilobytes.","string":"The :attribute must be greater than or equal :value characters.","array":"The :attribute must have :value items or more."},"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":{"numeric":"The :attribute must be less than :value.","file":"The :attribute must be less than :value kilobytes.","string":"The :attribute must be less than :value characters.","array":"The :attribute must have less than :value items."},"lte":{"numeric":"The :attribute must be less than or equal :value.","file":"The :attribute must be less than or equal :value kilobytes.","string":"The :attribute must be less than or equal :value characters.","array":"The :attribute must not have more than :value items."},"max":{"numeric":"The :attribute may not be greater than :max.","file":"The :attribute may not be greater than :max kilobytes.","string":"The :attribute may not be greater than :max characters.","array":"The :attribute may not have more than :max items."},"mimes":"The :attribute must be a file of type: :values.","mimetypes":"The :attribute must be a file of type: :values.","min":{"numeric":"The :attribute must be at least :min.","file":"The :attribute must be at least :min kilobytes.","string":"The :attribute must be at least :min characters.","array":"The :attribute must have at least :min items."},"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":"The password is incorrect.","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_if":"The :attribute field is required when :other is :value.","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":{"numeric":"The :attribute must be :size.","file":"The :attribute must be :size kilobytes.","string":"The :attribute must be :size characters.","array":"The :attribute must contain :size items."},"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 zone.","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","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."},"name":{"firstUser":"There is already a registered user"}},"attributes":[]}},"es":{"auth":{"failed":"Estas credenciales no coinciden con nuestros registros.","password":"La contraseña proporcionada es incorrecta.","throttle":"Demasiados intentos de acceso. Por favor intente nuevamente en :seconds segundos.","sign_out":"Cerrar sesión","sign_in":"Iniciar sesión","sign_in_using":"Inicia sesión, usando","login_and_password":"usuario y contraseña","register":"Registrarse","welcome_back_x":"Bienvenido/a otra vez {0}","already_authenticated":"Ya está autenticado","authentication":"Autenticación","maybe_later":"Quizás más tarde","user_account_controlled_by_proxy":"Cuenta de usuario disponible por un proxy de autenticación.
Administra la cuenta a nivel de proxy.","auth_handled_by_proxy":"Autenticación administrada por un proxy inverso, las configuraciones de abajo están deshabilitadas.
Gestionar autenticación a nivel proxy.","confirm":{"logout":"¿Seguro que quieres cerrar la sesión?","revoke_device":"¿Está seguro que quiere eliminar este dispositivo?","delete_account":"¿Está seguro que desea eliminar su cuenta?"},"webauthn":{"security_device":"un dispositivo de seguridad","security_devices":"Dispositivos de seguridad","security_devices_legend":"Dispositivos de autenticación que pude usar para iniciar sesión en 2FAuth, como: llaves de seguridad (ej. Yubikey) o smartphones con capacidades biométricas (ej. Apple FaceID/TouchID)","enhance_security_using_webauthn":"Puede mejorar la seguridad de su cuenta 2FAuth activando la autenticación WebAuthn.

\n WebAuthn permite el uso de dispositivos de confianza (como, Yubikeys o smartphones con capacidades biométricas) para iniciar sesión rápidamente y de forma más segura.","use_security_device_to_sign_in":"Prepárese para autenticarse usando (uno) de sus dispositivos de seguridad. Conecte su llave, retirar máscaras o guantes, etc.","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.","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","register_a_new_device":"Registrar un nuevo 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.","invalid_recovery_token":"Token de recuperación inválido","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.
\n 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.
\n Esto no tiene efecto si sólo utiliza WebAuthn."}},"forms":{"name":"Nombre","login":"Iniciar sesión","webauthn_login":"WebAuthn login","email":"E-mail","password":"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?","already_register":"¿Ya te has registrado?","authentication_failed":"La autenticación ha fallado","forgot_your_password":"¿Olvidó su contraseña?","request_password_reset":"Reiniciarlo","reset_password":"Restablecer contraseña","disabled_in_demo":"Característica desactivada en el modo Demo","new_password":"Nueva contraseña","current_password":{"label":"Contraseña actual","help":"Introduzca su contraseña actual para confirmar que es usted"},"change_password":"Cambiar Contraseña","send_password_reset_link":"Enviar enlace para restablecer contraseña","password_successfully_changed":"Contraseña cambiada correctamente","edit_account":"Editar cuenta","profile_saved":"¡Perfil actualizado con éxito!","welcome_to_demo_app_use_those_credentials":"Bienvenido a la demostración de 2FAuth.

Puede conectarse usando la dirección de correo demo@2fauth.app y la contraseña demo","register_punchline":"Bienvenido a 2FAuth.
Necesita una cuenta para ir más allá. Rellene este formulario para registrarse y, por favor, elija una contraseña fuerte, los datos de 2FA son sensibles.","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"}},"commons":{"cancel":"Cancelar","update":"Actualizar","copy":"Copiar","copy_to_clipboard":"Copiar al portapapeles","copied_to_clipboard":"Copiado al portapapeles","profile":"Perfil","edit":"Editar","delete":"Eliminar","disable":"Desactivar","enable":"Activar","create":"Crear","save":"Guardar","close":"Cerrar","demo_do_not_post_sensitive_data":"Esta instancia es para demostracion, no ingrese informacion privada","selected":"seleccionado","name":"Nombre","manage":"Configurar","done":"Hecho","new":"Nuevo","back":"Volver","move":"Mover","all":"Todo","rename":"Renombrar","new_name":"Nuevo nombre","options":"Opciones","reload":"Recargar","some_data_have_changed":"Algunos datos han cambiado. Debería","generate":"Generar","open_in_browser":"Abrir en el navegador","continue":"Continuar"},"errors":{"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":"Los datos de este código QR no son una URI OTP de autenticación válida:","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.","qrcode_cannot_be_read":"Este código QR no se puede leer","too_many_ids":"demasiado ids fueron incluidos en los parámetros de consulta, máx. 100 permitidos","delete_user_setting_only":"Sólo los ajustes creados por el usuario pueden ser eliminados","indecipherable":"*indescifrable*","cannot_decipher_secret":"The clave secreta no puede ser descifrada. Esto es, principalmente, causado por una APP_KEY inválida en el archivo de configuración .env de 2FAuth, o datos corruptos almacenados en la base de datos.","https_required":"Requerido HTTP Context","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","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."},"groups":{"groups":"Grupos","create_group":"Crear nuevo grupo","select_accounts_to_show":"Seleccionar cuentas para mostrar","manage_groups":"Gestionar grupos","active_group":"Grupo activo","manage_groups_legend":"Puede crear grupos para organizar sus cuentas de la manera que desee. 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","no_group":"Sin grupo","forms":{"new_group":"Nuevo grupo","new_name":"Nuevo nombre","rename_group":"Renombrar grupo"},"confirm":{"delete":"¿Está seguro que desea eliminar este grupo?"}},"languages":{"browser_preference":"Preferencia del navegador","en":"Inglés","fr":"Francés","de":"Alemán"},"pagination":{"previous":"« Anterior","next":"Siguiente »"},"passwords":{"reset":"¡Su contraseña ha sido restablecida!","sent":"¡Te hemos enviado por correo el enlace para restablecer tu contraseña!","throttled":"Por favor, espere antes de intentar de nuevo.","token":"El token de recuperación de contraseña es inválido.","user":"No podemos encontrar ningún usuario con ese correo electrónico.","password":"La contraseña debe tener al menos ocho caracteres, y coincidir con la confirmación de contraseña."},"settings":{"settings":"Ajustes","account":"Cuenta","oauth":"OAuth","webauthn":"WebAuthn","tokens":"Tokens","options":"Opciones","confirm":{"revoke":"¿Está seguro que desea revocar este token?"},"general":"General","security":"Seguridad","profile":"Perfil","change_password":"Cambiar contraseña","personal_access_tokens":"Tokens de acceso personal","token_legend":"Los Tokens de Acceso Personal, permiten a cualquier aplicación autenticarse con la API de 2FAuth. Debe especificar el token de acceso como Bearer Token en la cabecera de autorización de aplicaciones de tercero.","generate_new_token":"Generar nuevo token","revoke":"Revocar","token_revoked":"Token revocado correctamente","revoking_a_token_is_permanent":"Revocar un token es permanente","make_sure_copy_token":"Asegúrese de copiar su token de acceso personal ahora. ¡No podrá volver a verlo!","data_input":"Introducción de datos","forms":{"edit_settings":"Modificar ajustes","setting_saved":"Ajustes guardados","new_token":"Nuevo token","some_translation_are_missing":"¿Faltan algunas traducciones utilizando el idioma preferido por el navegador?","help_translate_2fauth":"Ayude a traducir 2FAuth","language":{"label":"Idioma","help":"Idioma utilizado para traducir la interfaz de usuario de 2FAuth. Los idiomas listados están completos, establezca el idioma de su elección para reemplazar las preferencias de su navegador."},"show_otp_as_dot":{"label":"Mostrar contraseñas generadas de un solo uso como punto","help":"Sustituya los carácteres de la contraseña generados por *** para asegurar la confidencialidad. No afecta a la función de copiar/pegar."},"close_otp_on_copy":{"label":"Cerrar token después de copiarlo","help":"Cerrar automáticamente la ventana emergente mostrando el token generado después de haber sido copiado"},"use_basic_qrcode_reader":{"label":"Usar lector de código QR básico","help":"Si experimenta problemas al capturar códigos QR habilite esta opción para cambiar a un lector de código QR más básico, pero más fiable"},"display_mode":{"label":"Modo de visualización","help":"Elija si desea que las cuentas se muestren como una lista o como una cuadrícula"},"grid":"Cuadrícula","list":"Lista","show_accounts_icons":{"label":"Mostrar iconos","help":"Mostar iconos de aplicaciones en la vista principal"},"auto_lock":{"label":"Bloqueo automático","help":"Cerrar sesión del usuario automáticamente en caso de inactividad. No tiene efecto cuando la autenticación es manejada por un proxy, ni cuando ninguna url de cierre de sesión personalizada se especificada."},"use_encryption":{"label":"Proteger los datos confidenciales","help":"Los datos sensibles, las claves secretas y correos electrónicos de 2FA, se almacenan cifrados en la base de datos. Asegúrese de respaldar el valor de APP_KEY de su archivo .env (o el archivo entero), pues, sirve como clave de cifrado. No hay forma de descifrar datos encriptados sin esta clave."},"default_group":{"label":"Grupo por defecto","help":"El grupo al que las cuentas recién creadas están asociadas"},"useDirectCapture":{"label":"Entrada directa","help":"Elija si desea que se le pida que elija un modo de entrada entre los disponibles o si desea utilizar directamente el modo de entrada por defecto"},"defaultCaptureMode":{"label":"Modo de entrada de datos por defecto","help":"Modo de entrada predeterminado usado cuando la opción de entrada directa está encendida"},"remember_active_group":{"label":"Recordar filtro de grupo","help":"Guardar el último filtro de grupo aplicado y restaurarlo en su próxima visita"},"never":"Nunca","on_otp_copy":"Al copiar código de seguridad","1_minutes":"Después de 1 minuto","5_minutes":"Después de 5 minutos","10_minutes":"Después de 10 minutos","15_minutes":"Después de 15 minutos","30_minutes":"Después de 30 minutos","1_hour":"Después de 1 hora","1_day":"Después de 1 día","livescan":"Escaneo código QR","upload":"Subida de código QR","advanced_form":"Formulario avanzado"}},"twofaccounts":{"service":"Servicio","account":"Cuenta","accounts":"Cuentas","icon":"Icono","no_account_here":"¡No hay 2FA aquí!","add_first_account":"Agrega tu primera cuenta","use_full_form":"O usa el formulario completo","add_one":"Agregar uno","show_qrcode":"Muestra el código QR","no_service":"- sin servicio -","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"John DOE"},"new_account":"Nueva cuenta","edit_account":"Editar cuenta","otp_uri":"OTP Uri","scan_qrcode":"Escanear un código QR","upload_qrcode":"Subir un código QR","use_advanced_form":"Usar el formulario avanzado","prefill_using_qrcode":"Rellenar usando un código QR","use_qrcode":{"val":"Usar un código QR","title":"Usa un código QR para rellenar mágicamente el formulario"},"unlock":{"val":"Desbloquear","title":"Desbloquearlo (bajo su propio riesgo)"},"lock":{"val":"Bloquear","title":"Bloquearlo"},"choose_image":"Seleccionar una imagen…","test":"Test","secret":{"label":"Secreto","help":"La clave utilizada para generar sus códigos de seguridad"},"plain_text":"Texto plano","otp_type":{"label":"Elija el tipo de OTP a crear","help":"OTP basado en tiempo, u OTP basado en HMAC"},"digits":{"label":"Dígitos","help":"El número de dígitos del código de seguridad generado"},"algorithm":{"label":"Algorítmo","help":"El algoritmo usado para proteger sus códigos de seguridad"},"period":{"label":"Periodo","placeholder":"Por defecto es 30","help":"Periodo de validez de los códigos se seguridad generados, en segundos"},"counter":{"label":"Contador","placeholder":"Por defecto es 0","help":"El valor inicial del contador","help_lock":"Es arriesgado editar el contador, ya que puede desincronizar la cuenta con el servidor de verificación del servicio. Utilice el icono de bloqueo para habilitar la modificación, pero solo si sabe lo que está haciendo"},"image":{"label":"Imágen","placeholder":"http://...","help":"La url de una imagen externa a usar como icono de cuenta"},"options_help":"Puede dejar las siguientes opciones en blanco si no sabe cómo establecerlas. Los valores más utilizados se aplicarán.","alternative_methods":"Métodos alternativos"},"stream":{"live_scan_cant_start":"Live scan no puede comenzar :(","need_grant_permission":{"reason":"2FAuth no tiene permiso para acceder a tu cámara","solution":"Necesitas conceder permiso para usar la cámara de tu dispositivo. Si ya lo ha denegado y su navegador no le preguntan de nuevo, por favor refiérase a la documentación del navegador para averiguar cómo conceder permisos."},"not_readable":{"reason":"Fallo al cargar el escáner","solution":"¿La cámara ya está en uso? Asegúrate de que ninguna otra aplicación use tu cámara e inténtalo de nuevo"},"no_cam_on_device":{"reason":"No se encontraron cámaras en este dispositivo","solution":"Quizás hayas olvidado conectar la webcam"},"secured_context_required":{"reason":"Secure context requerido","solution":"HTTPS es necesario para escanear en vivo. Si ejecuta 2FAuth desde su computadora, no utilice un host virtual distinto de localhost"},"https_required":"HTTPS requerido para la transmisión de la cámara","camera_not_suitable":{"reason":"Las cámaras instaladas no son apropiadas","solution":"Por favor usa otro dispositivo/cámara"},"stream_api_not_supported":{"reason":"Stream API no está soportado en este navegador","solution":"Deberías usar un navegador moderno"}},"confirm":{"delete":"¿Está seguro que desea eliminar esta cuenta?","cancel":"La cuenta será eliminada. ¿Estás seguro?"}},"validation":{"accepted":":attribute debe ser aceptado.","accepted_if":":attribute debe ser aceptado cuando :other sea :value.","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.","array":":attribute debe ser un conjunto.","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."},"boolean":"El campo :attribute debe tener un valor verdadero o falso.","confirmed":"La confirmación de :attribute no coincide.","current_password":"La contraseña es incorrecta.","date":":attribute no es una fecha válida.","date_equals":":attribute debe ser una fecha igual a :date.","date_format":":attribute no corresponde al formato :format.","declined":":attribute debe ser rechazado.","declined_if":":attribute debe ser rechazado cuando :other sea :value.","different":":attribute y :other deben ser diferentes.","digits":":attribute debe tener :digits dígitos.","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.","email":":attribute no es un correo válido.","ends_with":"El campo :attribute debe finalizar con uno de los siguientes valores: :values","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."},"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."},"image":":attribute debe ser una imagen.","in":":attribute es inválido.","in_array":"El campo :attribute no existe en :other.","integer":":attribute debe ser un número entero.","ip":":attribute debe ser una dirección IP válida.","ipv4":":attribute debe ser una dirección IPv4 válida.","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."},"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."},"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."},"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."},"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.","present":"El campo :attribute debe estar presente.","prohibited":"El campo :attribute está prohibido.","prohibited_if":"El campo :attribute está prohibido cuando :other es :value.","prohibited_unless":"El campo :attribute está prohibido a menos que :other sea :values.","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_if":"El campo :attribute es obligatorio cuando :other es :value.","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.","required_without":"El campo :attribute es obligatorio cuando :values no está presente.","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."},"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.","unique":"El campo :attribute ya ha sido registrado.","uploaded":"Subir :attribute ha fallado.","url":":attribute debe ser una URL válida.","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","custom":{"icon":{"image":"Los formatos soportados, son: jpeg, png, bmp, gif, svg o webp."},"qrcode":{"image":"Los formatos soportados, son: jpeg, png, bmp, gif, svg o webp."},"uri":{"regex":":attribute no es una otpauth uri válida."},"otp_type":{"in":":attribute no está soportado."},"email":{"exists":"No se ha encontrado ninguna cuenta con este correo electrónico."},"secret":{"isBase32Encoded":":attribute debe ser una cadena codificada en base32."},"account":{"regex":":attribute no debe contener dos puntos."},"service":{"regex":":attribute no debe contener dos puntos."},"label":{"required":"La uri debe tener una etiqueta."},"ids":{"regex":"Los IDs deben estar separados por comas, sin comas finales."},"name":{"firstUser":"Ya hay un usuario registrado"}},"attributes":[]}},"fr":{"auth":{"failed":"Ces identifiants ne correspondent pas à nos enregistrements","password":"Le mot de passe saisi est incorrect.","throttle":"Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.","sign_out":"Déconnexion","sign_in":"Se connecter","sign_in_using":"Se connecter en utilisant","login_and_password":"login & mot de passe","register":"Créer un compte","welcome_back_x":"Bienvenue {0}","already_authenticated":"Déjà authentifié","authentication":"Authentification","maybe_later":"Peut-être plus tard","user_account_controlled_by_proxy":"Compte utilisateur mis à disposition par un proxy d'authentification.
Gérer le compte au niveau du proxy.","auth_handled_by_proxy":"Authentification gérée par un proxy inverse, les paramètres ci-dessous sont désactivés.
Gérer l'authentification au niveau du proxy.","confirm":{"logout":"Etes-vous sûrs de vouloir vous déconnecter ?","revoke_device":"Voulez-vous vraiment supprimer cet appareil ?","delete_account":"Voulez-vous vraiment supprimer votre compte ?"},"webauthn":{"security_device":"un périphérique de sécurité","security_devices":"Périphériques de sécurité","security_devices_legend":"Périphériques d'authentification que vous pouvez utiliser pour vous connecter à 2FAuth, comme des clés de sécurité (ex : YubiKey) ou des smartphones dotés de capacités biométriques (ex : Apple FaceId/TouchId)","enhance_security_using_webauthn":"Vous pouvez améliorer la sécurité de votre compte 2FAuth en activant l'authentification WebAuthn.

\n WebAuthn vous permet d'utiliser des appareils de confiance (comme des Yubikeys ou des smartphones dotés de capacités biométriques) pour vous connecter rapidement et de manière plus sécurisée.","use_security_device_to_sign_in":"Préparez-vous à vous authentifier en utilisant un de vos dispositifs de sécurité. Branchez votre clé, retirez votre masque ou vos gants, etc.","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.","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","register_a_new_device":"Ajouter un nouveau 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.","invalid_recovery_token":"Jeton de sécurité invalide","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.
\n 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."},"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.
\n Ceci est sans effet si vous utilisez uniquement WebAuthn."}},"forms":{"name":"Nom","login":"Connexion","webauthn_login":"Connexion WebAuthn","email":"Email","password":"Mot de passe","confirm_password":"Confirmez le mot de passe","confirm_new_password":"Confirmez le nouveau mot de passe","dont_have_account_yet":"Pas encore de compte ?","already_register":"Déjà enregistré ?","authentication_failed":"Échec de l'authentification","forgot_your_password":"Mot de passe oublié ?","request_password_reset":"Réinitialisez-le","reset_password":"Mot de passe oublié","disabled_in_demo":"Fonctionnalité désactivée en mode Démo","new_password":"Nouveau mot de passe","current_password":{"label":"Mot de passe actuel","help":"Indiquez votre mot de passe actuel pour confirmer qu'il s'agit bien de vous"},"change_password":"Modifier le mot de passe","send_password_reset_link":"Envoyer","password_successfully_changed":"Mot de passe modifié avec succès","edit_account":"Mis à jour du profil","profile_saved":"Profil mis à jour avec succès !","welcome_to_demo_app_use_those_credentials":"bienvenue sur la démo de 2FAuth.

Vous pouvez vous connecter en utilisant l'adresse email demo@2fauth.app et le mot de passe demo","register_punchline":"Bienvenue sur 2FAuth.
Vous avez besoin d'un compte pour aller plus loin. Remplissez ce formulaire pour vous inscrire et, s'il vous plaît, choisissez un mot de passe fort, les données 2FA sont sensibles.","reset_punchline":"2FAuth vous enverra un lien de réinitialisation de mot de passe à cette adresse. Cliquez sur le lien dans l'e-mail reçu pour définir un nouveau mot de passe.","name_this_device":"Nommer ce périphérique","delete_account":"Supprimer le compte","delete_your_account":"Supprimer votre compte","delete_your_account_and_reset_all_data":"Cela réinitialisera 2FAuth. Votre compte utilisateur sera supprimé ainsi que toutes les données 2FA. Il est impossible de restaurer des données réinitialisées.","user_account_successfully_deleted":"Compte supprimé avec succès"}},"commons":{"cancel":"Annuler","update":"Mettre à jour","copy":"Copier","copy_to_clipboard":"Copier","copied_to_clipboard":"Copié dans le presse-papier","profile":"Profil","edit":"Modifier","delete":"Supprimer","disable":"Désactiver","enable":"Activer","create":"Créer","save":"Enregistrer","close":"Fermer","demo_do_not_post_sensitive_data":"Site de démonstration, ne postez aucune donnée sensible","selected":"selectionné(s)","name":"Nom","manage":"Gérer","done":"Terminé","new":"Nouveau","back":"Retour","move":"Déplacer","all":"Tous","rename":"Renommer","new_name":"Nouveau nom","options":"Options","reload":"Actualiser","some_data_have_changed":"Certaines données ont été modifiées. Vous devriez","generate":"Générer","open_in_browser":"Ouvrir dans votre navigateur","continue":"Continuer"},"errors":{"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","Unable_to_decrypt_uri":"uri impossible à décoder","not_a_supported_otp_type":"Ce format OTP n'est pas supporté pour le moment","cannot_create_otp_without_secret":"Impossible de créer un OTP sans un secret","data_of_qrcode_is_not_valid_URI":"Les données de ce code QR ne forment pas une URI OTP Auth valide :","wrong_current_password":"Mot de passe actuel érroné, rien n\\a été modifié","error_during_encryption":"Le chiffrement a échoué, votre base de données reste non protégée.","error_during_decryption":"Le déchiffrement a échoué, votre base de données est toujours protégée. Ceci est principalement dû à un problème d'intégrité des données chiffrées pour un ou plusieurs comptes.","qrcode_cannot_be_read":"Ce QR code est illisible","too_many_ids":"trop d'IDs ont été inclus dans le paramètre de requête, max. 100 autorisés","delete_user_setting_only":"Seuls les paramètres créés par l'utilisateur peuvent être supprimés","indecipherable":"*indéchiffrable*","cannot_decipher_secret":"Le secret ne peut pas être déchiffré. Ceci est généralement causé par une valeur APP_KEY incorrecte définie dans le fichier de configuration .env de 2Fauth ou des données corrompues dans la base de données.","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","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","auth_proxy_failed_legend":"2Fauth est configuré pour fonctionner derrière un proxy d'authentification, mais votre proxy ne retourne pas l'en-tête attendu. Vérifiez votre configuration et réessayez."},"groups":{"groups":"Groupes","create_group":"Créer un nouveau groupe","select_accounts_to_show":"Sélectionnez les comptes à afficher","manage_groups":"Gérer les groupes","active_group":"Groupe actif","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","no_group":"Aucun groupe","forms":{"new_group":"Nouveau groupe","new_name":"Nouveau nom","rename_group":"Renommer le groupe"},"confirm":{"delete":"Êtes-vous sûr·e de vouloir supprimer ce groupe ?"}},"languages":{"browser_preference":"Préférence du navigateur","en":"Anglais","fr":"Français","de":"Allemand"},"pagination":{"previous":"« Précédent","next":"Suivant »"},"passwords":{"reset":"Votre mot de passe a été réinitialisé !","sent":"Nous vous avons envoyé par email le lien de réinitialisation du mot de passe !","throttled":"Veuillez patienter avant de réessayer.","token":"Ce jeton de réinitialisation du mot de passe n'est pas valide.","user":"Aucun utilisateur n'a été trouvé avec cette adresse email.","password":"Les mots de passe doivent contenir au moins huit caractères et être identiques."},"settings":{"settings":"Réglages","account":"Compte","oauth":"OAuth","webauthn":"WebAuthn","tokens":"Jetons","options":"Options","confirm":{"revoke":"Êtes-vous sûr(e) de vouloir révoquer ce jeton ?"},"general":"General","security":"Sécurité","profile":"Profil","change_password":"Changer le mot de passe","personal_access_tokens":"Jetons d'accès personnel","token_legend":"Les jetons d'accès personnels permettent à n'importe quelle application de s'authentifier à l'API 2Fauth. Vous devez fournir le jeton d'accès en tant que Bearer dans l'en-tête d'autorisation des requêtes de ces applications.","generate_new_token":"Générer un nouveau jeton","revoke":"Révoquer","token_revoked":"Jeton révoqué avec succès","revoking_a_token_is_permanent":"Révoquer un jeton est définitif","make_sure_copy_token":"Copier votre jeton d'accès personnel dès maintenant. Vous ne pourrez pas l'afficher à nouveau !","data_input":"Saisie des données","forms":{"edit_settings":"Modifier les réglages","setting_saved":"Réglages sauvegardés","new_token":"Nouveau jeton","some_translation_are_missing":"Certaines traductions sont manquantes en utilisant la langue préférée du navigateur ?","help_translate_2fauth":"Aidez à traduire 2FAuth","language":{"label":"Langue","help":"Langue utilisée pour traduire l'interface utilisateur de 2FAuth. Les langues proposées sont complètes, vous pouvez les utiliser pour remplacer la langue de référence de votre navigateur."},"show_otp_as_dot":{"label":"Afficher les mots de passe générés sous forme de point","help":"Remplace les caractères des mots de passe générés par des ●●● pour garantir leur confidentialité. N'affecte pas la fonction de copier/coller qui reste utilisable."},"close_otp_on_copy":{"label":"Ne plus afficher les mots de passe copiés","help":"Ferme automatiquement le popup affichant le mot de passe généré dès que ce dernier a été copié"},"use_basic_qrcode_reader":{"label":"Utiliser le lecteur de QR code basique","help":"Si vous rencontrez des problèmes lors de la lecture des QR codes activez cette option pour utiliser un lecteur de QR code moins évolué mais plus largement compatible"},"display_mode":{"label":"Mode d'affichage","help":"Change le mode d'affichage des comptes, soit sous forme de liste, soit sous forme de grille"},"grid":"Grille","list":"Liste","show_accounts_icons":{"label":"Afficher les icônes","help":"Affiche les icônes des comptes dans la vue principale"},"auto_lock":{"label":"Verrouillage automatique","help":"Déconnecte automatiquement l'utilisateur en cas d'inactivité. Est sans effet lorsque l'authentification est gérée par un proxy et qu'aucune URL de déconnexion personnalisée n'est configurée."},"use_encryption":{"label":"Protéger les données sensibles","help":"Les données sensibles, les secrets et les e-mails 2FA, sont stockés chiffrés dans la base de données. Assurez-vous de sauvegarder la valeur APP_KEY de votre fichier env (ou tout le fichier) car il sert de clé de chiffrement. Il n'y a aucun moyen de déchiffrer les données chiffrées sans cette clé."},"default_group":{"label":"Groupe par défaut","help":"Le groupe auquel sont associés les nouveaux comptes"},"useDirectCapture":{"label":"Saisie directe","help":"Choisissez si vous voulez être invité à choisir un mode de saisie parmi ceux disponibles ou si vous voulez utiliser directement le mode de saisie par défaut"},"defaultCaptureMode":{"label":"Mode de saisie par défaut","help":"Mode de saisie utilisé par défaut lorsque l'option Saisie directe est activée"},"remember_active_group":{"label":"Mémoriser le filtrage par groupe","help":"Enregistre le dernier groupe affiché et le restaure lors de votre prochaine visite"},"never":"Jamais","on_otp_copy":"Après copie d'un mot de passe","1_minutes":"Après 1 minute","5_minutes":"Après 5 minutes","10_minutes":"Après 10 minutes","15_minutes":"Après 15 minutes","30_minutes":"Après 30 minutes","1_hour":"Après 1 heure","1_day":"Après 1 journée","livescan":"Scanner avec la caméra","upload":"Téléchargement de QR code","advanced_form":"Formulaire avancé"}},"twofaccounts":{"service":"Service","account":"Compte","accounts":"Comptes","icon":"Icône","no_account_here":"Aucun compte 2FA !","add_first_account":"Ajouter votre premier compte","use_full_form":"Ou utiliser le formulaire détaillé","add_one":"Add one","show_qrcode":"Afficher le QR code","no_service":"- aucun service -","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"Marc Dupont"},"new_account":"Nouveau compte","edit_account":"Modifier le compte","otp_uri":"OTP Uri","scan_qrcode":"Scanner un QR code","upload_qrcode":"Uploader un QR code","use_advanced_form":"Utiliser le formulaire avancé","prefill_using_qrcode":"Préremplir à l'aide d'un QR Code","use_qrcode":{"val":"Utiliser un QR code","title":"Utiliser un QR code pour renseigner le formulaire d'un seul coup d'un seul"},"unlock":{"val":"Déverouiller","title":"Déverouiller le champ (à vos risques et périls)"},"lock":{"val":"Vérouiller","title":"Vérouiller le champ"},"choose_image":"Choisir une image…","test":"Tester","secret":{"label":"Secret","help":"La clé utilisée pour générer vos codes de sécurité"},"plain_text":"Texte brut","otp_type":{"label":"Choisissez le type d'OTP à créer","help":"Time-based OTP ou HMAC-based OTP"},"digits":{"label":"Nombre de chiffres","help":"Le nombre de chiffres des codes de sécurité générés"},"algorithm":{"label":"Algorithme","help":"L'algorithme utilisé pour sécuriser vos codes de sécurité"},"period":{"label":"Durée de validité","placeholder":"30 s par défaut","help":"La durée de validité des codes de sécurité générés, en seconde"},"counter":{"label":"Compteur","placeholder":"0 par défaut","help":"La valeur initiale du compteur","help_lock":"Il est risqué de modifier le compteur car vous pouvez désynchroniser le compte avec le serveur de vérification du service. Utilisez l'icône cadenas pour activer la modification, mais seulement si vous savez ce que vous faites"},"image":{"label":"Image","placeholder":"http://...","help":"L'URL d'une image externe à utiliser comme icône du compte"},"options_help":"Vous pouvez laisser les options suivantes non renseignées si vous ne savez pas comment les définir. Les valeurs les plus couramment utilisées seront appliquées.","alternative_methods":"Méthodes alternatives"},"stream":{"live_scan_cant_start":"Le scanner ne peut pas démarrer :(","need_grant_permission":{"reason":"2FAuth n'a pas la permission d'accéder à votre caméra","solution":"Vous devez autoriser l'utilisation de l'appareil photo de votre appareil. Si vous avez déjà refusé et que votre navigateur ne vous le demande plus, veuillez vous référer à la documentation du navigateur pour savoir comment accorder l’autorisation."},"not_readable":{"reason":"Impossible de charger le scanner","solution":"La caméra est-elle déjà en cours d'utilisation ? Assurez-vous qu'aucune autre application n'utilise votre appareil photo et réessayez"},"no_cam_on_device":{"reason":"Votre équipement ne dispose pas de caméra","solution":"Peut-être avez-vous oublié de brancher votre webcam"},"secured_context_required":{"reason":"Contexte sécurisé requis","solution":"Une connexion sécurisée HTTPS est requise pour utiliser le scanner. Si vous exécutez 2FAuth depuis votre ordinateur, n'utilisez pas d'hôte virtuel autre que localhost"},"https_required":"HTTPS requis pour utiliser la caméra","camera_not_suitable":{"reason":"Votre équipement ne dispose pas d'une caméra adaptée","solution":"Veuillez utiliser un autre appareil"},"stream_api_not_supported":{"reason":"L'API Stream n'est pas prise en charge dans ce navigateur","solution":"Vous devriez utiliser un navigateur moderne"}},"confirm":{"delete":"Etes-vous sûrs de vouloir supprimer le compte ?","cancel":"Les données seront perdues, êtes-vous sûrs ?"}},"validation":{"accepted":"Le champ :attribute doit être accepté.","accepted_if":"Le champ :attribute doit être accepté quand :other a la valeur :value.","active_url":"Le champ :attribute n'est pas une URL valide.","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_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."},"boolean":"Le champ :attribute doit être vrai ou faux.","confirmed":"Le champ de confirmation :attribute ne correspond pas.","current_password":"Le mot de passe est incorrect.","date":"Le champ :attribute n'est pas une date valide.","date_equals":"Le champ :attribute doit être une date égale à :date.","date_format":"Le champ :attribute ne correspond pas au format :format.","declined":"Le champ :attribute doit être décliné.","declined_if":"Le champ :attribute doit être décliné quand :other a la valeur :value.","different":"Les champs :attribute et :other doivent être différents.","digits":"Le champ :attribute doit contenir :digits chiffres.","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.","email":"Le champ :attribute doit être une adresse email valide.","ends_with":"Le champ :attribute doit se terminer par une des valeurs suivantes : :values","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."},"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."},"image":"Le champ :attribute doit être une image.","in":"Le champ :attribute est invalide.","in_array":"Le champ :attribute n'existe pas dans :other.","integer":"Le champ :attribute doit être un entier.","ip":"Le champ :attribute doit être une adresse IP valide.","ipv4":"Le champ :attribute doit être une adresse IPv4 valide.","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."},"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."},"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."},"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."},"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","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.","prohibited_unless":"Le champ :attribute est interdit à moins que :other est l'une des valeurs :values.","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_if":"Le champ :attribute est obligatoire quand la valeur de :other est :value.","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.","required_without":"Le champ :attribute est obligatoire quand :values n'est pas présent.","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."},"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.","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.","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","custom":{"icon":{"image":"Les formats acceptés sont jpeg, png, bmp, gif, svg, or webp."},"qrcode":{"image":"Les formats acceptés sont jpeg, png, bmp, gif, svg, or webp."},"uri":{"regex":"Le champ :attribute n'est pas une URI otpauth valide."},"otp_type":{"in":"Le champ :attribute n'est pas supporté."},"email":{"exists":"Aucun compte utilisateur n'utilise cet email."},"secret":{"isBase32Encoded":"Le :attribute doit être une chaîne encodée en base32"},"account":{"regex":"Le champ :attribute ne doit pas contenir de deux-points."},"service":{"regex":"Le champ :attribute ne doit pas contenir de deux-points."},"label":{"required":"L'URI doit avoir un label."},"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à"}},"attributes":[]}},"it":{"auth":{"failed":"Credenziali non valide.","throttle":"Troppi tentativi di accesso. Riprova tra :seconds secondi.","sign_out":"Sign out","sign_in":"Sign in","register":"Register","welcome_back_x":"Welcome back {0}","already_authenticated":"Already authenticated","confirm":{"logout":"Are you sure you want to log out?"},"forms":{"name":"Name","login":"Login","email":"Email","password":"Password","confirm_password":"Confirm password","confirm_new_password":"Confirm new password","dont_have_account_yet":"Don't have your account yet?","already_register":"Already registered?","password_do_not_match":"Password do not match","forgot_your_password":"Forgot your password?","request_password_reset":"Reset it","reset_password":"Reset password","no_reset_password_in_demo":"No reset in Demo mode","new_password":"New password","current_password":{"label":"Current password","help":"Fill in your current password to confirm that it's you"},"change_password":"Change password","send_password_reset_link":"Send password reset link","password_successfully_changed":"Password successfully changed","edit_account":"Edit account","profile_saved":"Profile successfully updated!","welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","register_punchline":"Welcome to 2FAuth.
You need an account to go further. Fill this form to register yourself, and please, choose a strong password, 2FA data are sensitives.","reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password."}},"commons":{"cancel":"Cancel","update":"Update","copy_to_clipboard":"Copy to clipboard","copied_to_clipboard":"Copied to clipboard","profile":"Profile","edit":"Edit","delete":"Delete","create":"Create","save":"Save","close":"Close","demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","selected":"selected","name":"Name","manage":"Manage","done":"Done","new":"New","back":"Back","move":"Move","all":"All","rename":"Rename","options":"Options","reload":"Reload","some_data_have_changed":"Some data have changed. You should"},"errors":{"resource_not_found":"Resource not found","error_occured":"An error occured:","already_one_user_registered":"There is already a registered user.","cannot_register_more_user":"You cannot register more than one user.","refresh":"Refresh","no_valid_otp":"No valid OTP resource in this QR code","something_wrong_with_server":"Something is wrong with your server","Unable_to_decrypt_uri":"Unable to decrypt uri","not_a_supported_otp_type":"This OTP format is not currently supported","cannot_create_otp_without_secret":"Cannot create an OTP without a secret","cannot_create_otp_with_those_parameters":"Cannot create an OTP with those parameters","wrong_current_password":"Wrong current password, nothing has changed","error_during_encryption":"Encryption failed, your database remains unprotected.","error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","qrcode_cannot_be_read":"This QR code is unreadable"},"groups":{"groups":"Groups","select_accounts_to_show":"Select accounts to show","manage_groups":"Manage groups","active_group":"Active group","manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","move_selected_to":"Move selected to","no_group":"No group","forms":{"new_group":"New group","new_name":"New name","rename_group":"Rename group"},"confirm":{"delete":"Are you sure you want to delete this group?"}},"languages":{"en":"English","fr":"French","de":"German"},"pagination":{"previous":"« Precedente","next":"Successivo »"},"passwords":{"reset":"La password è stata reimpostata!","sent":"Ti abbiamo inviato una email con il link per il reset della password!","throttled":"Per favore, attendi prima di riprovare.","token":"Questo token di reset della password non è valido.","user":"Non riusciamo a trovare un utente con questo indirizzo email.","password":"Passwords must be at least eight characters and match the confirmation."},"settings":{"settings":"Settings","account":"Account","password":"Password","options":"Options","confirm":[],"general":"General","security":"Security","data_input":"Data input","forms":{"edit_settings":"Edit settings","setting_saved":"Settings saved","language":{"label":"Language","help":"Change the language used to translate the app interface."},"show_otp_as_dot":{"label":"Show generated tokens as dot","help":"Replace generated token caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."},"close_otp_on_copy":{"label":"Close token after copy","help":"Automatically close the popup showing the generated token after it has been copied"},"use_basic_qrcode_reader":{"label":"Use basic QR code reader","help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader"},"display_mode":{"label":"Display mode","help":"Choose whether you want accounts to be displayed as a list or as a grid"},"grid":"Grid","list":"List","show_accounts_icons":{"label":"Show icons","help":"Show icons accounts in the main view"},"auto_lock":{"label":"Auto lock","help":"Log out the user automatically in case of inactivity"},"use_encryption":{"label":"Protect sensible data","help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key."},"default_group":{"label":"Default group","help":"The group to which the newly created accounts are associated"},"useDirectCapture":{"label":"Direct input","help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode"},"defaultCaptureMode":{"label":"Default input mode","help":"Default input mode used when the Direct input option is On"},"remember_active_group":{"label":"Remember group filter","help":"Save the last group filter applied and restore it on your next visit"},"never":"Never","on_otp_copy":"On security code copy","1_minutes":"After 1 minute","5_minutes":"After 5 minutes","10_minutes":"After 10 minutes","15_minutes":"After 15 minutes","30_minutes":"After 30 minutes","1_hour":"After 1 hour","1_day":"After 1 day","livescan":"QR code livescan","upload":"QR code upload","advanced_form":"Advanced form"}},"twofaccounts":{"service":"Service","account":"Account","accounts":"Accounts","icon":"Icon","no_account_here":"No 2FA here!","add_first_account":"Add your first account","use_full_form":"Or use the full form","add_one":"Add one","show_qrcode":"Show QR code","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"John DOE"},"new_account":"New account","edit_account":"Edit account","otp_uri":"OTP Uri","scan_qrcode":"Scan a QR code","upload_qrcode":"Upload a QR code","use_advanced_form":"Use the advanced form","prefill_using_qrcode":"Prefill using a QR Code","use_qrcode":{"val":"Use a qrcode","title":"Use a QR code to fill the form magically"},"unlock":{"val":"Unlock","title":"Unlock it (at your own risk)"},"lock":{"val":"Lock","title":"Lock it"},"choose_image":"Choose an image…","test":"Test","secret":{"label":"Secret","help":"The key used to generate your security codes"},"plain_text":"Plain text","otp_type":{"label":"Choose the type of OTP to create","help":"Time-based OTP or HMAC-based OTP"},"digits":{"label":"Digits","help":"The number of digits of the generated security codes"},"algorithm":{"label":"Algorithm","help":"The algorithm used to secure your security codes"},"period":{"label":"Period","placeholder":"Default is 30","help":"The period of validity of the generated security codes in second"},"counter":{"label":"Counter","placeholder":"Default is 0","help":"The initial counter value","help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing"},"image":{"label":"Image","placeholder":"http://...","help":"The url of an external image to use as the account icon"},"options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","alternative_methods":"Alternative methods"},"stream":{"live_scan_cant_start":"Live scan can't start :(","need_grant_permission":{"reason":"2FAuth does not have permission to access your camera","solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission."},"not_readable":{"reason":"Fail to load scanner","solution":"Is the camera already in use? Ensure that no other app use your camera and try again"},"no_cam_on_device":{"reason":"No camera on this device","solution":"Maybe your forget to plug in your webcam"},"secured_context_required":{"reason":"Secure context required","solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost"},"https_required":"HTTPS required for camera streaming","camera_not_suitable":{"reason":"Installed cameras are not suitable","solution":"Please use another device/camera"},"stream_api_not_supported":{"reason":"Stream API is not supported in this browser","solution":"You should use a modern browser"}},"confirm":{"delete":"Are you sure you want to delete this account?","cancel":"The account will be lost. Are you sure?"}},"validation":{"accepted":":attribute deve essere accettato.","active_url":":attribute non è un URL valido.","after":":attribute deve essere una data successiva al :date.","after_or_equal":":attribute deve essere una data successiva o uguale al :date.","alpha":":attribute può contenere solo lettere.","alpha_dash":":attribute può contenere solo lettere, numeri e trattini.","alpha_num":":attribute può contenere solo lettere e numeri.","array":":attribute deve essere un array.","before":":attribute deve essere una data precedente al :date.","before_or_equal":":attribute deve essere una data precedente o uguale al :date.","between":{"numeric":":attribute deve trovarsi tra :min - :max.","file":":attribute deve trovarsi tra :min - :max kilobyte.","string":":attribute deve trovarsi tra :min - :max caratteri.","array":":attribute deve avere tra :min - :max elementi."},"boolean":"Il campo :attribute deve essere vero o falso.","confirmed":"Il campo di conferma per :attribute non coincide.","date":":attribute non è una data valida.","date_equals":":attribute deve essere una data e uguale a :date.","date_format":":attribute non coincide con il formato :format.","different":":attribute e :other devono essere differenti.","digits":":attribute deve essere di :digits cifre.","digits_between":":attribute deve essere tra :min e :max cifre.","dimensions":"Le dimensioni dell'immagine di :attribute non sono valide.","distinct":":attribute contiene un valore duplicato.","email":":attribute non è valido.","ends_with":":attribute deve finire con uno dei seguenti valori: :values","exists":":attribute selezionato non è valido.","file":":attribute deve essere un file.","filled":"Il campo :attribute deve contenere un valore.","gt":{"numeric":":attribute deve essere maggiore di :value.","file":":attribute deve essere maggiore di :value kilobyte.","string":":attribute deve contenere più di :value caratteri.","array":":attribute deve contenere più di :value elementi."},"gte":{"numeric":":attribute deve essere uguale o maggiore di :value.","file":":attribute deve essere uguale o maggiore di :value kilobyte.","string":":attribute deve contenere un numero di caratteri uguale o maggiore di :value.","array":":attribute deve contenere un numero di elementi uguale o maggiore di :value."},"image":":attribute deve essere un'immagine.","in":":attribute selezionato non è valido.","in_array":"Il valore del campo :attribute non esiste in :other.","integer":":attribute deve essere un numero intero.","ip":":attribute deve essere un indirizzo IP valido.","ipv4":":attribute deve essere un indirizzo IPv4 valido.","ipv6":":attribute deve essere un indirizzo IPv6 valido.","json":":attribute deve essere una stringa JSON valida.","lt":{"numeric":":attribute deve essere minore di :value.","file":":attribute deve essere minore di :value kilobyte.","string":":attribute deve contenere meno di :value caratteri.","array":":attribute deve contenere meno di :value elementi."},"lte":{"numeric":":attribute deve essere minore o uguale a :value.","file":":attribute deve essere minore o uguale a :value kilobyte.","string":":attribute deve contenere un numero di caratteri minore o uguale a :value.","array":":attribute deve contenere un numero di elementi minore o uguale a :value."},"max":{"numeric":":attribute non può essere superiore a :max.","file":":attribute non può essere superiore a :max kilobyte.","string":":attribute non può contenere più di :max caratteri.","array":":attribute non può avere più di :max elementi."},"mimes":":attribute deve essere del tipo: :values.","mimetypes":":attribute deve essere del tipo: :values.","min":{"numeric":":attribute deve essere almeno :min.","file":":attribute deve essere almeno di :min kilobyte.","string":":attribute deve contenere almeno :min caratteri.","array":":attribute deve avere almeno :min elementi."},"not_in":"Il valore selezionato per :attribute non è valido.","not_regex":"Il formato di :attribute non è valido.","numeric":":attribute deve essere un numero.","password":"Il campo :attribute non è corretto.","present":"Il campo :attribute deve essere presente.","regex":"Il formato del campo :attribute non è valido.","required":"Il campo :attribute è richiesto.","required_if":"Il campo :attribute è richiesto quando :other è :value.","required_unless":"Il campo :attribute è richiesto a meno che :other sia in :values.","required_with":"Il campo :attribute è richiesto quando :values è presente.","required_with_all":"Il campo :attribute è richiesto quando :values sono presenti.","required_without":"Il campo :attribute è richiesto quando :values non è presente.","required_without_all":"Il campo :attribute è richiesto quando nessuno di :values è presente.","same":":attribute e :other devono coincidere.","size":{"numeric":":attribute deve essere :size.","file":":attribute deve essere :size kilobyte.","string":":attribute deve contenere :size caratteri.","array":":attribute deve contenere :size elementi."},"starts_with":":attribute deve iniziare con uno dei seguenti: :values","string":":attribute deve essere una stringa.","timezone":":attribute deve essere una zona valida.","unique":":attribute è stato già utilizzato.","uploaded":":attribute non è stato caricato.","url":"The :attribute must be a valid url.","uuid":":attribute deve essere un UUID valido.","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":{"starts_with":"Only valid OTP uri are supported"},"email":{"exists":"No account found using this email"},"otp_type":{"required_without":"The :attribute field is required."},"secret":{"required_without":"The :attribute field is required."},"account":{"required_without":"The :attribute field is required.","regex":"The :attribute field must not contain colon."}},"attributes":[]}},"ja":{"auth":{"failed":"認証情報と一致するレコードがありません。","throttle":"ログインの試行回数が多すぎます。:seconds 秒後にお試しください。","sign_out":"Sign out","sign_in":"Sign in","register":"Register","welcome_back_x":"Welcome back {0}","already_authenticated":"Already authenticated","confirm":{"logout":"Are you sure you want to log out?"},"forms":{"name":"Name","login":"Login","email":"Email","password":"Password","confirm_password":"Confirm password","confirm_new_password":"Confirm new password","dont_have_account_yet":"Don't have your account yet?","already_register":"Already registered?","password_do_not_match":"Password do not match","forgot_your_password":"Forgot your password?","request_password_reset":"Reset it","reset_password":"Reset password","no_reset_password_in_demo":"No reset in Demo mode","new_password":"New password","current_password":{"label":"Current password","help":"Fill in your current password to confirm that it's you"},"change_password":"Change password","send_password_reset_link":"Send password reset link","password_successfully_changed":"Password successfully changed","edit_account":"Edit account","profile_saved":"Profile successfully updated!","welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","register_punchline":"Welcome to 2FAuth.
You need an account to go further. Fill this form to register yourself, and please, choose a strong password, 2FA data are sensitives.","reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password."}},"commons":{"cancel":"Cancel","update":"Update","copy_to_clipboard":"Copy to clipboard","copied_to_clipboard":"Copied to clipboard","profile":"Profile","edit":"Edit","delete":"Delete","create":"Create","save":"Save","close":"Close","demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","selected":"selected","name":"Name","manage":"Manage","done":"Done","new":"New","back":"Back","move":"Move","all":"All","rename":"Rename","options":"Options","reload":"Reload","some_data_have_changed":"Some data have changed. You should"},"errors":{"resource_not_found":"Resource not found","error_occured":"An error occured:","already_one_user_registered":"There is already a registered user.","cannot_register_more_user":"You cannot register more than one user.","refresh":"Refresh","no_valid_otp":"No valid OTP resource in this QR code","something_wrong_with_server":"Something is wrong with your server","Unable_to_decrypt_uri":"Unable to decrypt uri","not_a_supported_otp_type":"This OTP format is not currently supported","cannot_create_otp_without_secret":"Cannot create an OTP without a secret","cannot_create_otp_with_those_parameters":"Cannot create an OTP with those parameters","wrong_current_password":"Wrong current password, nothing has changed","error_during_encryption":"Encryption failed, your database remains unprotected.","error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","qrcode_cannot_be_read":"This QR code is unreadable"},"groups":{"groups":"Groups","select_accounts_to_show":"Select accounts to show","manage_groups":"Manage groups","active_group":"Active group","manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","move_selected_to":"Move selected to","no_group":"No group","forms":{"new_group":"New group","new_name":"New name","rename_group":"Rename group"},"confirm":{"delete":"Are you sure you want to delete this group?"}},"languages":{"en":"English","fr":"French","de":"German"},"pagination":{"previous":"« 前","next":"次 »"},"passwords":{"reset":"パスワードをリセットしました。","sent":"パスワードリマインダーを送信しました。","throttled":"時間を置いて再度お試しください。","token":"このパスワードリセットトークンは無効です。","user":"このメールアドレスに一致するユーザーを見つけることが出来ませんでした。","password":"Passwords must be at least eight characters and match the confirmation."},"settings":{"settings":"Settings","account":"Account","password":"Password","options":"Options","confirm":[],"general":"General","security":"Security","data_input":"Data input","forms":{"edit_settings":"Edit settings","setting_saved":"Settings saved","language":{"label":"Language","help":"Change the language used to translate the app interface."},"show_otp_as_dot":{"label":"Show generated tokens as dot","help":"Replace generated token caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."},"close_otp_on_copy":{"label":"Close token after copy","help":"Automatically close the popup showing the generated token after it has been copied"},"use_basic_qrcode_reader":{"label":"Use basic QR code reader","help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader"},"display_mode":{"label":"Display mode","help":"Choose whether you want accounts to be displayed as a list or as a grid"},"grid":"Grid","list":"List","show_accounts_icons":{"label":"Show icons","help":"Show icons accounts in the main view"},"auto_lock":{"label":"Auto lock","help":"Log out the user automatically in case of inactivity"},"use_encryption":{"label":"Protect sensible data","help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key."},"default_group":{"label":"Default group","help":"The group to which the newly created accounts are associated"},"useDirectCapture":{"label":"Direct input","help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode"},"defaultCaptureMode":{"label":"Default input mode","help":"Default input mode used when the Direct input option is On"},"remember_active_group":{"label":"Remember group filter","help":"Save the last group filter applied and restore it on your next visit"},"never":"Never","on_otp_copy":"On security code copy","1_minutes":"After 1 minute","5_minutes":"After 5 minutes","10_minutes":"After 10 minutes","15_minutes":"After 15 minutes","30_minutes":"After 30 minutes","1_hour":"After 1 hour","1_day":"After 1 day","livescan":"QR code livescan","upload":"QR code upload","advanced_form":"Advanced form"}},"twofaccounts":{"service":"Service","account":"Account","accounts":"Accounts","icon":"Icon","no_account_here":"No 2FA here!","add_first_account":"Add your first account","use_full_form":"Or use the full form","add_one":"Add one","show_qrcode":"Show QR code","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"John DOE"},"new_account":"New account","edit_account":"Edit account","otp_uri":"OTP Uri","scan_qrcode":"Scan a QR code","upload_qrcode":"Upload a QR code","use_advanced_form":"Use the advanced form","prefill_using_qrcode":"Prefill using a QR Code","use_qrcode":{"val":"Use a qrcode","title":"Use a QR code to fill the form magically"},"unlock":{"val":"Unlock","title":"Unlock it (at your own risk)"},"lock":{"val":"Lock","title":"Lock it"},"choose_image":"Choose an image…","test":"Test","secret":{"label":"Secret","help":"The key used to generate your security codes"},"plain_text":"Plain text","otp_type":{"label":"Choose the type of OTP to create","help":"Time-based OTP or HMAC-based OTP"},"digits":{"label":"Digits","help":"The number of digits of the generated security codes"},"algorithm":{"label":"Algorithm","help":"The algorithm used to secure your security codes"},"period":{"label":"Period","placeholder":"Default is 30","help":"The period of validity of the generated security codes in second"},"counter":{"label":"Counter","placeholder":"Default is 0","help":"The initial counter value","help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing"},"image":{"label":"Image","placeholder":"http://...","help":"The url of an external image to use as the account icon"},"options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","alternative_methods":"Alternative methods"},"stream":{"live_scan_cant_start":"Live scan can't start :(","need_grant_permission":{"reason":"2FAuth does not have permission to access your camera","solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission."},"not_readable":{"reason":"Fail to load scanner","solution":"Is the camera already in use? Ensure that no other app use your camera and try again"},"no_cam_on_device":{"reason":"No camera on this device","solution":"Maybe your forget to plug in your webcam"},"secured_context_required":{"reason":"Secure context required","solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost"},"https_required":"HTTPS required for camera streaming","camera_not_suitable":{"reason":"Installed cameras are not suitable","solution":"Please use another device/camera"},"stream_api_not_supported":{"reason":"Stream API is not supported in this browser","solution":"You should use a modern browser"}},"confirm":{"delete":"Are you sure you want to delete this account?","cancel":"The account will be lost. Are you sure?"}},"validation":{"accepted":":attributeを承認してください。","active_url":":attributeは、有効なURLではありません。","after":":attributeには、:dateより後の日付を指定してください。","after_or_equal":":attributeには、:date以降の日付を指定してください。","alpha":":attributeには、アルファベッドのみ使用できます。","alpha_dash":":attributeには、英数字('A-Z','a-z','0-9')とハイフンと下線('-','_')が使用できます。","alpha_num":":attributeには、英数字('A-Z','a-z','0-9')が使用できます。","array":":attributeには、配列を指定してください。","before":":attributeには、:dateより前の日付を指定してください。","before_or_equal":":attributeには、:date以前の日付を指定してください。","between":{"numeric":":attributeには、:minから、:maxまでの数字を指定してください。","file":":attributeには、:min KBから:max KBまでのサイズのファイルを指定してください。","string":":attributeは、:min文字から:max文字にしてください。","array":":attributeの項目は、:min個から:max個にしてください。"},"boolean":":attributeには、'true'か'false'を指定してください。","confirmed":":attributeと:attribute確認が一致しません。","date":":attributeは、正しい日付ではありません。","date_equals":":attributeは:dateに等しい日付でなければなりません。","date_format":":attributeの形式は、':format'と合いません。","different":":attributeと:otherには、異なるものを指定してください。","digits":":attributeは、:digits桁にしてください。","digits_between":":attributeは、:min桁から:max桁にしてください。","dimensions":":attributeの画像サイズが無効です","distinct":":attributeの値が重複しています。","email":":attributeは、有効なメールアドレス形式で指定してください。","ends_with":":attributeは、次のうちのいずれかで終わらなければなりません。: :values","exists":"選択された:attributeは、有効ではありません。","file":":attributeはファイルでなければいけません。","filled":":attributeは必須です。","gt":{"numeric":":attributeは、:valueより大きくなければなりません。","file":":attributeは、:value KBより大きくなければなりません。","string":":attributeは、:value文字より大きくなければなりません。","array":":attributeの項目数は、:value個より大きくなければなりません。"},"gte":{"numeric":":attributeは、:value以上でなければなりません。","file":":attributeは、:value KB以上でなければなりません。","string":":attributeは、:value文字以上でなければなりません。","array":":attributeの項目数は、:value個以上でなければなりません。"},"image":":attributeには、画像を指定してください。","in":"選択された:attributeは、有効ではありません。","in_array":":attributeが:otherに存在しません。","integer":":attributeには、整数を指定してください。","ip":":attributeには、有効なIPアドレスを指定してください。","ipv4":":attributeはIPv4アドレスを指定してください。","ipv6":":attributeはIPv6アドレスを指定してください。","json":":attributeには、有効なJSON文字列を指定してください。","lt":{"numeric":":attributeは、:valueより小さくなければなりません。","file":":attributeは、:value KBより小さくなければなりません。","string":":attributeは、:value文字より小さくなければなりません。","array":":attributeの項目数は、:value個より小さくなければなりません。"},"lte":{"numeric":":attributeは、:value以下でなければなりません。","file":":attributeは、:value KB以下でなければなりません。","string":":attributeは、:value文字以下でなければなりません。","array":":attributeの項目数は、:value個以下でなければなりません。"},"max":{"numeric":":attributeには、:max以下の数字を指定してください。","file":":attributeには、:max KB以下のファイルを指定してください。","string":":attributeは、:max文字以下にしてください。","array":":attributeの項目は、:max個以下にしてください。"},"mimes":":attributeには、:valuesタイプのファイルを指定してください。","mimetypes":":attributeには、:valuesタイプのファイルを指定してください。","min":{"numeric":":attributeには、:min以上の数字を指定してください。","file":":attributeには、:min KB以上のファイルを指定してください。","string":":attributeは、:min文字以上にしてください。","array":":attributeの項目は、:min個以上にしてください。"},"not_in":"選択された:attributeは、有効ではありません。","not_regex":":attributeの形式が無効です。","numeric":":attributeには、数字を指定してください。","password":"パスワードが正しくありません。","present":":attributeが存在している必要があります。","regex":":attributeには、有効な正規表現を指定してください。","required":":attributeは、必ず指定してください。","required_if":":otherが:valueの場合、:attributeを指定してください。","required_unless":":otherが:values以外の場合、:attributeを指定してください。","required_with":":valuesが指定されている場合、:attributeも指定してください。","required_with_all":":valuesが全て指定されている場合、:attributeも指定してください。","required_without":":valuesが指定されていない場合、:attributeを指定してください。","required_without_all":":valuesが全て指定されていない場合、:attributeを指定してください。","same":":attributeと:otherが一致しません。","size":{"numeric":":attributeには、:sizeを指定してください。","file":":attributeには、:size KBのファイルを指定してください。","string":":attributeは、:size文字にしてください。","array":":attributeの項目は、:size個にしてください。"},"starts_with":":attributeは、次のいずれかで始まる必要があります。:values","string":":attributeには、文字を指定してください。","timezone":":attributeには、有効なタイムゾーンを指定してください。","unique":"指定の:attributeは既に使用されています。","uploaded":":attributeのアップロードに失敗しました。","url":"The :attribute must be a valid url.","uuid":":attributeは、有効なUUIDでなければなりません。","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":{"starts_with":"Only valid OTP uri are supported"},"email":{"exists":"No account found using this email"},"otp_type":{"required_without":"The :attribute field is required."},"secret":{"required_without":"The :attribute field is required."},"account":{"required_without":"The :attribute field is required.","regex":"The :attribute field must not contain colon."}},"attributes":[]}},"pt":{"auth":{"failed":"As credenciais indicadas não coincidem com as registadas no sistema.","throttle":"O número limite de tentativas de login foi atingido. Por favor tente novamente dentro de :seconds segundos.","sign_out":"Sign out","sign_in":"Sign in","register":"Register","welcome_back_x":"Welcome back {0}","already_authenticated":"Already authenticated","confirm":{"logout":"Are you sure you want to log out?"},"forms":{"name":"Name","login":"Login","email":"Email","password":"Password","confirm_password":"Confirm password","confirm_new_password":"Confirm new password","dont_have_account_yet":"Don't have your account yet?","already_register":"Already registered?","password_do_not_match":"Password do not match","forgot_your_password":"Forgot your password?","request_password_reset":"Reset it","reset_password":"Reset password","no_reset_password_in_demo":"No reset in Demo mode","new_password":"New password","current_password":{"label":"Current password","help":"Fill in your current password to confirm that it's you"},"change_password":"Change password","send_password_reset_link":"Send password reset link","password_successfully_changed":"Password successfully changed","edit_account":"Edit account","profile_saved":"Profile successfully updated!","welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","register_punchline":"Welcome to 2FAuth.
You need an account to go further. Fill this form to register yourself, and please, choose a strong password, 2FA data are sensitives.","reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password."}},"commons":{"cancel":"Cancel","update":"Update","copy_to_clipboard":"Copy to clipboard","copied_to_clipboard":"Copied to clipboard","profile":"Profile","edit":"Edit","delete":"Delete","create":"Create","save":"Save","close":"Close","demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","selected":"selected","name":"Name","manage":"Manage","done":"Done","new":"New","back":"Back","move":"Move","all":"All","rename":"Rename","options":"Options","reload":"Reload","some_data_have_changed":"Some data have changed. You should"},"errors":{"resource_not_found":"Resource not found","error_occured":"An error occured:","already_one_user_registered":"There is already a registered user.","cannot_register_more_user":"You cannot register more than one user.","refresh":"Refresh","no_valid_otp":"No valid OTP resource in this QR code","something_wrong_with_server":"Something is wrong with your server","Unable_to_decrypt_uri":"Unable to decrypt uri","not_a_supported_otp_type":"This OTP format is not currently supported","cannot_create_otp_without_secret":"Cannot create an OTP without a secret","cannot_create_otp_with_those_parameters":"Cannot create an OTP with those parameters","wrong_current_password":"Wrong current password, nothing has changed","error_during_encryption":"Encryption failed, your database remains unprotected.","error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","qrcode_cannot_be_read":"This QR code is unreadable"},"groups":{"groups":"Groups","select_accounts_to_show":"Select accounts to show","manage_groups":"Manage groups","active_group":"Active group","manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","move_selected_to":"Move selected to","no_group":"No group","forms":{"new_group":"New group","new_name":"New name","rename_group":"Rename group"},"confirm":{"delete":"Are you sure you want to delete this group?"}},"languages":{"en":"English","fr":"French","de":"German"},"pagination":{"previous":"« Anterior","next":"Próxima »"},"passwords":{"reset":"A palavra-passe foi redefinida!","sent":"O lembrete para a palavra-passe foi enviado!","throttled":"Por favor aguarde, antes de tentar novamente.","token":"Este código de recuperação da palavra-passe é inválido.","user":"Não existe nenhum utilizador com o e-mail indicado.","password":"Passwords must be at least eight characters and match the confirmation."},"settings":{"settings":"Settings","account":"Account","password":"Password","options":"Options","confirm":[],"general":"General","security":"Security","data_input":"Data input","forms":{"edit_settings":"Edit settings","setting_saved":"Settings saved","language":{"label":"Language","help":"Change the language used to translate the app interface."},"show_otp_as_dot":{"label":"Show generated tokens as dot","help":"Replace generated token caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."},"close_otp_on_copy":{"label":"Close token after copy","help":"Automatically close the popup showing the generated token after it has been copied"},"use_basic_qrcode_reader":{"label":"Use basic QR code reader","help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader"},"display_mode":{"label":"Display mode","help":"Choose whether you want accounts to be displayed as a list or as a grid"},"grid":"Grid","list":"List","show_accounts_icons":{"label":"Show icons","help":"Show icons accounts in the main view"},"auto_lock":{"label":"Auto lock","help":"Log out the user automatically in case of inactivity"},"use_encryption":{"label":"Protect sensible data","help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key."},"default_group":{"label":"Default group","help":"The group to which the newly created accounts are associated"},"useDirectCapture":{"label":"Direct input","help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode"},"defaultCaptureMode":{"label":"Default input mode","help":"Default input mode used when the Direct input option is On"},"remember_active_group":{"label":"Remember group filter","help":"Save the last group filter applied and restore it on your next visit"},"never":"Never","on_otp_copy":"On security code copy","1_minutes":"After 1 minute","5_minutes":"After 5 minutes","10_minutes":"After 10 minutes","15_minutes":"After 15 minutes","30_minutes":"After 30 minutes","1_hour":"After 1 hour","1_day":"After 1 day","livescan":"QR code livescan","upload":"QR code upload","advanced_form":"Advanced form"}},"twofaccounts":{"service":"Service","account":"Account","accounts":"Accounts","icon":"Icon","no_account_here":"No 2FA here!","add_first_account":"Add your first account","use_full_form":"Or use the full form","add_one":"Add one","show_qrcode":"Show QR code","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"John DOE"},"new_account":"New account","edit_account":"Edit account","otp_uri":"OTP Uri","scan_qrcode":"Scan a QR code","upload_qrcode":"Upload a QR code","use_advanced_form":"Use the advanced form","prefill_using_qrcode":"Prefill using a QR Code","use_qrcode":{"val":"Use a qrcode","title":"Use a QR code to fill the form magically"},"unlock":{"val":"Unlock","title":"Unlock it (at your own risk)"},"lock":{"val":"Lock","title":"Lock it"},"choose_image":"Choose an image…","test":"Test","secret":{"label":"Secret","help":"The key used to generate your security codes"},"plain_text":"Plain text","otp_type":{"label":"Choose the type of OTP to create","help":"Time-based OTP or HMAC-based OTP"},"digits":{"label":"Digits","help":"The number of digits of the generated security codes"},"algorithm":{"label":"Algorithm","help":"The algorithm used to secure your security codes"},"period":{"label":"Period","placeholder":"Default is 30","help":"The period of validity of the generated security codes in second"},"counter":{"label":"Counter","placeholder":"Default is 0","help":"The initial counter value","help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing"},"image":{"label":"Image","placeholder":"http://...","help":"The url of an external image to use as the account icon"},"options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","alternative_methods":"Alternative methods"},"stream":{"live_scan_cant_start":"Live scan can't start :(","need_grant_permission":{"reason":"2FAuth does not have permission to access your camera","solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission."},"not_readable":{"reason":"Fail to load scanner","solution":"Is the camera already in use? Ensure that no other app use your camera and try again"},"no_cam_on_device":{"reason":"No camera on this device","solution":"Maybe your forget to plug in your webcam"},"secured_context_required":{"reason":"Secure context required","solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost"},"https_required":"HTTPS required for camera streaming","camera_not_suitable":{"reason":"Installed cameras are not suitable","solution":"Please use another device/camera"},"stream_api_not_supported":{"reason":"Stream API is not supported in this browser","solution":"You should use a modern browser"}},"confirm":{"delete":"Are you sure you want to delete this account?","cancel":"The account will be lost. Are you sure?"}},"validation":{"accepted":"O campo :attribute deverá ser aceite.","active_url":"O campo :attribute não contém um URL válido.","after":"O campo :attribute deverá conter uma data posterior a :date.","after_or_equal":"O campo :attribute deverá conter uma data posterior ou igual a :date.","alpha":"O campo :attribute deverá conter apenas letras.","alpha_dash":"O campo :attribute deverá conter apenas letras, números e traços.","alpha_num":"O campo :attribute deverá conter apenas letras e números .","array":"O campo :attribute deverá conter uma coleção de elementos.","before":"O campo :attribute deverá conter uma data anterior a :date.","before_or_equal":"O Campo :attribute deverá conter uma data anterior ou igual a :date.","between":{"numeric":"O campo :attribute deverá ter um valor entre :min - :max.","file":"O campo :attribute deverá ter um tamanho entre :min - :max kilobytes.","string":"O campo :attribute deverá conter entre :min - :max caracteres.","array":"O campo :attribute deverá conter entre :min - :max elementos."},"boolean":"O campo :attribute deverá conter o valor verdadeiro ou falso.","confirmed":"A confirmação para o campo :attribute não coincide.","date":"O campo :attribute não contém uma data válida.","date_equals":"O campo :attribute tem de ser uma data igual a :date.","date_format":"A data indicada para o campo :attribute não respeita o formato :format.","different":"Os campos :attribute e :other deverão conter valores diferentes.","digits":"O campo :attribute deverá conter :digits caracteres.","digits_between":"O campo :attribute deverá conter entre :min a :max caracteres.","dimensions":"O campo :attribute deverá conter uma dimensão de imagem válida.","distinct":"O campo :attribute contém um valor duplicado.","email":"O campo :attribute não contém um endereço de e-mail válido.","ends_with":"O campo :attribute deverá terminar com : :values.","exists":"O valor selecionado para o campo :attribute é inválido.","file":"O campo :attribute deverá conter um ficheiro.","filled":"É obrigatória a indicação de um valor para o campo :attribute.","gt":{"numeric":"O campo :attribute tem de ser maior do que :value.","file":"O campo :attribute tem de ter mais de :value quilobytes.","string":"O campo :attribute tem de ter mais de :value caracteres.","array":"O campo :attribute tem de ter mais de :value itens."},"gte":{"numeric":"O campo :attribute tem de ser maior ou igual a :value.","file":"O campo :attribute tem de ter :value quilobytes ou mais.","string":"O campo :attribute tem de ter :value caracteres ou mais.","array":"O campo :attribute tem de ter :value itens ou mais."},"image":"O campo :attribute deverá conter uma imagem.","in":"O campo :attribute não contém um valor válido.","in_array":"O campo :attribute não existe em :other.","integer":"O campo :attribute deverá conter um número inteiro.","ip":"O campo :attribute deverá conter um IP válido.","ipv4":"O campo :attribute deverá conter um IPv4 válido.","ipv6":"O campo :attribute deverá conter um IPv6 válido.","json":"O campo :attribute deverá conter um texto JSON válido.","lt":{"numeric":"O campo :attribute tem de ser inferior a :value.","file":"O campo :attribute tem de ter menos de :value quilobytes.","string":"O campo :attribute tem de ter menos de :value caracteres.","array":"O campo :attribute tem de ter menos de :value itens."},"lte":{"numeric":"O campo :attribute tem de ser inferior ou igual a :value.","file":"O campo :attribute tem de ter :value quilobytes ou menos.","string":"O campo :attribute tem de ter :value caracteres ou menos.","array":"O campo :attribute não pode ter mais de :value itens."},"max":{"numeric":"O campo :attribute não deverá conter um valor superior a :max.","file":"O campo :attribute não deverá ter um tamanho superior a :max kilobytes.","string":"O campo :attribute não deverá conter mais de :max caracteres.","array":"O campo :attribute não deverá conter mais de :max elementos."},"mimes":"O campo :attribute deverá conter um ficheiro do tipo: :values.","mimetypes":"O campo :attribute deverá conter um ficheiro do tipo: :values.","min":{"numeric":"O campo :attribute deverá ter um valor superior ou igual a :min.","file":"O campo :attribute deverá ter no mínimo :min kilobytes.","string":"O campo :attribute deverá conter no mínimo :min caracteres.","array":"O campo :attribute deverá conter no mínimo :min elementos."},"not_in":"O campo :attribute contém um valor inválido.","not_regex":"O formato de :attribute não é válido","numeric":"O campo :attribute deverá conter um valor numérico.","password":"A password está errada.","present":"O campo :attribute deverá estar presente.","regex":"O formato do valor para o campo :attribute é inválido.","required":"É obrigatória a indicação de um valor para o campo :attribute.","required_if":"É obrigatória a indicação de um valor para o campo :attribute quando o valor do campo :other é igual a :value.","required_unless":"É obrigatória a indicação de um valor para o campo :attribute a menos que :other esteja presente em :values.","required_with":"É obrigatória a indicação de um valor para o campo :attribute quando :values está presente.","required_with_all":"É obrigatória a indicação de um valor para o campo :attribute quando um dos :values está presente.","required_without":"É obrigatória a indicação de um valor para o campo :attribute quando :values não está presente.","required_without_all":"É obrigatória a indicação de um valor para o campo :attribute quando nenhum dos :values está presente.","same":"Os campos :attribute e :other deverão conter valores iguais.","size":{"numeric":"O campo :attribute deverá conter o valor :size.","file":"O campo :attribute deverá ter o tamanho de :size kilobytes.","string":"O campo :attribute deverá conter :size caracteres.","array":"O campo :attribute deverá conter :size elementos."},"starts_with":"O campo :attribute tem de começar com um dos valores seguintes: :values","string":"O campo :attribute deverá conter texto.","timezone":"O campo :attribute deverá ter um fuso horário válido.","unique":"O valor indicado para o campo :attribute já se encontra registado.","uploaded":"O upload do ficheiro :attribute falhou.","url":"The :attribute must be a valid url.","uuid":":attribute tem de ser um UUID válido.","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":{"starts_with":"Only valid OTP uri are supported"},"email":{"exists":"No account found using this email"},"otp_type":{"required_without":"The :attribute field is required."},"secret":{"required_without":"The :attribute field is required."},"account":{"required_without":"The :attribute field is required.","regex":"The :attribute field must not contain colon."}},"attributes":[]}},"ru":{"auth":{"failed":"Неверное имя пользователя или пароль.","throttle":"Слишком много попыток входа. Пожалуйста, попробуйте еще раз через :seconds секунд.","sign_out":"Sign out","sign_in":"Sign in","register":"Register","welcome_back_x":"Welcome back {0}","already_authenticated":"Already authenticated","confirm":{"logout":"Are you sure you want to log out?"},"forms":{"name":"Name","login":"Login","email":"Email","password":"Password","confirm_password":"Confirm password","confirm_new_password":"Confirm new password","dont_have_account_yet":"Don't have your account yet?","already_register":"Already registered?","password_do_not_match":"Password do not match","forgot_your_password":"Forgot your password?","request_password_reset":"Reset it","reset_password":"Reset password","no_reset_password_in_demo":"No reset in Demo mode","new_password":"New password","current_password":{"label":"Current password","help":"Fill in your current password to confirm that it's you"},"change_password":"Change password","send_password_reset_link":"Send password reset link","password_successfully_changed":"Password successfully changed","edit_account":"Edit account","profile_saved":"Profile successfully updated!","welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","register_punchline":"Welcome to 2FAuth.
You need an account to go further. Fill this form to register yourself, and please, choose a strong password, 2FA data are sensitives.","reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password."}},"commons":{"cancel":"Cancel","update":"Update","copy_to_clipboard":"Copy to clipboard","copied_to_clipboard":"Copied to clipboard","profile":"Profile","edit":"Edit","delete":"Delete","create":"Create","save":"Save","close":"Close","demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","selected":"selected","name":"Name","manage":"Manage","done":"Done","new":"New","back":"Back","move":"Move","all":"All","rename":"Rename","options":"Options","reload":"Reload","some_data_have_changed":"Some data have changed. You should"},"errors":{"resource_not_found":"Resource not found","error_occured":"An error occured:","already_one_user_registered":"There is already a registered user.","cannot_register_more_user":"You cannot register more than one user.","refresh":"Refresh","no_valid_otp":"No valid OTP resource in this QR code","something_wrong_with_server":"Something is wrong with your server","Unable_to_decrypt_uri":"Unable to decrypt uri","not_a_supported_otp_type":"This OTP format is not currently supported","cannot_create_otp_without_secret":"Cannot create an OTP without a secret","cannot_create_otp_with_those_parameters":"Cannot create an OTP with those parameters","wrong_current_password":"Wrong current password, nothing has changed","error_during_encryption":"Encryption failed, your database remains unprotected.","error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","qrcode_cannot_be_read":"This QR code is unreadable"},"groups":{"groups":"Groups","select_accounts_to_show":"Select accounts to show","manage_groups":"Manage groups","active_group":"Active group","manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","move_selected_to":"Move selected to","no_group":"No group","forms":{"new_group":"New group","new_name":"New name","rename_group":"Rename group"},"confirm":{"delete":"Are you sure you want to delete this group?"}},"languages":{"en":"English","fr":"French","de":"German"},"pagination":{"previous":"« Назад","next":"Вперёд »"},"passwords":{"reset":"Ваш пароль был сброшен!","sent":"Ссылка на сброс пароля была отправлена!","throttled":"Пожалуйста, подождите перед повторной попыткой.","token":"Ошибочный код сброса пароля.","user":"Не удалось найти пользователя с указанным электронным адресом.","password":"Passwords must be at least eight characters and match the confirmation."},"settings":{"settings":"Settings","account":"Account","password":"Password","options":"Options","confirm":[],"general":"General","security":"Security","data_input":"Data input","forms":{"edit_settings":"Edit settings","setting_saved":"Settings saved","language":{"label":"Language","help":"Change the language used to translate the app interface."},"show_otp_as_dot":{"label":"Show generated tokens as dot","help":"Replace generated token caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."},"close_otp_on_copy":{"label":"Close token after copy","help":"Automatically close the popup showing the generated token after it has been copied"},"use_basic_qrcode_reader":{"label":"Use basic QR code reader","help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader"},"display_mode":{"label":"Display mode","help":"Choose whether you want accounts to be displayed as a list or as a grid"},"grid":"Grid","list":"List","show_accounts_icons":{"label":"Show icons","help":"Show icons accounts in the main view"},"auto_lock":{"label":"Auto lock","help":"Log out the user automatically in case of inactivity"},"use_encryption":{"label":"Protect sensible data","help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key."},"default_group":{"label":"Default group","help":"The group to which the newly created accounts are associated"},"useDirectCapture":{"label":"Direct input","help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode"},"defaultCaptureMode":{"label":"Default input mode","help":"Default input mode used when the Direct input option is On"},"remember_active_group":{"label":"Remember group filter","help":"Save the last group filter applied and restore it on your next visit"},"never":"Never","on_otp_copy":"On security code copy","1_minutes":"After 1 minute","5_minutes":"After 5 minutes","10_minutes":"After 10 minutes","15_minutes":"After 15 minutes","30_minutes":"After 30 minutes","1_hour":"After 1 hour","1_day":"After 1 day","livescan":"QR code livescan","upload":"QR code upload","advanced_form":"Advanced form"}},"twofaccounts":{"service":"Service","account":"Account","accounts":"Accounts","icon":"Icon","no_account_here":"No 2FA here!","add_first_account":"Add your first account","use_full_form":"Or use the full form","add_one":"Add one","show_qrcode":"Show QR code","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"John DOE"},"new_account":"New account","edit_account":"Edit account","otp_uri":"OTP Uri","scan_qrcode":"Scan a QR code","upload_qrcode":"Upload a QR code","use_advanced_form":"Use the advanced form","prefill_using_qrcode":"Prefill using a QR Code","use_qrcode":{"val":"Use a qrcode","title":"Use a QR code to fill the form magically"},"unlock":{"val":"Unlock","title":"Unlock it (at your own risk)"},"lock":{"val":"Lock","title":"Lock it"},"choose_image":"Choose an image…","test":"Test","secret":{"label":"Secret","help":"The key used to generate your security codes"},"plain_text":"Plain text","otp_type":{"label":"Choose the type of OTP to create","help":"Time-based OTP or HMAC-based OTP"},"digits":{"label":"Digits","help":"The number of digits of the generated security codes"},"algorithm":{"label":"Algorithm","help":"The algorithm used to secure your security codes"},"period":{"label":"Period","placeholder":"Default is 30","help":"The period of validity of the generated security codes in second"},"counter":{"label":"Counter","placeholder":"Default is 0","help":"The initial counter value","help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing"},"image":{"label":"Image","placeholder":"http://...","help":"The url of an external image to use as the account icon"},"options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","alternative_methods":"Alternative methods"},"stream":{"live_scan_cant_start":"Live scan can't start :(","need_grant_permission":{"reason":"2FAuth does not have permission to access your camera","solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission."},"not_readable":{"reason":"Fail to load scanner","solution":"Is the camera already in use? Ensure that no other app use your camera and try again"},"no_cam_on_device":{"reason":"No camera on this device","solution":"Maybe your forget to plug in your webcam"},"secured_context_required":{"reason":"Secure context required","solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost"},"https_required":"HTTPS required for camera streaming","camera_not_suitable":{"reason":"Installed cameras are not suitable","solution":"Please use another device/camera"},"stream_api_not_supported":{"reason":"Stream API is not supported in this browser","solution":"You should use a modern browser"}},"confirm":{"delete":"Are you sure you want to delete this account?","cancel":"The account will be lost. Are you sure?"}},"validation":{"accepted":"Вы должны принять :attribute.","active_url":"Поле :attribute содержит недействительный URL.","after":"В поле :attribute должна быть дата больше :date.","after_or_equal":"В поле :attribute должна быть дата больше или равняться :date.","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 Килобайт(а).","string":"Количество символов в поле :attribute должно быть между :min и :max.","array":"Количество элементов в поле :attribute должно быть между :min и :max."},"boolean":"Поле :attribute должно иметь значение логического типа.","confirmed":"Поле :attribute не совпадает с подтверждением.","date":"Поле :attribute не является датой.","date_equals":"Поле :attribute должно быть датой равной :date.","date_format":"Поле :attribute не соответствует формату :format.","different":"Поля :attribute и :other должны различаться.","digits":"Длина цифрового поля :attribute должна быть :digits.","digits_between":"Длина цифрового поля :attribute должна быть между :min и :max.","dimensions":"Поле :attribute имеет недопустимые размеры изображения.","distinct":"Поле :attribute содержит повторяющееся значение.","email":"Поле :attribute должно быть действительным электронным адресом.","ends_with":"Поле :attribute должно заканчиваться одним из следующих значений: :values","exists":"Выбранное значение для :attribute некорректно.","file":"Поле :attribute должно быть файлом.","filled":"Поле :attribute обязательно для заполнения.","gt":{"numeric":"Поле :attribute должно быть больше :value.","file":"Размер файла в поле :attribute должен быть больше :value Килобайт(а).","string":"Количество символов в поле :attribute должно быть больше :value.","array":"Количество элементов в поле :attribute должно быть больше :value."},"gte":{"numeric":"Поле :attribute должно быть :value или больше.","file":"Размер файла в поле :attribute должен быть :value Килобайт(а) или больше.","string":"Количество символов в поле :attribute должно быть :value или больше.","array":"Количество элементов в поле :attribute должно быть :value или больше."},"image":"Поле :attribute должно быть изображением.","in":"Выбранное значение для :attribute ошибочно.","in_array":"Поле :attribute не существует в :other.","integer":"Поле :attribute должно быть целым числом.","ip":"Поле :attribute должно быть действительным IP-адресом.","ipv4":"Поле :attribute должно быть действительным IPv4-адресом.","ipv6":"Поле :attribute должно быть действительным IPv6-адресом.","json":"Поле :attribute должно быть JSON строкой.","lt":{"numeric":"Поле :attribute должно быть меньше :value.","file":"Размер файла в поле :attribute должен быть меньше :value Килобайт(а).","string":"Количество символов в поле :attribute должно быть меньше :value.","array":"Количество элементов в поле :attribute должно быть меньше :value."},"lte":{"numeric":"Поле :attribute должно быть :value или меньше.","file":"Размер файла в поле :attribute должен быть :value Килобайт(а) или меньше.","string":"Количество символов в поле :attribute должно быть :value или меньше.","array":"Количество элементов в поле :attribute должно быть :value или меньше."},"max":{"numeric":"Поле :attribute не может быть больше :max.","file":"Размер файла в поле :attribute не может быть больше :max Килобайт(а).","string":"Количество символов в поле :attribute не может превышать :max.","array":"Количество элементов в поле :attribute не может превышать :max."},"mimes":"Поле :attribute должно быть файлом одного из следующих типов: :values.","mimetypes":"Поле :attribute должно быть файлом одного из следующих типов: :values.","min":{"numeric":"Поле :attribute должно быть не меньше :min.","file":"Размер файла в поле :attribute должен быть не меньше :min Килобайт(а).","string":"Количество символов в поле :attribute должно быть не меньше :min.","array":"Количество элементов в поле :attribute должно быть не меньше :min."},"not_in":"Выбранное значение для :attribute ошибочно.","not_regex":"Выбранный формат для :attribute ошибочный.","numeric":"Поле :attribute должно быть числом.","password":"Неверный пароль.","present":"Поле :attribute должно присутствовать.","regex":"Поле :attribute имеет ошибочный формат.","required":"Поле :attribute обязательно для заполнения.","required_if":"Поле :attribute обязательно для заполнения, когда :other равно :value.","required_unless":"Поле :attribute обязательно для заполнения, когда :other не равно :values.","required_with":"Поле :attribute обязательно для заполнения, когда :values указано.","required_with_all":"Поле :attribute обязательно для заполнения, когда :values указано.","required_without":"Поле :attribute обязательно для заполнения, когда :values не указано.","required_without_all":"Поле :attribute обязательно для заполнения, когда ни одно из :values не указано.","same":"Значения полей :attribute и :other должны совпадать.","size":{"numeric":"Поле :attribute должно быть равным :size.","file":"Размер файла в поле :attribute должен быть равен :size Килобайт(а).","string":"Количество символов в поле :attribute должно быть равным :size.","array":"Количество элементов в поле :attribute должно быть равным :size."},"starts_with":"Поле :attribute должно начинаться из одного из следующих значений: :values","string":"Поле :attribute должно быть строкой.","timezone":"Поле :attribute должно быть действительным часовым поясом.","unique":"Такое значение поля :attribute уже существует.","uploaded":"Загрузка поля :attribute не удалась.","url":"The :attribute must be a valid url.","uuid":"Поле :attribute должно быть корректным UUID.","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":{"starts_with":"Only valid OTP uri are supported"},"email":{"exists":"No account found using this email"},"otp_type":{"required_without":"The :attribute field is required."},"secret":{"required_without":"The :attribute field is required."},"account":{"required_without":"The :attribute field is required.","regex":"The :attribute field must not contain colon."}},"attributes":[]}},"si":{"auth":{"failed":"මෙම අක්තපත්ර අපගේ වාර්තා වලට ගැලපෙන්නේ නැත.","throttle":"බොහෝ පිවිසුම් උත්සහයන් සිදු කර ඇත. කරුණාකර නැවත උත්සාහ කරන්න: තත්පර තත්පර.","sign_out":"වරන්න","sign_in":"පුරන්න","register":"ලියාපදිංචි වන්න","welcome_back_x":"Welcome back {0}","already_authenticated":"Already authenticated","confirm":{"logout":"Are you sure you want to log out?"},"forms":{"name":"නම","login":"පිවිසෙන්න","email":"විද්‍යුත් තැපෑල","password":"මුර පදය","confirm_password":"මුරපදය තහවුරු කරන්න","confirm_new_password":"නව මුර පදය තහවුරු කරන්න","dont_have_account_yet":"Don't have your account yet?","already_register":"දැනටමත් ලියාපදිංචි වී ඇත්ද ?","password_do_not_match":"Password do not match","forgot_your_password":"Forgot your password?","request_password_reset":"Reset it","reset_password":"Reset password","no_reset_password_in_demo":"No reset in Demo mode","new_password":"New password","current_password":{"label":"Current password","help":"Fill in your current password to confirm that it's you"},"change_password":"Change password","send_password_reset_link":"Send password reset link","password_successfully_changed":"Password successfully changed","edit_account":"Edit account","profile_saved":"Profile successfully updated!","welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","register_punchline":"Welcome to 2FAuth.
You need an account to go further. Fill this form to register yourself, and please, choose a strong password, 2FA data are sensitives.","reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password."}},"commons":{"cancel":"Cancel","update":"Update","copy_to_clipboard":"Copy to clipboard","copied_to_clipboard":"Copied to clipboard","profile":"Profile","edit":"Edit","delete":"Delete","create":"Create","save":"Save","close":"Close","demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","selected":"selected","name":"Name","manage":"Manage","done":"Done","new":"New","back":"Back","move":"Move","all":"All","rename":"Rename","options":"Options","reload":"Reload","some_data_have_changed":"Some data have changed. You should"},"errors":{"resource_not_found":"Resource not found","error_occured":"An error occured:","already_one_user_registered":"There is already a registered user.","cannot_register_more_user":"You cannot register more than one user.","refresh":"Refresh","no_valid_otp":"No valid OTP resource in this QR code","something_wrong_with_server":"Something is wrong with your server","Unable_to_decrypt_uri":"Unable to decrypt uri","not_a_supported_otp_type":"This OTP format is not currently supported","cannot_create_otp_without_secret":"Cannot create an OTP without a secret","cannot_create_otp_with_those_parameters":"Cannot create an OTP with those parameters","wrong_current_password":"Wrong current password, nothing has changed","error_during_encryption":"Encryption failed, your database remains unprotected.","error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","qrcode_cannot_be_read":"This QR code is unreadable"},"groups":{"groups":"Groups","select_accounts_to_show":"Select accounts to show","manage_groups":"Manage groups","active_group":"Active group","manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","move_selected_to":"Move selected to","no_group":"No group","forms":{"new_group":"New group","new_name":"New name","rename_group":"Rename group"},"confirm":{"delete":"Are you sure you want to delete this group?"}},"languages":{"en":"English","fr":"French","de":"German"},"pagination":{"previous":"« පෙර","next":"ඊළඟ »"},"passwords":{"reset":"ඔබගේ මුරපදය යළි සැකසිනි!","sent":"ඔබගේ රහස් පද යළි සකසන සබැඳිය අප විසින් ඊ-තැපැල් කර ඇත!","throttled":"නැවත උත්සහා කිරීමට පෙර,මදක් රැදිසිටින්න.","token":"මෙම මුරපද යළි පිහිටුවීමේ ටෝකනය වලංගු නොවේ.","user":"අපට එම විද්යුත් තැපැල් ලිපිනය සමඟ පරිශීලකයෙකු සොයා ගත නොහැක.","password":"Passwords must be at least eight characters and match the confirmation."},"settings":{"settings":"සැකසුම්","account":"ගිණුම","password":"මුර පදය","options":"Options","confirm":[],"general":"General","security":"ආරක්ෂාව","data_input":"Data input","forms":{"edit_settings":"Edit settings","setting_saved":"Settings saved","language":{"label":"භාෂාව","help":"Change the language used to translate the app interface."},"show_otp_as_dot":{"label":"Show generated tokens as dot","help":"Replace generated token caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."},"close_otp_on_copy":{"label":"Close token after copy","help":"Automatically close the popup showing the generated token after it has been copied"},"use_basic_qrcode_reader":{"label":"Use basic QR code reader","help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader"},"display_mode":{"label":"Display mode","help":"Choose whether you want accounts to be displayed as a list or as a grid"},"grid":"Grid","list":"List","show_accounts_icons":{"label":"Show icons","help":"Show icons accounts in the main view"},"auto_lock":{"label":"Auto lock","help":"Log out the user automatically in case of inactivity"},"use_encryption":{"label":"Protect sensible data","help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key."},"default_group":{"label":"Default group","help":"The group to which the newly created accounts are associated"},"useDirectCapture":{"label":"Direct input","help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode"},"defaultCaptureMode":{"label":"Default input mode","help":"Default input mode used when the Direct input option is On"},"remember_active_group":{"label":"Remember group filter","help":"Save the last group filter applied and restore it on your next visit"},"never":"Never","on_otp_copy":"On security code copy","1_minutes":"After 1 minute","5_minutes":"After 5 minutes","10_minutes":"After 10 minutes","15_minutes":"After 15 minutes","30_minutes":"After 30 minutes","1_hour":"After 1 hour","1_day":"After 1 day","livescan":"QR code livescan","upload":"QR code upload","advanced_form":"Advanced form"}},"twofaccounts":{"service":"සේවාව","account":"ගිණුම","accounts":"ගිණුම්","icon":"Icon","no_account_here":"No 2FA here!","add_first_account":"Add your first account","use_full_form":"Or use the full form","add_one":"Add one","show_qrcode":"Show QR code","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"ජෝන් ඩොයි"},"new_account":"New account","edit_account":"Edit account","otp_uri":"OTP Uri","scan_qrcode":"Scan a QR code","upload_qrcode":"Upload a QR code","use_advanced_form":"Use the advanced form","prefill_using_qrcode":"Prefill using a QR Code","use_qrcode":{"val":"Use a qrcode","title":"Use a QR code to fill the form magically"},"unlock":{"val":"Unlock","title":"Unlock it (at your own risk)"},"lock":{"val":"Lock","title":"Lock it"},"choose_image":"Choose an image…","test":"Test","secret":{"label":"Secret","help":"The key used to generate your security codes"},"plain_text":"Plain text","otp_type":{"label":"Choose the type of OTP to create","help":"Time-based OTP or HMAC-based OTP"},"digits":{"label":"Digits","help":"The number of digits of the generated security codes"},"algorithm":{"label":"Algorithm","help":"The algorithm used to secure your security codes"},"period":{"label":"Period","placeholder":"Default is 30","help":"The period of validity of the generated security codes in second"},"counter":{"label":"Counter","placeholder":"Default is 0","help":"The initial counter value","help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing"},"image":{"label":"Image","placeholder":"http://...","help":"The url of an external image to use as the account icon"},"options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","alternative_methods":"Alternative methods"},"stream":{"live_scan_cant_start":"Live scan can't start :(","need_grant_permission":{"reason":"2FAuth does not have permission to access your camera","solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission."},"not_readable":{"reason":"Fail to load scanner","solution":"Is the camera already in use? Ensure that no other app use your camera and try again"},"no_cam_on_device":{"reason":"No camera on this device","solution":"Maybe your forget to plug in your webcam"},"secured_context_required":{"reason":"Secure context required","solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost"},"https_required":"HTTPS required for camera streaming","camera_not_suitable":{"reason":"Installed cameras are not suitable","solution":"Please use another device/camera"},"stream_api_not_supported":{"reason":"Stream API is not supported in this browser","solution":"You should use a modern browser"}},"confirm":{"delete":"Are you sure you want to delete this account?","cancel":"The account will be lost. Are you sure?"}},"validation":{"accepted":"මෙම :attribute පිළිගත යුතුය.","active_url":"මෙම :attribute වලංගු සබැඳි එකක් නොවේ.","after":"මෙම :attribute පසු දිනය විය යුතුය :date.","after_or_equal":"මෙම :attribute පසුව හෝ ඊට සමාන දිනයකි :date.","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 කිලෝ බයිට ගණන.","string":"මෙම :attribute අතර විය යුතුය :min සහ :max ප්රමාණය.","array":"මෙම :attribute අතර තිබිය යුතුය :min සහ :max අයිතම."},"boolean":"මෙම :attribute ක්ෂේත්ර සත්ය හෝ අසත්ය විය යුතුය.","confirmed":"මෙම :attribute තහවුරු කිරීම නොගැලපේ.","date":"මෙම :attribute වලංගු දිනය නොවේ.","date_equals":"මෙම :attribute දිනකට සමාන විය යුතුය :date.","date_format":"මෙම :attribute ආකෘතියට ගැළපෙන්නේ නැත :format.","different":"මෙම :attribute සහ :other වෙනස් විය යුතුය.","digits":"මෙම :attribute විය යුතුය :digits ඉලක්කම්.","digits_between":"මෙම :attribute විය යුතුය අතර :min සහ :max ඉලක්කම්.","dimensions":"මෙම :attribute වලංගු නොවන පිළිබිඹුවක් ඇත.","distinct":"මෙම :attribute ක්ෂේත්රයේ අනුපිටපත් වටිනාකමක් ඇත.","email":"මෙම :attribute වලංගු විද්යුත් තැපැල් ලිපිනයක් විය යුතුය.","ends_with":"The :attribute must end with one of the following: :values.","exists":"මෙම තෝරා ඇත :attribute අවලංගුයි.","file":"මෙම :attribute ගොනුවක් විය යුතුය.","filled":"මෙම :attribute ක්ෂේත්රයේ වටිනාකමක් තිබිය යුතුය.","gt":{"numeric":"මෙම :attribute වඩා විශාල විය යුතුය :value.","file":"මෙම :attribute වඩා විශාල විය යුතුය :value කිලෝ බයිට ගණන.","string":"මෙම :attribute වඩා විශාල විය යුතුය :value ප්රමාණය.","array":"මෙම :attribute වඩා වැඩි විය යුතුය :value අයිතම."},"gte":{"numeric":"මෙම :attribute වඩා වැඩි හෝ සමාන විය යුතුය :value.","file":"මෙම :attribute වඩා වැඩි හෝ සමාන විය යුතුයl :value කිලෝ බයිට ගණන.","string":"මෙම :attribute වඩා වැඩි හෝ සමාන විය යුතුය :value ප්රමාණය.","array":"මෙම :attribute තිබිය යුතු :value අයිතම හෝ ඊට වැඩි."},"image":"මෙම :attribute රූපයක් විය යුතුය.","in":"මෙම තෝරා ඇත :attribute අවලංගුයි.","in_array":"මෙම :attribute ක්ෂේත්රයේ නොපවතින :other.","integer":"මෙම :attribute පූර්ණ සංඛ්යාවක් විය යුතුය.","ip":"මෙම :attribute වලංගු IP ලිපිනයක් තිබිය යුතුය.","ipv4":"මෙම :attribute වලංගු IPv4 ලිපිනය විය යුතුය.","ipv6":"මෙම :attribute වලංගු IPv6 ලිපිනය විය යුතුය.","json":"මෙම :attribute වලංගු JSON පේළියකි විය යුතුය.","lt":{"numeric":"මෙම :attribute වඩා අඩු විය යුතුය :value.","file":"මෙම :attribute වඩා අඩු විය යුතුය :value කිලෝ බයිට ගණන.","string":"මෙම :attribute වඩා අඩු විය යුතුය :value ප්රමාණය..","array":"මෙම :attribute වඩා අඩු විය යුතුය :value අයිතම."},"lte":{"numeric":"මෙම :attribute අඩු හෝ සමාන විය යුතුය :value.","file":"මෙම :attribute අඩු හෝ සමාන විය යුතුය :value කිලෝ බයිට ගණන..","string":"මෙම :attribute අඩු හෝ සමාන විය යුතුය :value ප්රමාණය..","array":"මෙම :attribute වඩා වැඩි නොවිය යුතුය :value අයිතම."},"max":{"numeric":"මෙම :attribute වඩා විශාල විය නොහැකිය :max.","file":"මෙම :attribute වඩා විශාල විය නොහැකිය :max කිලෝ බයිට ගණන..","string":"මෙම :attribute වඩා විශාල විය නොහැකිය :max ප්රමාණය..","array":"මෙම :attribute වඩා වැඩි නොවිය හැක :max අයිතම."},"mimes":"මෙම :attribute වර්ගයේ ගොනුවක් විය යුතුය: :values.","mimetypes":"මෙම :attribute වර්ගයේ ගොනුවක් විය යුතුය: :values.","min":{"numeric":"මෙම :attribute අවම වශයෙන් විය යුතුය :min.","file":"මෙම :attribute අවම වශයෙන් විය යුතුය :min කිලෝ බයිට ගණන..","string":"මෙම :attribute අවම වශයෙන් විය යුතුය :min ප්රමාණය..","array":"මෙම :attribute අවම වශයෙන් තිබිය යුතුය :min අයිතම."},"not_in":"මෙම තෝරා ඇත :attribute අවලංගුයි.","not_regex":"මෙම :attribute ආකෘතිය අවලංගුයි.","numeric":"මෙම :attribute අංකයක් විය යුතුය.","password":"The password is incorrect.","present":"මෙම :attribute ක්ෂේත්රයයි තිබිය යුතුය.","regex":"මෙම :attribute ආකෘතිය අවලංගුයි.","required":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි.","required_if":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය :other මෙය :value.","required_unless":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි මිස :other මෙය :values.","required_with":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය :values තිබිය යුතුය.","required_with_all":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය :values තිබිය යුතුය.","required_without":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය :values තිබිය යුතුය.","required_without_all":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය කිසිවක් of :values තිබිය යුතුය.","same":"මෙම :attribute සහ :other ගැලපිය යුතුයි.","size":{"numeric":"මෙම :attribute විය යුතුය :size.","file":"මෙම :attribute විය යුතුය :size කිලෝ බයිට ගණන..","string":"මෙම :attribute විය යුතුය :size ප්රමාණය..","array":"මෙම :attribute must contain :size අයිතම."},"starts_with":"මෙම :attribute පහත සඳහන් එකක් සමඟ ආරම්භ කළ යුතුය: :values","string":"මෙම :attribute පේළියකි විය යුතුය.","timezone":"මෙම :attribute වලංගු කලාපයකි විය යුතුය.","unique":"මෙම :attribute දැනටමත් අරගෙන තියෙන්නේ.","uploaded":"මෙම :attribute උඩුගත කිරීම අසාර්ථක විය.","url":"මෙම :attribute ආකෘතිය අවලංගුයි.","uuid":"මෙම :attribute වලංගු UUID විය යුතුය.","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":{"starts_with":"Only valid OTP uri are supported"},"email":{"exists":"No account found using this email"},"otp_type":{"required_without":"The :attribute field is required."},"secret":{"required_without":"The :attribute field is required."},"account":{"required_without":"The :attribute field is required.","regex":"The :attribute field must not contain colon."}},"attributes":[]}},"zh":{"auth":{"failed":"用户名或密码错误","throttle":"您尝试的登录次数过多,请 :seconds 秒后再试。","sign_out":"Sign out","sign_in":"Sign in","register":"Register","welcome_back_x":"Welcome back {0}","already_authenticated":"Already authenticated","confirm":{"logout":"Are you sure you want to log out?"},"forms":{"name":"Name","login":"Login","email":"Email","password":"Password","confirm_password":"Confirm password","confirm_new_password":"Confirm new password","dont_have_account_yet":"Don't have your account yet?","already_register":"Already registered?","password_do_not_match":"Password do not match","forgot_your_password":"Forgot your password?","request_password_reset":"Reset it","reset_password":"Reset password","no_reset_password_in_demo":"No reset in Demo mode","new_password":"New password","current_password":{"label":"Current password","help":"Fill in your current password to confirm that it's you"},"change_password":"Change password","send_password_reset_link":"Send password reset link","password_successfully_changed":"Password successfully changed","edit_account":"Edit account","profile_saved":"Profile successfully updated!","welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","register_punchline":"Welcome to 2FAuth.
You need an account to go further. Fill this form to register yourself, and please, choose a strong password, 2FA data are sensitives.","reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password."}},"commons":{"cancel":"Cancel","update":"Update","copy_to_clipboard":"Copy to clipboard","copied_to_clipboard":"Copied to clipboard","profile":"Profile","edit":"Edit","delete":"Delete","create":"Create","save":"Save","close":"Close","demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","selected":"selected","name":"Name","manage":"Manage","done":"Done","new":"New","back":"Back","move":"Move","all":"All","rename":"Rename","options":"Options","reload":"Reload","some_data_have_changed":"Some data have changed. You should"},"errors":{"resource_not_found":"Resource not found","error_occured":"An error occured:","already_one_user_registered":"There is already a registered user.","cannot_register_more_user":"You cannot register more than one user.","refresh":"Refresh","no_valid_otp":"No valid OTP resource in this QR code","something_wrong_with_server":"Something is wrong with your server","Unable_to_decrypt_uri":"Unable to decrypt uri","not_a_supported_otp_type":"This OTP format is not currently supported","cannot_create_otp_without_secret":"Cannot create an OTP without a secret","cannot_create_otp_with_those_parameters":"Cannot create an OTP with those parameters","wrong_current_password":"Wrong current password, nothing has changed","error_during_encryption":"Encryption failed, your database remains unprotected.","error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","qrcode_cannot_be_read":"This QR code is unreadable"},"groups":{"groups":"Groups","select_accounts_to_show":"Select accounts to show","manage_groups":"Manage groups","active_group":"Active group","manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","move_selected_to":"Move selected to","no_group":"No group","forms":{"new_group":"New group","new_name":"New name","rename_group":"Rename group"},"confirm":{"delete":"Are you sure you want to delete this group?"}},"languages":{"en":"English","fr":"French","de":"German"},"pagination":{"previous":"« 上一页","next":"下一页 »"},"passwords":{"reset":"密码重置成功!","sent":"密码重置邮件已发送!","throttled":"请稍候再试。","token":"密码重置令牌无效。","user":"找不到该邮箱对应的用户。","password":"Passwords must be at least eight characters and match the confirmation."},"settings":{"settings":"Settings","account":"Account","password":"Password","options":"Options","confirm":[],"general":"General","security":"Security","data_input":"Data input","forms":{"edit_settings":"Edit settings","setting_saved":"Settings saved","language":{"label":"Language","help":"Change the language used to translate the app interface."},"show_otp_as_dot":{"label":"Show generated tokens as dot","help":"Replace generated token caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."},"close_otp_on_copy":{"label":"Close token after copy","help":"Automatically close the popup showing the generated token after it has been copied"},"use_basic_qrcode_reader":{"label":"Use basic QR code reader","help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader"},"display_mode":{"label":"Display mode","help":"Choose whether you want accounts to be displayed as a list or as a grid"},"grid":"Grid","list":"List","show_accounts_icons":{"label":"Show icons","help":"Show icons accounts in the main view"},"auto_lock":{"label":"Auto lock","help":"Log out the user automatically in case of inactivity"},"use_encryption":{"label":"Protect sensible data","help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key."},"default_group":{"label":"Default group","help":"The group to which the newly created accounts are associated"},"useDirectCapture":{"label":"Direct input","help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode"},"defaultCaptureMode":{"label":"Default input mode","help":"Default input mode used when the Direct input option is On"},"remember_active_group":{"label":"Remember group filter","help":"Save the last group filter applied and restore it on your next visit"},"never":"Never","on_otp_copy":"On security code copy","1_minutes":"After 1 minute","5_minutes":"After 5 minutes","10_minutes":"After 10 minutes","15_minutes":"After 15 minutes","30_minutes":"After 30 minutes","1_hour":"After 1 hour","1_day":"After 1 day","livescan":"QR code livescan","upload":"QR code upload","advanced_form":"Advanced form"}},"twofaccounts":{"service":"Service","account":"Account","accounts":"Accounts","icon":"Icon","no_account_here":"No 2FA here!","add_first_account":"Add your first account","use_full_form":"Or use the full form","add_one":"Add one","show_qrcode":"Show QR code","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"John DOE"},"new_account":"New account","edit_account":"Edit account","otp_uri":"OTP Uri","scan_qrcode":"Scan a QR code","upload_qrcode":"Upload a QR code","use_advanced_form":"Use the advanced form","prefill_using_qrcode":"Prefill using a QR Code","use_qrcode":{"val":"Use a qrcode","title":"Use a QR code to fill the form magically"},"unlock":{"val":"Unlock","title":"Unlock it (at your own risk)"},"lock":{"val":"Lock","title":"Lock it"},"choose_image":"Choose an image…","test":"Test","secret":{"label":"Secret","help":"The key used to generate your security codes"},"plain_text":"Plain text","otp_type":{"label":"Choose the type of OTP to create","help":"Time-based OTP or HMAC-based OTP"},"digits":{"label":"Digits","help":"The number of digits of the generated security codes"},"algorithm":{"label":"Algorithm","help":"The algorithm used to secure your security codes"},"period":{"label":"Period","placeholder":"Default is 30","help":"The period of validity of the generated security codes in second"},"counter":{"label":"Counter","placeholder":"Default is 0","help":"The initial counter value","help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing"},"image":{"label":"Image","placeholder":"http://...","help":"The url of an external image to use as the account icon"},"options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","alternative_methods":"Alternative methods"},"stream":{"live_scan_cant_start":"Live scan can't start :(","need_grant_permission":{"reason":"2FAuth does not have permission to access your camera","solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission."},"not_readable":{"reason":"Fail to load scanner","solution":"Is the camera already in use? Ensure that no other app use your camera and try again"},"no_cam_on_device":{"reason":"No camera on this device","solution":"Maybe your forget to plug in your webcam"},"secured_context_required":{"reason":"Secure context required","solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost"},"https_required":"HTTPS required for camera streaming","camera_not_suitable":{"reason":"Installed cameras are not suitable","solution":"Please use another device/camera"},"stream_api_not_supported":{"reason":"Stream API is not supported in this browser","solution":"You should use a modern browser"}},"confirm":{"delete":"Are you sure you want to delete this account?","cancel":"The account will be lost. Are you sure?"}},"validation":{"accepted":"您必须接受 :attribute。","active_url":":attribute 不是一个有效的网址。","after":":attribute 必须要晚于 :date。","after_or_equal":":attribute 必须要等于 :date 或更晚。","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 个单元。"},"boolean":":attribute 必须为布尔值。","confirmed":":attribute 两次输入不一致。","date":":attribute 不是一个有效的日期。","date_equals":":attribute 必须要等于 :date。","date_format":":attribute 的格式必须为 :format。","different":":attribute 和 :other 必须不同。","digits":":attribute 必须是 :digits 位数字。","digits_between":":attribute 必须是介于 :min 和 :max 位的数字。","dimensions":":attribute 图片尺寸不正确。","distinct":":attribute 已经存在。","email":":attribute 不是一个合法的邮箱。","ends_with":":attribute 必须以 :values 为结尾。","exists":":attribute 不存在。","file":":attribute 必须是文件。","filled":":attribute 不能为空。","gt":{"numeric":":attribute 必须大于 :value。","file":":attribute 必须大于 :value KB。","string":":attribute 必须多于 :value 个字符。","array":":attribute 必须多于 :value 个元素。"},"gte":{"numeric":":attribute 必须大于或等于 :value。","file":":attribute 必须大于或等于 :value KB。","string":":attribute 必须多于或等于 :value 个字符。","array":":attribute 必须多于或等于 :value 个元素。"},"image":":attribute 必须是图片。","in":"已选的属性 :attribute 无效。","in_array":":attribute 必须在 :other 中。","integer":":attribute 必须是整数。","ip":":attribute 必须是有效的 IP 地址。","ipv4":":attribute 必须是有效的 IPv4 地址。","ipv6":":attribute 必须是有效的 IPv6 地址。","json":":attribute 必须是正确的 JSON 格式。","lt":{"numeric":":attribute 必须小于 :value。","file":":attribute 必须小于 :value KB。","string":":attribute 必须少于 :value 个字符。","array":":attribute 必须少于 :value 个元素。"},"lte":{"numeric":":attribute 必须小于或等于 :value。","file":":attribute 必须小于或等于 :value KB。","string":":attribute 必须少于或等于 :value 个字符。","array":":attribute 必须少于或等于 :value 个元素。"},"max":{"numeric":":attribute 不能大于 :max。","file":":attribute 不能大于 :max KB。","string":":attribute 不能大于 :max 个字符。","array":":attribute 最多只有 :max 个单元。"},"mimes":":attribute 必须是一个 :values 类型的文件。","mimetypes":":attribute 必须是一个 :values 类型的文件。","min":{"numeric":":attribute 必须大于等于 :min。","file":":attribute 大小不能小于 :min KB。","string":":attribute 至少为 :min 个字符。","array":":attribute 至少有 :min 个单元。"},"not_in":"已选的属性 :attribute 非法。","not_regex":":attribute 的格式错误。","numeric":":attribute 必须是一个数字。","password":"密码错误","present":":attribute 必须存在。","regex":":attribute 格式不正确。","required":":attribute 不能为空。","required_if":"当 :other 为 :value 时 :attribute 不能为空。","required_unless":"当 :other 不为 :values 时 :attribute 不能为空。","required_with":"当 :values 存在时 :attribute 不能为空。","required_with_all":"当 :values 存在时 :attribute 不能为空。","required_without":"当 :values 不存在时 :attribute 不能为空。","required_without_all":"当 :values 都不存在时 :attribute 不能为空。","same":":attribute 和 :other 必须相同。","size":{"numeric":":attribute 大小必须为 :size。","file":":attribute 大小必须为 :size KB。","string":":attribute 必须是 :size 个字符。","array":":attribute 必须为 :size 个单元。"},"starts_with":":attribute 必须以 :values 为开头。","string":":attribute 必须是一个字符串。","timezone":":attribute 必须是一个合法的时区值。","unique":":attribute 已经存在。","uploaded":":attribute 上传失败。","url":"The :attribute must be a valid url.","uuid":":attribute 必须是有效的 UUID。","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":{"starts_with":"Only valid OTP uri are supported"},"email":{"exists":"No account found using this email"},"otp_type":{"required_without":"The :attribute field is required."},"secret":{"required_without":"The :attribute field is required."},"account":{"required_without":"The :attribute field is required.","regex":"The :attribute field must not contain colon."}},"attributes":[]}}} +module.exports = {"de":{"auth":{"failed":"Diese Kombination aus Zugangsdaten wurde nicht in unserer Datenbank gefunden.","password":"Das Passwort ist falsch.","throttle":"Zu viele Loginversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.","sign_out":"Abmelden","sign_in":"Anmelden","sign_in_using":"Anmelden mit","login_and_password":"benutzername & passwort","register":"Registrieren","welcome_back_x":"Willkommen zurück, {0}","autolock_triggered":"Auto lock triggered","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.","already_authenticated":"Bereits angemeldet","authentication":"Authentication","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.","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?"},"webauthn":{"security_device":"a security device","security_devices":"Security devices","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)","enhance_security_using_webauthn":"You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

\n 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":"Lost your device?","recover_your_account":"Recover your account","account_recovery":"Account recovery","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.","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","register_a_new_device":"Register a new 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.","invalid_recovery_token":"Invalid recovery token","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.
\n 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":"Set at least one device to enable these options","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.
\n This has no effect if you only use WebAuthn."}},"forms":{"name":"Name","login":"Anmeldung","webauthn_login":"WebAuthn login","email":"E-Mail","password":"Passwort","confirm_password":"Passwort bestätigen","confirm_new_password":"Neues Passwort bestätigen","dont_have_account_yet":"Sie haben noch keinen Account?","already_register":"Schon registriert?","authentication_failed":"Authentication failed","forgot_your_password":"Passwort vergessen?","request_password_reset":"Zurücksetzen","reset_password":"Password zurücksetzen","disabled_in_demo":"Feature disabled in Demo mode","new_password":"Neues Passwort","current_password":{"label":"Aktuelles Passwort","help":"Geben Sie Ihr aktuelles Passwort ein, um zu bestätigen, dass Sie es sind"},"change_password":"Passwort ändern","send_password_reset_link":"Link zum Zurücksetzen des Passworts senden","password_successfully_changed":"Passwort erfolgreich geändert","edit_account":"Account bearbeiten","profile_saved":"Profil erfolgreich aktualisiert!","welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","welcome_to_testing_app_use_those_credentials":"Welcome to the 2FAuth testing instance.

Use email address testing@2fauth.app and password password","register_punchline":"Willkommen bei 2FAuth.
Du benötigst einen Account, um weiterzumachen. Füllen Sie dieses Formular aus, um sich zu registrieren, und wählen Sie bitte ein starkes Passwort, denn 2FA-Daten sind sensibel.","reset_punchline":"2FAuth sendet Ihnen einen Link zum Zurücksetzen des Passworts an diese Adresse. Klicken Sie auf den Link in der erhaltenen E-Mail, um ein neues Passwort festzulegen.","name_this_device":"Name this device","delete_account":"Delete account","delete_your_account":"Delete your account","delete_your_account_and_reset_all_data":"This will reset 2FAuth. Your user account will be deleted as well as all 2FA data. There is no going back.","user_account_successfully_deleted":"User account successfully deleted"}},"commons":{"cancel":"Abbrechen","update":"Aktualisieren","copy":"Copy","copy_to_clipboard":"In die Zwischenablage kopieren","copied_to_clipboard":"In die Zwischenablage kopiert","profile":"Profil","edit":"Bearbeiten","delete":"Löschen","disable":"Disable","enable":"Enable","create":"Erstellen","save":"Speichern","close":"Schließen","demo_do_not_post_sensitive_data":"Dies ist eine Demo-App, veröffentlichen Sie keine sensiblen Daten","testing_do_not_post_sensitive_data":"This is a testing app, do not post any sensitive data","selected":"ausgewählt","name":"Name","manage":"Verwalten","done":"Fertig","new":"Neu","back":"Zurück","move":"Verschieben","all":"Alle","rename":"Umbenennen","new_name":"New name","options":"Einstellungen","reload":"Aktualisieren","some_data_have_changed":"Einige Daten haben sich geändert. Sie sollten diese Seite","generate":"Generate","open_in_browser":"Open in browser","continue":"Continue","discard":"Discard"},"errors":{"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","Unable_to_decrypt_uri":"URI konnte nicht entschlüsselt werden","not_a_supported_otp_type":"Dieses OTP-Format wird derzeit nicht unterstützt","cannot_create_otp_without_secret":"Das OTP kann nicht ohne Geheimnis erstellt werden","data_of_qrcode_is_not_valid_URI":"The data of this QR code is not a valid OTP Auth URI:","wrong_current_password":"Aktuelles Passwort falsch, nichts wurde geändert","error_during_encryption":"Verschlüsselung fehlgeschlagen, Ihre Datenbank bleibt ungeschützt.","error_during_decryption":"Entschlüsselung fehlgeschlagen, Ihre Datenbank bleibt geschützt. Dies wird hauptsächlich durch eine Integritätsproblem verschlüsselter Daten für ein oder mehrere Konten verursacht.","qrcode_cannot_be_read":"Dieser QR-Code ist unlesbar","too_many_ids":"too many ids were included in the query parameter, max 100 allowed","delete_user_setting_only":"Only user-created setting can be deleted","indecipherable":"*indecipherable*","cannot_decipher_secret":"The secret cannot be deciphered. This is mainly caused by a wrong APP_KEY set in the .env configuration file of 2Fauth or a corrupted data stored in database.","https_required":"HTTPS context required","browser_does_not_support_webauthn":"Your device does not support webauthn. Try again later using a more modern browser","aborted_by_user":"Aborted by user","security_device_unsupported":"Security device unsupported","unsupported_with_reverseproxy":"Not applicable when using an auth proxy","user_deletion_failed":"User account deletion failed, no data have been deleted","auth_proxy_failed":"Proxy authentication failed","auth_proxy_failed_legend":"2Fauth is configured to run behind an authentication proxy but your proxy does not return the expected header. Check your configuration and try again.","invalid_google_auth_migration":"Invalid or unreadable Google Authenticator data","unsupported_otp_type":"Unsupported OTP type"},"groups":{"groups":"Gruppen","create_group":"Create new group","select_accounts_to_show":"Konten zum Anzeigen auswählen","manage_groups":"Gruppen verwalten","active_group":"Aktive Gruppe","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","no_group":"Keine Gruppe","forms":{"new_group":"Neue Gruppe","new_name":"Neuer Name","rename_group":"Gruppe umbenennen"},"confirm":{"delete":"Sind Sie sicher, dass Sie diese Gruppe löschen möchten?"}},"languages":{"browser_preference":"Browser preference","en":"Englisch","fr":"Französisch","de":"Deutsch"},"pagination":{"previous":"« Zurück","next":"Weiter »"},"passwords":{"reset":"Das Passwort wurde zurückgesetzt!","sent":"Passworterinnerung wurde gesendet!","throttled":"Bitte warten Sie, bevor Sie es erneut versuchen.","token":"Der Passwort-Wiederherstellungs-Schlüssel ist ungültig oder abgelaufen.","user":"Es konnte leider kein Nutzer mit dieser E-Mail-Adresse gefunden werden.","password":"Passwörter müssen mindestens acht Zeichen lang sein und mit der Bestätigung übereinstimmen."},"settings":{"settings":"Einstellungen","account":"Account","oauth":"OAuth","webauthn":"WebAuthn","tokens":"Tokens","options":"Einstellungen","confirm":{"revoke":"Are you sure you want to revoke this token?"},"general":"Allgemein","security":"Sicherheit","profile":"Profile","change_password":"Change password","personal_access_tokens":"Personal access tokens","token_legend":"Personal Access Tokens allow any app to authenticate to the 2Fauth API. You should specify the access token as a Bearer token in the authorization header of consumer apps requests.","generate_new_token":"Generate a new token","revoke":"Revoke","token_revoked":"Token successfully revoked","revoking_a_token_is_permanent":"Revoking a token is permanent","make_sure_copy_token":"Make sure to copy your personal access token now. You won’t be able to see it again!","data_input":"Daten-Eingabe","forms":{"edit_settings":"Einstellungen bearbeiten","setting_saved":"Einstellungen gespeichert","new_token":"New token","some_translation_are_missing":"Some translations are missing using the browser preferred language?","help_translate_2fauth":"Help translate 2FAuth","language":{"label":"Sprache","help":"Language used to translate the 2FAuth user interface. Named languages are complete, set the one of your choice to override your browser preference."},"show_otp_as_dot":{"label":"Show generated one-time passwords as dot","help":"Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."},"close_otp_on_copy":{"label":"Close OTP after copy","help":"Automatically close the popup showing the generated password after it has been copied"},"use_basic_qrcode_reader":{"label":"Benutze den einfachen QR-Codeleser","help":"Wenn bei der Erfassung von QR-Codes Probleme auftreten können Sie mit dieser Option zu einem einfacheren, aber zuverlässigeren QR-Codeleser wechseln"},"display_mode":{"label":"Anzeigemodus","help":"Wählen Sie, ob Konten als Liste oder als Raster angezeigt werden sollen"},"grid":"Raster","list":"Liste","show_accounts_icons":{"label":"Symbole anzeigen","help":"Kontosymbole in der Hauptansicht anzeigen"},"auto_lock":{"label":"Automatische Sperrung","help":"Log out the user automatically in case of inactivity. Has no effect when authentication is handled by a proxy and no custom logout url is specified."},"use_encryption":{"label":"Sensible Daten schützen","help":"Vertrauliche Daten, die 2FA-Geheimnisse und E-Mails, werden verschlüsselt in der Datenbank gespeichert. Erstellen Sie ein Backup von der APP_KEY Variablen in der .env Datei (oder der gesamten Datei), da sie als Schlüssel zur gesicherten Datenbank dient. Es gibt keine Möglichkeit, verschlüsselte Daten ohne diesen Schlüssel zu wiederherzustellen."},"default_group":{"label":"Standardgruppe","help":"Die Gruppe, der neu erstellte Konten zugeordnet werden"},"useDirectCapture":{"label":"Direkteingabe","help":"Wählen Sie aus, ob Sie einen Eingabemodus unter den Verfügbaren wählen möchten oder ob Sie direkt den Standard-Eingabemodus verwenden möchten"},"defaultCaptureMode":{"label":"Standard-Eingabemodus","help":"Standard-Eingabemodus, der verwendet wird, falls die Direkteingabe aktiviert ist"},"remember_active_group":{"label":"Gruppenfilter merken","help":"Speichert den letzten Gruppenfilter und stellt ihn bei Ihrem nächsten Besuch wieder her"},"never":"Niemals","on_otp_copy":"On security code copy","1_minutes":"Nach 1 Minute","5_minutes":"Nach 5 Minuten","10_minutes":"Nach 10 Minuten","15_minutes":"Nach 15 Minuten","30_minutes":"Nach 30 Minuten","1_hour":"Nach 1 Stunde","1_day":"Nach 1 Tag","livescan":"QR-Code scannen","upload":"QR-Code hochladen","advanced_form":"Erweitertes Formular"}},"titles":{"404":"Item not found","start":"New account","capture":"Flash QR","accounts":"Accounts","createAccount":"Create account","importAccounts":"Import accounts","editAccount":"Account edit","showQRcode":"Account as QR code","groups":"Groups","createGroup":"Create group","editGroup":"Group edit","settings":{"options":"Options","account":"User account","oauth":{"tokens":"OAuth tokens","generatePAT":"New personal token"},"webauthn":{"editCredential":"Device edit","devices":"WebAuthn devices"}},"login":"Login","register":"Register","autolock":"Auto lock","password":{"request":"Reset password","reset":"New password"},"webauthn":{"lost":"Account recovery","recover":"Register a new device"},"flooded":"Flood","genericError":"Error"},"twofaccounts":{"service":"Dienst","account":"Benutzerkonto","accounts":"Benutzerkonten","icon":"Symbol","no_account_here":"Noch keine 2FA!","add_first_account":"Erstes Konto hinzufügen","use_full_form":"Oder nutzen Sie das vollständige Formular","add_one":"Konto hinzufügen","show_qrcode":"QR-Code anzeigen","no_service":"- no service -","forms":{"service":{"placeholder":"beispiel.de"},"account":{"placeholder":"Max Mustermann"},"new_account":"Neues Konto","edit_account":"Konto bearbeiten","otp_uri":"OTP Uri","scan_qrcode":"QR-Code scannen","upload_qrcode":"QR-Code hochladen","use_advanced_form":"Erweitertes Formular verwenden","prefill_using_qrcode":"Mit einem QR-Code ausfüllen","use_qrcode":{"val":"QR-Code verwenden","title":"Verwenden Sie einen QR-Code, um das Formular auszufüllen"},"unlock":{"val":"Entsperren","title":"Entsperren (auf eigene Gefahr)"},"lock":{"val":"Sperren","title":"Sperren"},"choose_image":"Bild auswählen…","test":"Test","secret":{"label":"Geheimnis","help":"Der Schlüssel, der zur Generierung Ihrer Sicherheitscodes verwendet wird"},"plain_text":"Klartext","otp_type":{"label":"Wählen Sie die Art des zu erstellenden OTP","help":"Zeit- oder HMAC-basiertes OTP"},"digits":{"label":"Ziffern","help":"Die Anzahl der Ziffern der generierten Sicherheitscodes"},"algorithm":{"label":"Algorithmus","help":"Der Algorithmus, der zur Sicherung Ihrer Sicherheitscodes verwendet wird"},"period":{"label":"Period","placeholder":"Default is 30","help":"The period of validity of the generated security codes in second"},"counter":{"label":"Counter","placeholder":"Default is 0","help":"The initial counter value","help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing"},"image":{"label":"Image","placeholder":"http://...","help":"The url of an external image to use as the account icon"},"options_help":"Sie können die folgenden Einstellungen leer lassen, wenn Sie nicht wissen, wie Sie sie einstellen. In dem Fall werden die Standardwerte verwendet.","alternative_methods":"Alternative Methoden"},"stream":{"live_scan_cant_start":"Der Live-Scan kann nicht gestartet werden :(","need_grant_permission":{"reason":"2FAuth hat keine Berechtigung auf Ihre Kamera zuzugreifen","solution":"Sie müssen die Erlaubnis erteilen, um Ihre Gerätekamera zu verwenden. Falls Sie bereits verweigert haben und Ihr Browser Sie nicht erneut anfragt, verweisen Sie bitte auf die Browser-Dokumentation, um herauszufinden, wie Sie die Erlaubnis erteilen können."},"not_readable":{"reason":"Fehler beim Laden des Scanners","solution":"Wird die Kamera bereits verwendet? Stellen Sie sicher, dass keine andere App Ihre Kamera verwendet und versuchen Sie es erneut"},"no_cam_on_device":{"reason":"Keine Kamera in diesem Gerät","solution":"Maybe you forgot to plug in your webcam"},"secured_context_required":{"reason":"Sichere Umgebung erforderlich","solution":"HTTPS wird für den Live-Scan benötigt. Wenn Sie 2FAuth auf Ihrem Computer ausführen, verwenden Sie nur localhost und keinen anderen virtuellen Host"},"https_required":"HTTPS für Kamera-Übertragung erforderlich","camera_not_suitable":{"reason":"Die verbauten Kameras sind nicht geeignet","solution":"Bitte verwenden Sie ein anderes Gerät/Kamera"},"stream_api_not_supported":{"reason":"Stream API wird von diesem Browser nicht unterstützt","solution":"Sie sollten einen modernen Browser verwenden"}},"confirm":{"delete":"Sind Sie sicher, dass Sie dieses Konto löschen möchten?","cancel":"Das Konto wird gelöscht. Sind Sie sicher?","discard":"Are you sure you want to discard this account?","discard_all":"Are you sure you want to discard all accounts?","discard_duplicates":"Are you sure you want to discard all duplicates?"},"import":{"import":"Import","to_import":"Import","import_legend":"Import your Google Authenticator accounts.","use_the_gauth_qr_code":"Load a G-Auth QR code","issuer":"Issuer","imported":"Imported","failure":"Failure","x_valid_accounts_found":"{count} valid accounts found","import_all":"Import all","import_this_account":"Import this account","discard_all":"Discard all","discard_duplicates":"Discard duplicates","discard_this_account":"Discard this account","generate_a_test_password":"Generate a test pasword","possible_duplicate":"An account with the exact same data already exists"}},"validation":{"accepted":":attribute muss akzeptiert werden.","accepted_if":"The :attribute must be accepted when :other is :value.","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.","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."},"boolean":":attribute muss entweder 'true' oder 'false' sein.","confirmed":":attribute stimmt nicht mit der Bestätigung überein.","current_password":"The password is incorrect.","date":":attribute muss ein gültiges Datum sein.","date_equals":":attribute muss ein Datum gleich :date sein.","date_format":":attribute entspricht nicht dem gültigen Format für :format.","declined":"The :attribute must be declined.","declined_if":"The :attribute must be declined when :other is :value.","different":":attribute und :other müssen sich unterscheiden.","digits":":attribute muss :digits Stellen haben.","digits_between":":attribute muss zwischen :min und :max Stellen haben.","dimensions":":attribute hat ungültige Bildabmessungen.","distinct":":attribute beinhaltet einen bereits vorhandenen Wert.","email":":attribute muss eine gültige E-Mail-Adresse sein.","ends_with":":attribute muss eine der folgenden Endungen aufweisen: :values","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."},"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."},"image":":attribute muss ein Bild sein.","in":"Der gewählte Wert für :attribute ist ungültig.","in_array":"Der gewählte Wert für :attribute kommt nicht in :other vor.","integer":":attribute muss eine ganze Zahl sein.","ip":":attribute muss eine gültige IP-Adresse sein.","ipv4":":attribute muss eine gültige IPv4-Adresse sein.","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."},"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."},"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."},"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."},"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.","present":":attribute muss vorhanden sein.","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":":attribute Format ist ungültig.","required":":attribute muss ausgefüllt werden.","required_if":":attribute muss ausgefüllt werden, wenn :other den Wert :value hat.","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.","required_without":":attribute muss ausgefüllt werden, wenn :values nicht ausgefüllt wurde.","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."},"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.","unique":":attribute ist bereits vergeben.","uploaded":":attribute konnte nicht hochgeladen werden.","url":":attribute muss eine gültige URL sein.","uuid":":attribute muss ein UUID sein.","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":{"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."},"name":{"firstUser":"There is already a registered user"}},"attributes":[]}},"en":{"auth":{"failed":"These credentials do not match our records.","password":"The provided password is incorrect.","throttle":"Too many login attempts. Please try again in :seconds seconds.","sign_out":"Sign out","sign_in":"Sign in","sign_in_using":"Sign in using","login_and_password":"login & password","register":"Register","welcome_back_x":"Welcome back {0}","autolock_triggered":"Auto lock triggered","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.","already_authenticated":"Already authenticated","authentication":"Authentication","maybe_later":"Maybe later","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.","confirm":{"logout":"Are you sure you want to log out?","revoke_device":"Are you sure you want to revoke this device?","delete_account":"Are you sure you want to delete your account?"},"webauthn":{"security_device":"a security device","security_devices":"Security devices","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)","enhance_security_using_webauthn":"You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

\n 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":"Lost your device?","recover_your_account":"Recover your account","account_recovery":"Account recovery","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.","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","register_a_new_device":"Register a new 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.","invalid_recovery_token":"Invalid recovery token","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.
\n 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":"Set at least one device to enable these options","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.
\n This has no effect if you only use WebAuthn."}},"forms":{"name":"Name","login":"Login","webauthn_login":"WebAuthn login","email":"Email","password":"Password","confirm_password":"Confirm password","confirm_new_password":"Confirm new password","dont_have_account_yet":"Don't have your account yet?","already_register":"Already registered?","authentication_failed":"Authentication failed","forgot_your_password":"Forgot your password?","request_password_reset":"Reset it","reset_password":"Reset password","disabled_in_demo":"Feature disabled in Demo mode","new_password":"New password","current_password":{"label":"Current password","help":"Fill in your current password to confirm that it's you"},"change_password":"Change password","send_password_reset_link":"Send password reset link","password_successfully_changed":"Password successfully changed","edit_account":"Edit account","profile_saved":"Profile successfully updated!","welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","welcome_to_testing_app_use_those_credentials":"Welcome to the 2FAuth testing instance.

Use email address testing@2fauth.app and password password","register_punchline":"Welcome to 2FAuth.
You need an account to go further. Fill this form to register yourself, and please, choose a strong password, 2FA data are sensitives.","reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password.","name_this_device":"Name this device","delete_account":"Delete account","delete_your_account":"Delete your account","delete_your_account_and_reset_all_data":"This will reset 2FAuth. Your user account will be deleted as well as all 2FA data. There is no going back.","user_account_successfully_deleted":"User account successfully deleted"}},"commons":{"cancel":"Cancel","update":"Update","copy":"Copy","copy_to_clipboard":"Copy to clipboard","copied_to_clipboard":"Copied to clipboard","profile":"Profile","edit":"Edit","delete":"Delete","disable":"Disable","enable":"Enable","create":"Create","save":"Save","close":"Close","demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","testing_do_not_post_sensitive_data":"This is a testing app, do not post any sensitive data","selected":"selected","name":"Name","manage":"Manage","done":"Done","new":"New","back":"Back","move":"Move","all":"All","rename":"Rename","new_name":"New name","options":"Options","reload":"Reload","some_data_have_changed":"Some data have changed. You should","generate":"Generate","open_in_browser":"Open in browser","continue":"Continue","discard":"Discard"},"errors":{"resource_not_found":"Resource not found","error_occured":"An error occured:","cannot_register_more_user":"You cannot register more than one user.","refresh":"Refresh","no_valid_otp":"No valid OTP resource in this QR code","something_wrong_with_server":"Something is wrong with your server","Unable_to_decrypt_uri":"Unable to decrypt uri","not_a_supported_otp_type":"This OTP format is not currently supported","cannot_create_otp_without_secret":"Cannot create an OTP without a secret","data_of_qrcode_is_not_valid_URI":"The data of this QR code is not a valid OTP Auth URI:","wrong_current_password":"Wrong current password, nothing has changed","error_during_encryption":"Encryption failed, your database remains unprotected.","error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","qrcode_cannot_be_read":"This QR code is unreadable","too_many_ids":"too many ids were included in the query parameter, max 100 allowed","delete_user_setting_only":"Only user-created setting can be deleted","indecipherable":"*indecipherable*","cannot_decipher_secret":"The secret cannot be deciphered. This is mainly caused by a wrong APP_KEY set in the .env configuration file of 2Fauth or a corrupted data stored in database.","https_required":"HTTPS context required","browser_does_not_support_webauthn":"Your device does not support webauthn. Try again later using a more modern browser","aborted_by_user":"Aborted by user","security_device_unsupported":"Security device unsupported","unsupported_with_reverseproxy":"Not applicable when using an auth proxy","user_deletion_failed":"User account deletion failed, no data have been deleted","auth_proxy_failed":"Proxy authentication failed","auth_proxy_failed_legend":"2Fauth is configured to run behind an authentication proxy but your proxy does not return the expected header. Check your configuration and try again.","invalid_google_auth_migration":"Invalid or unreadable Google Authenticator data","unsupported_otp_type":"Unsupported OTP type"},"groups":{"groups":"Groups","create_group":"Create new group","select_accounts_to_show":"Select accounts to show","manage_groups":"Manage groups","active_group":"Active group","manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","move_selected_to":"Move selected to","no_group":"No group","forms":{"new_group":"New group","new_name":"New name","rename_group":"Rename group"},"confirm":{"delete":"Are you sure you want to delete this group?"}},"languages":{"browser_preference":"Browser preference","en":"English","fr":"French","de":"German"},"pagination":{"previous":"« Previous","next":"Next »"},"passwords":{"reset":"Your password has been reset!","sent":"We have emailed your password reset link!","throttled":"Please wait before retrying.","token":"This password reset token is invalid.","user":"We can't find a user with that email address.","password":"Passwords must be at least eight characters and match the confirmation."},"settings":{"settings":"Settings","account":"Account","oauth":"OAuth","webauthn":"WebAuthn","tokens":"Tokens","options":"Options","confirm":{"revoke":"Are you sure you want to revoke this token?"},"general":"General","security":"Security","profile":"Profile","change_password":"Change password","personal_access_tokens":"Personal access tokens","token_legend":"Personal Access Tokens allow any app to authenticate to the 2Fauth API. You should specify the access token as a Bearer token in the authorization header of consumer apps requests.","generate_new_token":"Generate a new token","revoke":"Revoke","token_revoked":"Token successfully revoked","revoking_a_token_is_permanent":"Revoking a token is permanent","make_sure_copy_token":"Make sure to copy your personal access token now. You won’t be able to see it again!","data_input":"Data input","forms":{"edit_settings":"Edit settings","setting_saved":"Settings saved","new_token":"New token","some_translation_are_missing":"Some translations are missing using the browser preferred language?","help_translate_2fauth":"Help translate 2FAuth","language":{"label":"Language","help":"Language used to translate the 2FAuth user interface. Named languages are complete, set the one of your choice to override your browser preference."},"show_otp_as_dot":{"label":"Show generated one-time passwords as dot","help":"Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."},"close_otp_on_copy":{"label":"Close OTP after copy","help":"Automatically close the popup showing the generated password after it has been copied"},"use_basic_qrcode_reader":{"label":"Use basic QR code reader","help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader"},"display_mode":{"label":"Display mode","help":"Choose whether you want accounts to be displayed as a list or as a grid"},"grid":"Grid","list":"List","show_accounts_icons":{"label":"Show icons","help":"Show icons accounts in the main view"},"auto_lock":{"label":"Auto lock","help":"Log out the user automatically in case of inactivity. Has no effect when authentication is handled by a proxy and no custom logout url is specified."},"use_encryption":{"label":"Protect sensible data","help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key."},"default_group":{"label":"Default group","help":"The group to which the newly created accounts are associated"},"useDirectCapture":{"label":"Direct input","help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode"},"defaultCaptureMode":{"label":"Default input mode","help":"Default input mode used when the Direct input option is On"},"remember_active_group":{"label":"Remember group filter","help":"Save the last group filter applied and restore it on your next visit"},"never":"Never","on_otp_copy":"On security code copy","1_minutes":"After 1 minute","5_minutes":"After 5 minutes","10_minutes":"After 10 minutes","15_minutes":"After 15 minutes","30_minutes":"After 30 minutes","1_hour":"After 1 hour","1_day":"After 1 day","livescan":"QR code livescan","upload":"QR code upload","advanced_form":"Advanced form"}},"titles":{"404":"Item not found","start":"New account","capture":"Flash QR","accounts":"Accounts","createAccount":"Create account","importAccounts":"Import accounts","editAccount":"Account edit","showQRcode":"Account as QR code","groups":"Groups","createGroup":"Create group","editGroup":"Group edit","settings":{"options":"Options","account":"User account","oauth":{"tokens":"OAuth tokens","generatePAT":"New personal token"},"webauthn":{"editCredential":"Device edit","devices":"WebAuthn devices"}},"login":"Login","register":"Register","autolock":"Auto lock","password":{"request":"Reset password","reset":"New password"},"webauthn":{"lost":"Account recovery","recover":"Register a new device"},"flooded":"Flood","genericError":"Error"},"twofaccounts":{"service":"Service","account":"Account","accounts":"Accounts","icon":"Icon","no_account_here":"No 2FA here!","add_first_account":"Add your first account","use_full_form":"Or use the full form","add_one":"Add one","show_qrcode":"Show QR code","no_service":"- no service -","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"John DOE"},"new_account":"New account","edit_account":"Edit account","otp_uri":"OTP Uri","scan_qrcode":"Scan a QR code","upload_qrcode":"Upload a QR code","use_advanced_form":"Use the advanced form","prefill_using_qrcode":"Prefill using a QR Code","use_qrcode":{"val":"Use a qrcode","title":"Use a QR code to fill the form magically"},"unlock":{"val":"Unlock","title":"Unlock it (at your own risk)"},"lock":{"val":"Lock","title":"Lock it"},"choose_image":"Choose an image…","test":"Test","secret":{"label":"Secret","help":"The key used to generate your security codes"},"plain_text":"Plain text","otp_type":{"label":"Choose the type of OTP to create","help":"Time-based OTP or HMAC-based OTP"},"digits":{"label":"Digits","help":"The number of digits of the generated security codes"},"algorithm":{"label":"Algorithm","help":"The algorithm used to secure your security codes"},"period":{"label":"Period","placeholder":"Default is 30","help":"The period of validity of the generated security codes in second"},"counter":{"label":"Counter","placeholder":"Default is 0","help":"The initial counter value","help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing"},"image":{"label":"Image","placeholder":"http://...","help":"The url of an external image to use as the account icon"},"options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","alternative_methods":"Alternative methods"},"stream":{"live_scan_cant_start":"Live scan can't start :(","need_grant_permission":{"reason":"2FAuth does not have permission to access your camera","solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission."},"not_readable":{"reason":"Fail to load scanner","solution":"Is the camera already in use? Ensure that no other app use your camera and try again"},"no_cam_on_device":{"reason":"No camera on this device","solution":"Maybe you forgot to plug in your webcam"},"secured_context_required":{"reason":"Secure context required","solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost"},"https_required":"HTTPS required for camera streaming","camera_not_suitable":{"reason":"Installed cameras are not suitable","solution":"Please use another device/camera"},"stream_api_not_supported":{"reason":"Stream API is not supported in this browser","solution":"You should use a modern browser"}},"confirm":{"delete":"Are you sure you want to delete this account?","cancel":"The account will be lost. Are you sure?","discard":"Are you sure you want to discard this account?","discard_all":"Are you sure you want to discard all accounts?","discard_duplicates":"Are you sure you want to discard all duplicates?"},"import":{"import":"Import","to_import":"Import","import_legend":"Import your Google Authenticator accounts.","use_the_gauth_qr_code":"Load a G-Auth QR code","issuer":"Issuer","imported":"Imported","failure":"Failure","x_valid_accounts_found":"{count} valid accounts found","import_all":"Import all","import_this_account":"Import this account","discard_all":"Discard all","discard_duplicates":"Discard duplicates","discard_this_account":"Discard this account","generate_a_test_password":"Generate a test pasword","possible_duplicate":"An account with the exact same data already exists"}},"validation":{"accepted":"The :attribute must be accepted.","accepted_if":"The :attribute must be accepted when :other is :value.","active_url":"The :attribute is not a valid URL.","after":"The :attribute must be a date after :date.","after_or_equal":"The :attribute must be a date after or equal to :date.","alpha":"The :attribute may only contain letters.","alpha_dash":"The :attribute may only contain letters, numbers, dashes and underscores.","alpha_num":"The :attribute may only contain letters and numbers.","array":"The :attribute must be an array.","before":"The :attribute must be a date before :date.","before_or_equal":"The :attribute must be a date before or equal to :date.","between":{"numeric":"The :attribute must be between :min and :max.","file":"The :attribute must be between :min and :max kilobytes.","string":"The :attribute must be between :min and :max characters.","array":"The :attribute must have between :min and :max items."},"boolean":"The :attribute field must be true or false.","confirmed":"The :attribute confirmation does not match.","current_password":"The password is incorrect.","date":"The :attribute is not a valid date.","date_equals":"The :attribute must be a date equal to :date.","date_format":"The :attribute does not match the format :format.","declined":"The :attribute must be declined.","declined_if":"The :attribute must be declined when :other is :value.","different":"The :attribute and :other must be different.","digits":"The :attribute must be :digits digits.","digits_between":"The :attribute must be between :min and :max digits.","dimensions":"The :attribute has invalid image dimensions.","distinct":"The :attribute field has a duplicate value.","email":"The :attribute must be a valid email address.","ends_with":"The :attribute must end with one of the following: :values.","exists":"The selected :attribute is invalid.","file":"The :attribute must be a file.","filled":"The :attribute field must have a value.","gt":{"numeric":"The :attribute must be greater than :value.","file":"The :attribute must be greater than :value kilobytes.","string":"The :attribute must be greater than :value characters.","array":"The :attribute must have more than :value items."},"gte":{"numeric":"The :attribute must be greater than or equal :value.","file":"The :attribute must be greater than or equal :value kilobytes.","string":"The :attribute must be greater than or equal :value characters.","array":"The :attribute must have :value items or more."},"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":{"numeric":"The :attribute must be less than :value.","file":"The :attribute must be less than :value kilobytes.","string":"The :attribute must be less than :value characters.","array":"The :attribute must have less than :value items."},"lte":{"numeric":"The :attribute must be less than or equal :value.","file":"The :attribute must be less than or equal :value kilobytes.","string":"The :attribute must be less than or equal :value characters.","array":"The :attribute must not have more than :value items."},"max":{"numeric":"The :attribute may not be greater than :max.","file":"The :attribute may not be greater than :max kilobytes.","string":"The :attribute may not be greater than :max characters.","array":"The :attribute may not have more than :max items."},"mimes":"The :attribute must be a file of type: :values.","mimetypes":"The :attribute must be a file of type: :values.","min":{"numeric":"The :attribute must be at least :min.","file":"The :attribute must be at least :min kilobytes.","string":"The :attribute must be at least :min characters.","array":"The :attribute must have at least :min items."},"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":"The password is incorrect.","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_if":"The :attribute field is required when :other is :value.","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":{"numeric":"The :attribute must be :size.","file":"The :attribute must be :size kilobytes.","string":"The :attribute must be :size characters.","array":"The :attribute must contain :size items."},"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 zone.","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":{"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."},"name":{"firstUser":"There is already a registered user"}},"attributes":[]}},"es":{"auth":{"failed":"Estas credenciales no coinciden con nuestros registros.","password":"La contraseña proporcionada es incorrecta.","throttle":"Demasiados intentos de acceso. Por favor intente nuevamente en :seconds segundos.","sign_out":"Cerrar sesión","sign_in":"Iniciar sesión","sign_in_using":"Inicia sesión, usando","login_and_password":"usuario y contraseña","register":"Registrarse","welcome_back_x":"Bienvenido/a otra vez {0}","autolock_triggered":"Auto lock triggered","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.","already_authenticated":"Ya está autenticado","authentication":"Autenticación","maybe_later":"Quizás más tarde","user_account_controlled_by_proxy":"Cuenta de usuario disponible por un proxy de autenticación.
Administra la cuenta a nivel de proxy.","auth_handled_by_proxy":"Autenticación administrada por un proxy inverso, las configuraciones de abajo están deshabilitadas.
Gestionar autenticación a nivel proxy.","confirm":{"logout":"¿Seguro que quieres cerrar la sesión?","revoke_device":"¿Está seguro que quiere eliminar este dispositivo?","delete_account":"¿Está seguro que desea eliminar su cuenta?"},"webauthn":{"security_device":"un dispositivo de seguridad","security_devices":"Dispositivos de seguridad","security_devices_legend":"Dispositivos de autenticación que pude usar para iniciar sesión en 2FAuth, como: llaves de seguridad (ej. Yubikey) o smartphones con capacidades biométricas (ej. Apple FaceID/TouchID)","enhance_security_using_webauthn":"Puede mejorar la seguridad de su cuenta 2FAuth activando la autenticación WebAuthn.

\n WebAuthn permite el uso de dispositivos de confianza (como, Yubikeys o smartphones con capacidades biométricas) para iniciar sesión rápidamente y de forma más segura.","use_security_device_to_sign_in":"Prepárese para autenticarse usando (uno) de sus dispositivos de seguridad. Conecte su llave, retirar máscaras o guantes, etc.","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.","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","register_a_new_device":"Registrar un nuevo 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.","invalid_recovery_token":"Token de recuperación inválido","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.
\n 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.
\n Esto no tiene efecto si sólo utiliza WebAuthn."}},"forms":{"name":"Nombre","login":"Iniciar sesión","webauthn_login":"Inicio de sesión WebAuthn","email":"E-mail","password":"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?","already_register":"¿Ya te has registrado?","authentication_failed":"La autenticación ha fallado","forgot_your_password":"¿Olvidó su contraseña?","request_password_reset":"Reiniciarlo","reset_password":"Restablecer contraseña","disabled_in_demo":"Característica desactivada en el modo Demo","new_password":"Nueva contraseña","current_password":{"label":"Contraseña actual","help":"Introduzca su contraseña actual para confirmar que es usted"},"change_password":"Cambiar Contraseña","send_password_reset_link":"Enviar enlace para restablecer contraseña","password_successfully_changed":"Contraseña cambiada correctamente","edit_account":"Editar cuenta","profile_saved":"¡Perfil actualizado con éxito!","welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","welcome_to_testing_app_use_those_credentials":"Welcome to the 2FAuth testing instance.

Use email address testing@2fauth.app and password password","register_punchline":"Bienvenido a 2FAuth.
Necesita una cuenta para ir más allá. Rellene este formulario para registrarse y, por favor, elija una contraseña fuerte, los datos de 2FA son sensibles.","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"}},"commons":{"cancel":"Cancelar","update":"Actualizar","copy":"Copiar","copy_to_clipboard":"Copiar al portapapeles","copied_to_clipboard":"Copiado al portapapeles","profile":"Perfil","edit":"Editar","delete":"Eliminar","disable":"Desactivar","enable":"Activar","create":"Crear","save":"Guardar","close":"Cerrar","demo_do_not_post_sensitive_data":"Esta instancia es para demostracion, no ingrese informacion privada","testing_do_not_post_sensitive_data":"This is a testing app, do not post any sensitive data","selected":"seleccionado","name":"Nombre","manage":"Configurar","done":"Hecho","new":"Nuevo","back":"Volver","move":"Mover","all":"Todo","rename":"Renombrar","new_name":"Nuevo nombre","options":"Opciones","reload":"Recargar","some_data_have_changed":"Algunos datos han cambiado. Debería","generate":"Generar","open_in_browser":"Abrir en el navegador","continue":"Continuar","discard":"Discard"},"errors":{"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":"Los datos de este código QR no son una URI OTP de autenticación válida:","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.","qrcode_cannot_be_read":"Este código QR no se puede leer","too_many_ids":"demasiado ids fueron incluidos en los parámetros de consulta, máx. 100 permitidos","delete_user_setting_only":"Sólo los ajustes creados por el usuario pueden ser eliminados","indecipherable":"*indescifrable*","cannot_decipher_secret":"The clave secreta no puede ser descifrada. Esto es, principalmente, causado por una APP_KEY inválida en el archivo de configuración .env de 2FAuth, o datos corruptos almacenados en la base de datos.","https_required":"Requerido HTTPS Contexto","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","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_google_auth_migration":"Invalid or unreadable Google Authenticator data","unsupported_otp_type":"Unsupported OTP type"},"groups":{"groups":"Grupos","create_group":"Crear nuevo grupo","select_accounts_to_show":"Seleccionar cuentas para mostrar","manage_groups":"Gestionar grupos","active_group":"Grupo activo","manage_groups_legend":"Puede crear grupos para organizar sus cuentas de la manera que desee. 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","no_group":"Sin grupo","forms":{"new_group":"Nuevo grupo","new_name":"Nuevo nombre","rename_group":"Renombrar grupo"},"confirm":{"delete":"¿Está seguro que desea eliminar este grupo?"}},"languages":{"browser_preference":"Preferencia del navegador","en":"Inglés","fr":"Francés","de":"Alemán"},"pagination":{"previous":"« Anterior","next":"Siguiente »"},"passwords":{"reset":"¡Su contraseña ha sido restablecida!","sent":"¡Te hemos enviado por correo el enlace para restablecer tu contraseña!","throttled":"Por favor, espere antes de intentar de nuevo.","token":"El token de recuperación de contraseña es inválido.","user":"No podemos encontrar ningún usuario con ese correo electrónico.","password":"La contraseña debe tener al menos ocho caracteres, y coincidir con la confirmación de contraseña."},"settings":{"settings":"Ajustes","account":"Cuenta","oauth":"OAuth","webauthn":"WebAuthn","tokens":"Tokens","options":"Opciones","confirm":{"revoke":"¿Está seguro que desea revocar este token?"},"general":"General","security":"Seguridad","profile":"Perfil","change_password":"Cambiar contraseña","personal_access_tokens":"Tokens de acceso personal","token_legend":"Los Tokens de Acceso Personal, permiten a cualquier aplicación autenticarse con la API de 2FAuth. Debe especificar el token de acceso como Bearer Token en la cabecera de autorización de aplicaciones de tercero.","generate_new_token":"Generar nuevo token","revoke":"Revocar","token_revoked":"Token revocado correctamente","revoking_a_token_is_permanent":"Revocar un token es permanente","make_sure_copy_token":"Asegúrese de copiar su token de acceso personal ahora. ¡No podrá volver a verlo!","data_input":"Introducción de datos","forms":{"edit_settings":"Modificar ajustes","setting_saved":"Ajustes guardados","new_token":"Nuevo token","some_translation_are_missing":"¿Faltan algunas traducciones utilizando el idioma preferido por el navegador?","help_translate_2fauth":"Ayude a traducir 2FAuth","language":{"label":"Idioma","help":"Idioma utilizado para traducir la interfaz de usuario de 2FAuth. Los idiomas listados están completos, establezca el idioma de su elección para reemplazar las preferencias de su navegador."},"show_otp_as_dot":{"label":"Mostrar contraseñas generadas de un solo uso como punto","help":"Sustituya los carácteres de la contraseña generados por *** para asegurar la confidencialidad. No afecta a la función de copiar/pegar."},"close_otp_on_copy":{"label":"Cerrar token después de copiarlo","help":"Cerrar automáticamente la ventana emergente mostrando el token generado después de haber sido copiado"},"use_basic_qrcode_reader":{"label":"Usar lector de código QR básico","help":"Si experimenta problemas al capturar códigos QR habilite esta opción para cambiar a un lector de código QR más básico, pero más fiable"},"display_mode":{"label":"Modo de visualización","help":"Elija si desea que las cuentas se muestren como una lista o como una cuadrícula"},"grid":"Cuadrícula","list":"Lista","show_accounts_icons":{"label":"Mostrar iconos","help":"Mostar iconos de aplicaciones en la vista principal"},"auto_lock":{"label":"Bloqueo automático","help":"Cerrar sesión del usuario automáticamente en caso de inactividad. No tiene efecto cuando la autenticación es manejada por un proxy, ni cuando ninguna url de cierre de sesión personalizada se especificada."},"use_encryption":{"label":"Proteger los datos confidenciales","help":"Los datos sensibles, las claves secretas y correos electrónicos de 2FA, se almacenan cifrados en la base de datos. Asegúrese de respaldar el valor de APP_KEY de su archivo .env (o el archivo entero), pues, sirve como clave de cifrado. No hay forma de descifrar datos encriptados sin esta clave."},"default_group":{"label":"Grupo por defecto","help":"El grupo al que las cuentas recién creadas están asociadas"},"useDirectCapture":{"label":"Entrada directa","help":"Elija si desea que se le pida que elija un modo de entrada entre los disponibles o si desea utilizar directamente el modo de entrada por defecto"},"defaultCaptureMode":{"label":"Modo de entrada de datos por defecto","help":"Modo de entrada predeterminado usado cuando la opción de entrada directa está encendida"},"remember_active_group":{"label":"Recordar filtro de grupo","help":"Guardar el último filtro de grupo aplicado y restaurarlo en su próxima visita"},"never":"Nunca","on_otp_copy":"Al copiar código de seguridad","1_minutes":"Después de 1 minuto","5_minutes":"Después de 5 minutos","10_minutes":"Después de 10 minutos","15_minutes":"Después de 15 minutos","30_minutes":"Después de 30 minutos","1_hour":"Después de 1 hora","1_day":"Después de 1 día","livescan":"Escaneo código QR","upload":"Subida de código QR","advanced_form":"Formulario avanzado"}},"titles":{"404":"Item not found","start":"New account","capture":"Flash QR","accounts":"Accounts","createAccount":"Create account","importAccounts":"Import accounts","editAccount":"Account edit","showQRcode":"Account as QR code","groups":"Groups","createGroup":"Create group","editGroup":"Group edit","settings":{"options":"Options","account":"User account","oauth":{"tokens":"OAuth tokens","generatePAT":"New personal token"},"webauthn":{"editCredential":"Device edit","devices":"WebAuthn devices"}},"login":"Login","register":"Register","autolock":"Auto lock","password":{"request":"Reset password","reset":"New password"},"webauthn":{"lost":"Account recovery","recover":"Register a new device"},"flooded":"Flood","genericError":"Error"},"twofaccounts":{"service":"Servicio","account":"Cuenta","accounts":"Cuentas","icon":"Icono","no_account_here":"¡No hay 2FA aquí!","add_first_account":"Agrega tu primera cuenta","use_full_form":"O usa el formulario completo","add_one":"Agregar uno","show_qrcode":"Muestra el código QR","no_service":"- sin servicio -","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"John DOE"},"new_account":"Nueva cuenta","edit_account":"Editar cuenta","otp_uri":"OTP Uri","scan_qrcode":"Escanear un código QR","upload_qrcode":"Subir un código QR","use_advanced_form":"Usar el formulario avanzado","prefill_using_qrcode":"Rellenar usando un código QR","use_qrcode":{"val":"Usar un código QR","title":"Usa un código QR para rellenar mágicamente el formulario"},"unlock":{"val":"Desbloquear","title":"Desbloquearlo (bajo su propio riesgo)"},"lock":{"val":"Bloquear","title":"Bloquearlo"},"choose_image":"Seleccionar una imagen…","test":"Test","secret":{"label":"Secreto","help":"La clave utilizada para generar sus códigos de seguridad"},"plain_text":"Texto plano","otp_type":{"label":"Elija el tipo de OTP a crear","help":"OTP basado en tiempo, u OTP basado en HMAC"},"digits":{"label":"Dígitos","help":"El número de dígitos del código de seguridad generado"},"algorithm":{"label":"Algorítmo","help":"El algoritmo usado para proteger sus códigos de seguridad"},"period":{"label":"Periodo","placeholder":"Por defecto es 30","help":"Periodo de validez de los códigos se seguridad generados, en segundos"},"counter":{"label":"Contador","placeholder":"Por defecto es 0","help":"El valor inicial del contador","help_lock":"Es arriesgado editar el contador, ya que puede desincronizar la cuenta con el servidor de verificación del servicio. Utilice el icono de bloqueo para habilitar la modificación, pero solo si sabe lo que está haciendo"},"image":{"label":"Imágen","placeholder":"http://...","help":"La url de una imagen externa a usar como icono de cuenta"},"options_help":"Puede dejar las siguientes opciones en blanco si no sabe cómo establecerlas. Los valores más utilizados se aplicarán.","alternative_methods":"Métodos alternativos"},"stream":{"live_scan_cant_start":"Live scan no puede comenzar :(","need_grant_permission":{"reason":"2FAuth no tiene permiso para acceder a tu cámara","solution":"Necesitas conceder permiso para usar la cámara de tu dispositivo. Si ya lo ha denegado y su navegador no le preguntan de nuevo, por favor refiérase a la documentación del navegador para averiguar cómo conceder permisos."},"not_readable":{"reason":"Fallo al cargar el escáner","solution":"¿La cámara ya está en uso? Asegúrate de que ninguna otra aplicación use tu cámara e inténtalo de nuevo"},"no_cam_on_device":{"reason":"No se encontraron cámaras en este dispositivo","solution":"Maybe you forgot to plug in your webcam"},"secured_context_required":{"reason":"Requiere contexto seguro","solution":"HTTPS es necesario para escanear en vivo. Si ejecuta 2FAuth desde su computadora, no utilice un host virtual distinto de localhost"},"https_required":"HTTPS requerido para la transmisión de la cámara","camera_not_suitable":{"reason":"Las cámaras instaladas no son apropiadas","solution":"Por favor usa otro dispositivo/cámara"},"stream_api_not_supported":{"reason":"Stream API no está soportado en este navegador","solution":"Deberías usar un navegador moderno"}},"confirm":{"delete":"¿Está seguro que desea eliminar esta cuenta?","cancel":"La cuenta será eliminada. ¿Estás seguro?","discard":"Are you sure you want to discard this account?","discard_all":"Are you sure you want to discard all accounts?","discard_duplicates":"Are you sure you want to discard all duplicates?"},"import":{"import":"Import","to_import":"Import","import_legend":"Import your Google Authenticator accounts.","use_the_gauth_qr_code":"Load a G-Auth QR code","issuer":"Issuer","imported":"Imported","failure":"Failure","x_valid_accounts_found":"{count} valid accounts found","import_all":"Import all","import_this_account":"Import this account","discard_all":"Discard all","discard_duplicates":"Discard duplicates","discard_this_account":"Discard this account","generate_a_test_password":"Generate a test pasword","possible_duplicate":"An account with the exact same data already exists"}},"validation":{"accepted":":attribute debe ser aceptado.","accepted_if":":attribute debe ser aceptado cuando :other sea :value.","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.","array":":attribute debe ser un conjunto.","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."},"boolean":"El campo :attribute debe tener un valor verdadero o falso.","confirmed":"La confirmación de :attribute no coincide.","current_password":"La contraseña es incorrecta.","date":":attribute no es una fecha válida.","date_equals":":attribute debe ser una fecha igual a :date.","date_format":":attribute no corresponde al formato :format.","declined":":attribute debe ser rechazado.","declined_if":":attribute debe ser rechazado cuando :other sea :value.","different":":attribute y :other deben ser diferentes.","digits":":attribute debe tener :digits dígitos.","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.","email":":attribute no es un correo válido.","ends_with":"El campo :attribute debe finalizar con uno de los siguientes valores: :values","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."},"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."},"image":":attribute debe ser una imagen.","in":":attribute es inválido.","in_array":"El campo :attribute no existe en :other.","integer":":attribute debe ser un número entero.","ip":":attribute debe ser una dirección IP válida.","ipv4":":attribute debe ser una dirección IPv4 válida.","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."},"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."},"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."},"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."},"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.","present":"El campo :attribute debe estar presente.","prohibited":"El campo :attribute está prohibido.","prohibited_if":"El campo :attribute está prohibido cuando :other es :value.","prohibited_unless":"El campo :attribute está prohibido a menos que :other sea :values.","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_if":"El campo :attribute es obligatorio cuando :other es :value.","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.","required_without":"El campo :attribute es obligatorio cuando :values no está presente.","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."},"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.","unique":"El campo :attribute ya ha sido registrado.","uploaded":"Subir :attribute ha fallado.","url":":attribute debe ser una URL válida.","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","onlyCustomOtpWithUri":"The uri parameter must be provided alone or only in combination with the 'custom_otp' parameter","custom":{"icon":{"image":"Los formatos soportados son: jpeg, png, bmp, gif, svg o webp."},"qrcode":{"image":"Los formatos soportados son: jpeg, png, bmp, gif, svg o webp."},"uri":{"regex":":attribute no es una otpauth uri válida."},"otp_type":{"in":":attribute no está soportado."},"email":{"exists":"No se ha encontrado ninguna cuenta con este correo electrónico."},"secret":{"isBase32Encoded":":attribute debe ser una cadena codificada en base32."},"account":{"regex":":attribute no debe contener dos puntos."},"service":{"regex":":attribute no debe contener dos puntos."},"label":{"required":"La uri debe tener una etiqueta."},"ids":{"regex":"Los IDs deben estar separados por comas, sin comas finales."},"name":{"firstUser":"Ya hay un usuario registrado"}},"attributes":[]}},"fr":{"auth":{"failed":"Ces identifiants ne correspondent pas à nos enregistrements","password":"Le mot de passe saisi est incorrect.","throttle":"Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.","sign_out":"Déconnexion","sign_in":"Se connecter","sign_in_using":"Se connecter en utilisant","login_and_password":"login & mot de passe","register":"Créer un compte","welcome_back_x":"Bienvenue {0}","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.","already_authenticated":"Déjà authentifié","authentication":"Authentification","maybe_later":"Peut-être plus tard","user_account_controlled_by_proxy":"Compte utilisateur mis à disposition par un proxy d'authentification.
Gérer le compte au niveau du proxy.","auth_handled_by_proxy":"Authentification gérée par un proxy inverse, les paramètres ci-dessous sont désactivés.
Gérer l'authentification au niveau du proxy.","confirm":{"logout":"Etes-vous sûrs de vouloir vous déconnecter ?","revoke_device":"Voulez-vous vraiment supprimer cet appareil ?","delete_account":"Voulez-vous vraiment supprimer votre compte ?"},"webauthn":{"security_device":"un périphérique de sécurité","security_devices":"Périphériques de sécurité","security_devices_legend":"Périphériques d'authentification que vous pouvez utiliser pour vous connecter à 2FAuth, comme des clés de sécurité (ex : YubiKey) ou des smartphones dotés de capacités biométriques (ex : Apple FaceId/TouchId)","enhance_security_using_webauthn":"Vous pouvez améliorer la sécurité de votre compte 2FAuth en activant l'authentification WebAuthn.

\n WebAuthn vous permet d'utiliser des appareils de confiance (comme des Yubikeys ou des smartphones dotés de capacités biométriques) pour vous connecter rapidement et de manière plus sécurisée.","use_security_device_to_sign_in":"Préparez-vous à vous authentifier en utilisant un de vos dispositifs de sécurité. Branchez votre clé, retirez votre masque ou vos gants, etc.","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.","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","register_a_new_device":"Ajouter un nouveau 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.","invalid_recovery_token":"Jeton de sécurité invalide","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.
\n 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."},"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.
\n Ceci est sans effet si vous utilisez uniquement WebAuthn."}},"forms":{"name":"Nom","login":"Connexion","webauthn_login":"Connexion WebAuthn","email":"Email","password":"Mot de passe","confirm_password":"Confirmez le mot de passe","confirm_new_password":"Confirmez le nouveau mot de passe","dont_have_account_yet":"Pas encore de compte ?","already_register":"Déjà enregistré ?","authentication_failed":"Échec de l'authentification","forgot_your_password":"Mot de passe oublié ?","request_password_reset":"Réinitialisez-le","reset_password":"Mot de passe oublié","disabled_in_demo":"Fonctionnalité désactivée en mode Démo","new_password":"Nouveau mot de passe","current_password":{"label":"Mot de passe actuel","help":"Indiquez votre mot de passe actuel pour confirmer qu'il s'agit bien de vous"},"change_password":"Modifier le mot de passe","send_password_reset_link":"Envoyer","password_successfully_changed":"Mot de passe modifié avec succès","edit_account":"Mis à jour du profil","profile_saved":"Profil mis à jour avec succès !","welcome_to_demo_app_use_those_credentials":"Bienvenue sur la démo de 2FAuth.

Vous pouvez vous connecter en utilisant l'adresse email demo@2fauth.app et le mot de passe demo","welcome_to_testing_app_use_those_credentials":"Bienvenue sur l'instance de test 2FAuth.

Utilisez l'adresse e-mail testing@2fauth.app et mot de passe password","register_punchline":"Bienvenue sur 2FAuth.
Vous avez besoin d'un compte pour aller plus loin. Remplissez ce formulaire pour vous inscrire et, s'il vous plaît, choisissez un mot de passe fort, les données 2FA sont sensibles.","reset_punchline":"2FAuth vous enverra un lien de réinitialisation de mot de passe à cette adresse. Cliquez sur le lien dans l'e-mail reçu pour définir un nouveau mot de passe.","name_this_device":"Nommer ce périphérique","delete_account":"Supprimer le compte","delete_your_account":"Supprimer votre compte","delete_your_account_and_reset_all_data":"Cela réinitialisera 2FAuth. Votre compte utilisateur sera supprimé ainsi que toutes les données 2FA. Il est impossible de restaurer des données réinitialisées.","user_account_successfully_deleted":"Compte supprimé avec succès"}},"commons":{"cancel":"Annuler","update":"Mettre à jour","copy":"Copier","copy_to_clipboard":"Copier","copied_to_clipboard":"Copié dans le presse-papier","profile":"Profil","edit":"Modifier","delete":"Supprimer","disable":"Désactiver","enable":"Activer","create":"Créer","save":"Enregistrer","close":"Fermer","demo_do_not_post_sensitive_data":"Site de démonstration, ne postez aucune donnée sensible","testing_do_not_post_sensitive_data":"Site de test, ne postez aucune donnée sensible","selected":"selectionné(s)","name":"Nom","manage":"Gérer","done":"Terminé","new":"Nouveau","back":"Retour","move":"Déplacer","all":"Tous","rename":"Renommer","new_name":"Nouveau nom","options":"Options","reload":"Actualiser","some_data_have_changed":"Certaines données ont été modifiées. Vous devriez","generate":"Générer","open_in_browser":"Ouvrir dans votre navigateur","continue":"Continuer","discard":"Retirer"},"errors":{"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","Unable_to_decrypt_uri":"uri impossible à décoder","not_a_supported_otp_type":"Ce format OTP n'est pas supporté pour le moment","cannot_create_otp_without_secret":"Impossible de créer un OTP sans un secret","data_of_qrcode_is_not_valid_URI":"Les données de ce code QR ne forment pas une URI OTP Auth valide :","wrong_current_password":"Mot de passe actuel érroné, rien n\\a été modifié","error_during_encryption":"Le chiffrement a échoué, votre base de données reste non protégée.","error_during_decryption":"Le déchiffrement a échoué, votre base de données est toujours protégée. Ceci est principalement dû à un problème d'intégrité des données chiffrées pour un ou plusieurs comptes.","qrcode_cannot_be_read":"Ce QR code est illisible","too_many_ids":"trop d'IDs ont été inclus dans le paramètre de requête, max. 100 autorisés","delete_user_setting_only":"Seuls les paramètres créés par l'utilisateur peuvent être supprimés","indecipherable":"*indéchiffrable*","cannot_decipher_secret":"Le secret ne peut pas être déchiffré. Ceci est généralement causé par une valeur APP_KEY incorrecte définie dans le fichier de configuration .env de 2Fauth ou des données corrompues dans la base de données.","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","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","auth_proxy_failed_legend":"2Fauth est configuré pour fonctionner derrière un proxy d'authentification, mais votre proxy ne retourne pas l'en-tête attendu. Vérifiez votre configuration et réessayez.","invalid_google_auth_migration":"Données Google Authenticator invalides ou illisibles","unsupported_otp_type":"Type OTP non supporté"},"groups":{"groups":"Groupes","create_group":"Créer un nouveau groupe","select_accounts_to_show":"Sélectionnez les comptes à afficher","manage_groups":"Gérer les groupes","active_group":"Groupe actif","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","no_group":"Aucun groupe","forms":{"new_group":"Nouveau groupe","new_name":"Nouveau nom","rename_group":"Renommer le groupe"},"confirm":{"delete":"Êtes-vous sûr·e de vouloir supprimer ce groupe ?"}},"languages":{"browser_preference":"Préférence du navigateur","en":"Anglais","fr":"Français","de":"Allemand"},"pagination":{"previous":"« Précédent","next":"Suivant »"},"passwords":{"reset":"Votre mot de passe a été réinitialisé !","sent":"Nous vous avons envoyé par email le lien de réinitialisation du mot de passe !","throttled":"Veuillez patienter avant de réessayer.","token":"Ce jeton de réinitialisation du mot de passe n'est pas valide.","user":"Aucun utilisateur n'a été trouvé avec cette adresse email.","password":"Les mots de passe doivent contenir au moins huit caractères et être identiques."},"settings":{"settings":"Réglages","account":"Compte","oauth":"OAuth","webauthn":"WebAuthn","tokens":"Jetons","options":"Options","confirm":{"revoke":"Êtes-vous sûr(e) de vouloir révoquer ce jeton ?"},"general":"General","security":"Sécurité","profile":"Profil","change_password":"Changer le mot de passe","personal_access_tokens":"Jetons d'accès personnel","token_legend":"Les jetons d'accès personnels permettent à n'importe quelle application de s'authentifier à l'API 2Fauth. Vous devez fournir le jeton d'accès en tant que Bearer dans l'en-tête d'autorisation des requêtes de ces applications.","generate_new_token":"Générer un nouveau jeton","revoke":"Révoquer","token_revoked":"Jeton révoqué avec succès","revoking_a_token_is_permanent":"Révoquer un jeton est définitif","make_sure_copy_token":"Copier votre jeton d'accès personnel dès maintenant. Vous ne pourrez pas l'afficher à nouveau !","data_input":"Saisie des données","forms":{"edit_settings":"Modifier les réglages","setting_saved":"Réglages sauvegardés","new_token":"Nouveau jeton","some_translation_are_missing":"Certaines traductions sont manquantes en utilisant la langue préférée du navigateur ?","help_translate_2fauth":"Aidez à traduire 2FAuth","language":{"label":"Langue","help":"Langue utilisée pour traduire l'interface utilisateur de 2FAuth. Les langues proposées sont complètes, vous pouvez les utiliser pour remplacer la langue de référence de votre navigateur."},"show_otp_as_dot":{"label":"Afficher les mots de passe générés sous forme de point","help":"Remplace les caractères des mots de passe générés par des ●●● pour garantir leur confidentialité. N'affecte pas la fonction de copier/coller qui reste utilisable."},"close_otp_on_copy":{"label":"Ne plus afficher les mots de passe copiés","help":"Ferme automatiquement le popup affichant le mot de passe généré dès que ce dernier a été copié"},"use_basic_qrcode_reader":{"label":"Utiliser le lecteur de QR code basique","help":"Si vous rencontrez des problèmes lors de la lecture des QR codes activez cette option pour utiliser un lecteur de QR code moins évolué mais plus largement compatible"},"display_mode":{"label":"Mode d'affichage","help":"Change le mode d'affichage des comptes, soit sous forme de liste, soit sous forme de grille"},"grid":"Grille","list":"Liste","show_accounts_icons":{"label":"Afficher les icônes","help":"Affiche les icônes des comptes dans la vue principale"},"auto_lock":{"label":"Verrouillage automatique","help":"Déconnecte automatiquement l'utilisateur en cas d'inactivité. Est sans effet lorsque l'authentification est gérée par un proxy et qu'aucune URL de déconnexion personnalisée n'est configurée."},"use_encryption":{"label":"Protéger les données sensibles","help":"Les données sensibles, les secrets et les e-mails 2FA, sont stockés chiffrés dans la base de données. Assurez-vous de sauvegarder la valeur APP_KEY de votre fichier env (ou tout le fichier) car il sert de clé de chiffrement. Il n'y a aucun moyen de déchiffrer les données chiffrées sans cette clé."},"default_group":{"label":"Groupe par défaut","help":"Le groupe auquel sont associés les nouveaux comptes"},"useDirectCapture":{"label":"Saisie directe","help":"Choisissez si vous voulez être invité à choisir un mode de saisie parmi ceux disponibles ou si vous voulez utiliser directement le mode de saisie par défaut"},"defaultCaptureMode":{"label":"Mode de saisie par défaut","help":"Mode de saisie utilisé par défaut lorsque l'option Saisie directe est activée"},"remember_active_group":{"label":"Mémoriser le filtrage par groupe","help":"Enregistre le dernier groupe affiché et le restaure lors de votre prochaine visite"},"never":"Jamais","on_otp_copy":"Après copie d'un mot de passe","1_minutes":"Après 1 minute","5_minutes":"Après 5 minutes","10_minutes":"Après 10 minutes","15_minutes":"Après 15 minutes","30_minutes":"Après 30 minutes","1_hour":"Après 1 heure","1_day":"Après 1 journée","livescan":"Scanner avec la caméra","upload":"Téléchargement de QR code","advanced_form":"Formulaire avancé"}},"titles":{"404":"Élément non trouvé","start":"Nouveau compte","capture":"Flash un QR code","accounts":"Comptes","createAccount":"Créez un compte","importAccounts":"Importer des comptes","editAccount":"Édition du compte","showQRcode":"QR code du compte","groups":"Groupes","createGroup":"Créer un groupe","editGroup":"Édition du groupe","settings":{"options":"Options","account":"Compte utilisateur","oauth":{"tokens":"Jetons OAuth","generatePAT":"Nouveau jeton d'accès personnel"},"webauthn":{"editCredential":"Édition du périphérique","devices":"Périphériques WebAuthn"}},"login":"Connexion","register":"Inscription","autolock":"Verrouillage automatique","password":{"request":"Réinitialisation du mot de passe","reset":"Nouveau mot de passe"},"webauthn":{"lost":"Récupération du compte","recover":"Ajouter un nouveau périphérique"},"flooded":"Trop de tentatives","genericError":"Erreur"},"twofaccounts":{"service":"Service","account":"Compte","accounts":"Comptes","icon":"Icône","no_account_here":"Aucun compte 2FA !","add_first_account":"Ajouter votre premier compte","use_full_form":"Ou utiliser le formulaire détaillé","add_one":"Add one","show_qrcode":"Afficher le QR code","no_service":"- aucun service -","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"Marc Dupont"},"new_account":"Nouveau compte","edit_account":"Modifier le compte","otp_uri":"OTP Uri","scan_qrcode":"Scanner un QR code","upload_qrcode":"Uploader un QR code","use_advanced_form":"Utiliser le formulaire avancé","prefill_using_qrcode":"Préremplir à l'aide d'un QR Code","use_qrcode":{"val":"Utiliser un QR code","title":"Utiliser un QR code pour renseigner le formulaire d'un seul coup d'un seul"},"unlock":{"val":"Déverouiller","title":"Déverouiller le champ (à vos risques et périls)"},"lock":{"val":"Vérouiller","title":"Vérouiller le champ"},"choose_image":"Choisir une image…","test":"Tester","secret":{"label":"Secret","help":"La clé utilisée pour générer vos codes de sécurité"},"plain_text":"Texte brut","otp_type":{"label":"Choisissez le type d'OTP à créer","help":"Time-based OTP ou HMAC-based OTP"},"digits":{"label":"Nombre de chiffres","help":"Le nombre de chiffres des codes de sécurité générés"},"algorithm":{"label":"Algorithme","help":"L'algorithme utilisé pour sécuriser vos codes de sécurité"},"period":{"label":"Durée de validité","placeholder":"30 s par défaut","help":"La durée de validité des codes de sécurité générés, en seconde"},"counter":{"label":"Compteur","placeholder":"0 par défaut","help":"La valeur initiale du compteur","help_lock":"Il est risqué de modifier le compteur car vous pouvez désynchroniser le compte avec le serveur de vérification du service. Utilisez l'icône cadenas pour activer la modification, mais seulement si vous savez ce que vous faites"},"image":{"label":"Image","placeholder":"http://...","help":"L'URL d'une image externe à utiliser comme icône du compte"},"options_help":"Vous pouvez laisser les options suivantes non renseignées si vous ne savez pas comment les définir. Les valeurs les plus couramment utilisées seront appliquées.","alternative_methods":"Méthodes alternatives"},"stream":{"live_scan_cant_start":"Le scanner ne peut pas démarrer :(","need_grant_permission":{"reason":"2FAuth n'a pas la permission d'accéder à votre caméra","solution":"Vous devez autoriser l'utilisation de l'appareil photo de votre appareil. Si vous avez déjà refusé et que votre navigateur ne vous le demande plus, veuillez vous référer à la documentation du navigateur pour savoir comment accorder l’autorisation."},"not_readable":{"reason":"Impossible de charger le scanner","solution":"La caméra est-elle déjà en cours d'utilisation ? Assurez-vous qu'aucune autre application n'utilise votre appareil photo et réessayez"},"no_cam_on_device":{"reason":"Votre équipement ne dispose pas de caméra","solution":"Peut-être avez-vous oublié de brancher votre webcam"},"secured_context_required":{"reason":"Contexte sécurisé requis","solution":"Une connexion sécurisée HTTPS est requise pour utiliser le scanner. Si vous exécutez 2FAuth depuis votre ordinateur, n'utilisez pas d'hôte virtuel autre que localhost"},"https_required":"HTTPS requis pour utiliser la caméra","camera_not_suitable":{"reason":"Votre équipement ne dispose pas d'une caméra adaptée","solution":"Veuillez utiliser un autre appareil"},"stream_api_not_supported":{"reason":"L'API Stream n'est pas prise en charge dans ce navigateur","solution":"Vous devriez utiliser un navigateur moderne"}},"confirm":{"delete":"Etes-vous sûrs de vouloir supprimer le compte ?","cancel":"Les données seront perdues, êtes-vous sûrs ?","discard":"Êtes-vous sûrs de vouloir retirer ce compte ?","discard_all":"Êtes-vous sûrs de vouloir retirer tous les comptes ?","discard_duplicates":"Êtes-vous sûrs de vouloir retirer tous les doublons ?"},"import":{"import":"Import","to_import":"Importer","import_legend":"Importez vos comptes Google Authenticator.","use_the_gauth_qr_code":"Charger un QR code G-Auth","issuer":"Émetteur","imported":"Importé","failure":"Échec","x_valid_accounts_found":"{count} comptes valides trouvés","import_all":"Tout importer","import_this_account":"Importer ce compte","discard_all":"Tout retirer","discard_duplicates":"Retirer les doublons","discard_this_account":"Retirer ce compte","generate_a_test_password":"Générer un mot de passe de test","possible_duplicate":"Un compte avec les mêmes informations existe déjà"}},"validation":{"accepted":"Le champ :attribute doit être accepté.","accepted_if":"Le champ :attribute doit être accepté quand :other a la valeur :value.","active_url":"Le champ :attribute n'est pas une URL valide.","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_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."},"boolean":"Le champ :attribute doit être vrai ou faux.","confirmed":"Le champ de confirmation :attribute ne correspond pas.","current_password":"Le mot de passe est incorrect.","date":"Le champ :attribute n'est pas une date valide.","date_equals":"Le champ :attribute doit être une date égale à :date.","date_format":"Le champ :attribute ne correspond pas au format :format.","declined":"Le champ :attribute doit être décliné.","declined_if":"Le champ :attribute doit être décliné quand :other a la valeur :value.","different":"Les champs :attribute et :other doivent être différents.","digits":"Le champ :attribute doit contenir :digits chiffres.","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.","email":"Le champ :attribute doit être une adresse email valide.","ends_with":"Le champ :attribute doit se terminer par une des valeurs suivantes : :values","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."},"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."},"image":"Le champ :attribute doit être une image.","in":"Le champ :attribute est invalide.","in_array":"Le champ :attribute n'existe pas dans :other.","integer":"Le champ :attribute doit être un entier.","ip":"Le champ :attribute doit être une adresse IP valide.","ipv4":"Le champ :attribute doit être une adresse IPv4 valide.","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."},"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."},"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."},"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."},"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","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.","prohibited_unless":"Le champ :attribute est interdit à moins que :other est l'une des valeurs :values.","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_if":"Le champ :attribute est obligatoire quand la valeur de :other est :value.","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.","required_without":"Le champ :attribute est obligatoire quand :values n'est pas présent.","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."},"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.","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.","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","onlyCustomOtpWithUri":"Le paramètre uri doit être fourni seul ou seulement avec le paramètre 'custom_otp'","custom":{"icon":{"image":"Les formats acceptés sont jpeg, png, bmp, gif, svg, or webp."},"qrcode":{"image":"Les formats acceptés sont jpeg, png, bmp, gif, svg, or webp."},"uri":{"regex":"Le champ :attribute n'est pas une URI otpauth valide."},"otp_type":{"in":"Le champ :attribute n'est pas supporté."},"email":{"exists":"Aucun compte utilisateur n'utilise cet email."},"secret":{"isBase32Encoded":"Le :attribute doit être une chaîne encodée en base32"},"account":{"regex":"Le champ :attribute ne doit pas contenir de deux-points."},"service":{"regex":"Le champ :attribute ne doit pas contenir de deux-points."},"label":{"required":"L'URI doit avoir un label."},"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à"}},"attributes":[]}},"si":{"auth":{"failed":"මෙම අක්තපත්ර අපගේ වාර්තා වලට ගැලපෙන්නේ නැත.","password":"The provided password is incorrect.","throttle":"බොහෝ පිවිසුම් උත්සහයන් සිදු කර ඇත. කරුණාකර නැවත උත්සාහ කරන්න: තත්පර තත්පර.","sign_out":"වරන්න","sign_in":"පුරන්න","sign_in_using":"Sign in using","login_and_password":"login & password","register":"ලියාපදිංචි වන්න","welcome_back_x":"Welcome back {0}","autolock_triggered":"Auto lock triggered","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.","already_authenticated":"Already authenticated","authentication":"Authentication","maybe_later":"Maybe later","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.","confirm":{"logout":"Are you sure you want to log out?","revoke_device":"Are you sure you want to revoke this device?","delete_account":"Are you sure you want to delete your account?"},"webauthn":{"security_device":"a security device","security_devices":"Security devices","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)","enhance_security_using_webauthn":"You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

\n 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":"Lost your device?","recover_your_account":"Recover your account","account_recovery":"Account recovery","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.","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","register_a_new_device":"Register a new 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.","invalid_recovery_token":"Invalid recovery token","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.
\n 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":"Set at least one device to enable these options","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.
\n This has no effect if you only use WebAuthn."}},"forms":{"name":"නම","login":"පිවිසෙන්න","webauthn_login":"WebAuthn login","email":"විද්‍යුත් තැපෑල","password":"මුර පදය","confirm_password":"මුරපදය තහවුරු කරන්න","confirm_new_password":"නව මුර පදය තහවුරු කරන්න","dont_have_account_yet":"Don't have your account yet?","already_register":"දැනටමත් ලියාපදිංචි වී ඇත්ද ?","authentication_failed":"Authentication failed","forgot_your_password":"මුරපදය අමතක වුනාද?","request_password_reset":"නැවත සකසන්න","reset_password":"මුරපදය නැවත සකසන්න","disabled_in_demo":"Feature disabled in Demo mode","new_password":"නව මුරපදය","current_password":{"label":"වත්මන් මුරපදය","help":"Fill in your current password to confirm that it's you"},"change_password":"මුරපදය වෙනස් කරන්න","send_password_reset_link":"මුරපදය නැවත සැකසීමේ සබැඳිය යවන්න","password_successfully_changed":"මුරපදය සාර්ථකව වෙනස් කෙරිණි","edit_account":"ගිණුම සංස්කරණය","profile_saved":"පැතිකඩ සාර්ථකව යාවත්කාල කෙරිණි!","welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","welcome_to_testing_app_use_those_credentials":"Welcome to the 2FAuth testing instance.

Use email address testing@2fauth.app and password password","register_punchline":"Welcome to 2FAuth.
You need an account to go further. Fill this form to register yourself, and please, choose a strong password, 2FA data are sensitives.","reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password.","name_this_device":"Name this device","delete_account":"Delete account","delete_your_account":"Delete your account","delete_your_account_and_reset_all_data":"This will reset 2FAuth. Your user account will be deleted as well as all 2FA data. There is no going back.","user_account_successfully_deleted":"User account successfully deleted"}},"commons":{"cancel":"අවලංගු","update":"යාවත්කාල","copy":"Copy","copy_to_clipboard":"පසුරුපුවරුවට පිටපත්","copied_to_clipboard":"පසුරුපුවරුවට පිටපත් කෙරිණි","profile":"පැතිකඩ","edit":"සංස්කරණය","delete":"Delete","disable":"Disable","enable":"Enable","create":"සාදන්න","save":"සුරකින්න","close":"වසන්න","demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","testing_do_not_post_sensitive_data":"This is a testing app, do not post any sensitive data","selected":"selected","name":"නම","manage":"Manage","done":"Done","new":"නව","back":"ආපසු","move":"Move","all":"සියල්ල","rename":"නැවත නම්කරන්න","new_name":"New name","options":"විකල්ප","reload":"නැවත පූරණය","some_data_have_changed":"Some data have changed. You should","generate":"Generate","open_in_browser":"Open in browser","continue":"Continue","discard":"Discard"},"errors":{"resource_not_found":"Resource not found","error_occured":"An error occured:","cannot_register_more_user":"You cannot register more than one user.","refresh":"නැවුම් කරන්න","no_valid_otp":"No valid OTP resource in this QR code","something_wrong_with_server":"Something is wrong with your server","Unable_to_decrypt_uri":"Unable to decrypt uri","not_a_supported_otp_type":"This OTP format is not currently supported","cannot_create_otp_without_secret":"Cannot create an OTP without a secret","data_of_qrcode_is_not_valid_URI":"The data of this QR code is not a valid OTP Auth URI:","wrong_current_password":"Wrong current password, nothing has changed","error_during_encryption":"Encryption failed, your database remains unprotected.","error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","qrcode_cannot_be_read":"This QR code is unreadable","too_many_ids":"too many ids were included in the query parameter, max 100 allowed","delete_user_setting_only":"Only user-created setting can be deleted","indecipherable":"*indecipherable*","cannot_decipher_secret":"The secret cannot be deciphered. This is mainly caused by a wrong APP_KEY set in the .env configuration file of 2Fauth or a corrupted data stored in database.","https_required":"HTTPS context required","browser_does_not_support_webauthn":"Your device does not support webauthn. Try again later using a more modern browser","aborted_by_user":"Aborted by user","security_device_unsupported":"Security device unsupported","unsupported_with_reverseproxy":"Not applicable when using an auth proxy","user_deletion_failed":"User account deletion failed, no data have been deleted","auth_proxy_failed":"Proxy authentication failed","auth_proxy_failed_legend":"2Fauth is configured to run behind an authentication proxy but your proxy does not return the expected header. Check your configuration and try again.","invalid_google_auth_migration":"Invalid or unreadable Google Authenticator data","unsupported_otp_type":"Unsupported OTP type"},"groups":{"groups":"සමූහ","create_group":"Create new group","select_accounts_to_show":"Select accounts to show","manage_groups":"Manage groups","active_group":"ක්‍රියාත්මක සමූහය","manage_groups_legend":"You can create groups to organize your accounts the way you want. All accounts remain visible in the pseudo group named 'All', regardless of the group they belong to.","deleting_group_does_not_delete_accounts":"Deleting a group does not delete accounts","move_selected_to":"Move selected to","no_group":"සමූහ නැත","forms":{"new_group":"නව සමූහය","new_name":"නව නම","rename_group":"සමූහය නැවත නම් කිරීම"},"confirm":{"delete":"Are you sure you want to delete this group?"}},"languages":{"browser_preference":"Browser preference","en":"ඉංග්‍රීසි","fr":"ප්‍රංශ","de":"ජර්මානු"},"pagination":{"previous":"« පෙර","next":"ඊළඟ »"},"passwords":{"reset":"ඔබගේ මුරපදය යළි සැකසිනි!","sent":"ඔබගේ රහස් පද යළි සකසන සබැඳිය අප විසින් ඊ-තැපැල් කර ඇත!","throttled":"නැවත උත්සහා කිරීමට පෙර,මදක් රැදිසිටින්න.","token":"මෙම මුරපද යළි පිහිටුවීමේ ටෝකනය වලංගු නොවේ.","user":"අපට එම විද්යුත් තැපැල් ලිපිනය සමඟ පරිශීලකයෙකු සොයා ගත නොහැක.","password":"Passwords must be at least eight characters and match the confirmation."},"settings":{"settings":"සැකසුම්","account":"ගිණුම","oauth":"OAuth","webauthn":"WebAuthn","tokens":"Tokens","options":"විකල්ප","confirm":{"revoke":"Are you sure you want to revoke this token?"},"general":"General","security":"ආරක්ෂාව","profile":"Profile","change_password":"Change password","personal_access_tokens":"Personal access tokens","token_legend":"Personal Access Tokens allow any app to authenticate to the 2Fauth API. You should specify the access token as a Bearer token in the authorization header of consumer apps requests.","generate_new_token":"Generate a new token","revoke":"Revoke","token_revoked":"Token successfully revoked","revoking_a_token_is_permanent":"Revoking a token is permanent","make_sure_copy_token":"Make sure to copy your personal access token now. You won’t be able to see it again!","data_input":"දත්ත ආදානය","forms":{"edit_settings":"සැකසුම් සංස්කරණය","setting_saved":"සැකසුම් සුරැකිණි","new_token":"New token","some_translation_are_missing":"Some translations are missing using the browser preferred language?","help_translate_2fauth":"Help translate 2FAuth","language":{"label":"භාෂාව","help":"Language used to translate the 2FAuth user interface. Named languages are complete, set the one of your choice to override your browser preference."},"show_otp_as_dot":{"label":"Show generated one-time passwords as dot","help":"Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."},"close_otp_on_copy":{"label":"Close OTP after copy","help":"Automatically close the popup showing the generated password after it has been copied"},"use_basic_qrcode_reader":{"label":"Use basic QR code reader","help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader"},"display_mode":{"label":"Display mode","help":"Choose whether you want accounts to be displayed as a list or as a grid"},"grid":"Grid","list":"List","show_accounts_icons":{"label":"නිරූපක පෙන්වන්න","help":"Show icons accounts in the main view"},"auto_lock":{"label":"ස්වයං අගුලුවැටීම","help":"Log out the user automatically in case of inactivity. Has no effect when authentication is handled by a proxy and no custom logout url is specified."},"use_encryption":{"label":"Protect sensible data","help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key."},"default_group":{"label":"Default group","help":"The group to which the newly created accounts are associated"},"useDirectCapture":{"label":"සෘජු ආදානය","help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode"},"defaultCaptureMode":{"label":"Default input mode","help":"Default input mode used when the Direct input option is On"},"remember_active_group":{"label":"Remember group filter","help":"Save the last group filter applied and restore it on your next visit"},"never":"Never","on_otp_copy":"On security code copy","1_minutes":"විනාඩි 1කට පසු","5_minutes":"විනාඩි 5කට පසු","10_minutes":"විනාඩි 10කට පසු","15_minutes":"විනාඩි 15කට පසු","30_minutes":"විනාඩි 30කට පසු","1_hour":"පැය 1කට පසු","1_day":"දිනකට පසු","livescan":"QR code livescan","upload":"QR code upload","advanced_form":"Advanced form"}},"titles":{"404":"Item not found","start":"New account","capture":"Flash QR","accounts":"Accounts","createAccount":"Create account","importAccounts":"Import accounts","editAccount":"Account edit","showQRcode":"Account as QR code","groups":"Groups","createGroup":"Create group","editGroup":"Group edit","settings":{"options":"Options","account":"User account","oauth":{"tokens":"OAuth tokens","generatePAT":"New personal token"},"webauthn":{"editCredential":"Device edit","devices":"WebAuthn devices"}},"login":"Login","register":"Register","autolock":"Auto lock","password":{"request":"Reset password","reset":"New password"},"webauthn":{"lost":"Account recovery","recover":"Register a new device"},"flooded":"Flood","genericError":"Error"},"twofaccounts":{"service":"සේවාව","account":"ගිණුම","accounts":"ගිණුම්","icon":"නිරූපකය","no_account_here":"No 2FA here!","add_first_account":"පළමු ගිණුම එකතුකරන්න","use_full_form":"Or use the full form","add_one":"Add one","show_qrcode":"Show QR code","no_service":"- no service -","forms":{"service":{"placeholder":"උදාහරණය.ලංකා"},"account":{"placeholder":"ජෝන් ඩොයි"},"new_account":"නව ගිණුම","edit_account":"ගිණුම සංස්කරණය","otp_uri":"OTP Uri","scan_qrcode":"Scan a QR code","upload_qrcode":"Upload a QR code","use_advanced_form":"Use the advanced form","prefill_using_qrcode":"Prefill using a QR Code","use_qrcode":{"val":"Use a qrcode","title":"Use a QR code to fill the form magically"},"unlock":{"val":"Unlock","title":"Unlock it (at your own risk)"},"lock":{"val":"Lock","title":"එය අගුළුලන්න"},"choose_image":"Choose an image…","test":"අත්හදා බලන්න","secret":{"label":"රහස","help":"The key used to generate your security codes"},"plain_text":"Plain text","otp_type":{"label":"Choose the type of OTP to create","help":"Time-based OTP or HMAC-based OTP"},"digits":{"label":"Digits","help":"The number of digits of the generated security codes"},"algorithm":{"label":"Algorithm","help":"The algorithm used to secure your security codes"},"period":{"label":"Period","placeholder":"Default is 30","help":"The period of validity of the generated security codes in second"},"counter":{"label":"Counter","placeholder":"Default is 0","help":"The initial counter value","help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing"},"image":{"label":"Image","placeholder":"http://...","help":"The url of an external image to use as the account icon"},"options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","alternative_methods":"Alternative methods"},"stream":{"live_scan_cant_start":"Live scan can't start :(","need_grant_permission":{"reason":"2FAuth does not have permission to access your camera","solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission."},"not_readable":{"reason":"Fail to load scanner","solution":"Is the camera already in use? Ensure that no other app use your camera and try again"},"no_cam_on_device":{"reason":"No camera on this device","solution":"Maybe you forgot to plug in your webcam"},"secured_context_required":{"reason":"Secure context required","solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost"},"https_required":"HTTPS required for camera streaming","camera_not_suitable":{"reason":"Installed cameras are not suitable","solution":"Please use another device/camera"},"stream_api_not_supported":{"reason":"Stream API is not supported in this browser","solution":"You should use a modern browser"}},"confirm":{"delete":"Are you sure you want to delete this account?","cancel":"The account will be lost. Are you sure?","discard":"Are you sure you want to discard this account?","discard_all":"Are you sure you want to discard all accounts?","discard_duplicates":"Are you sure you want to discard all duplicates?"},"import":{"import":"Import","to_import":"Import","import_legend":"Import your Google Authenticator accounts.","use_the_gauth_qr_code":"Load a G-Auth QR code","issuer":"Issuer","imported":"Imported","failure":"Failure","x_valid_accounts_found":"{count} valid accounts found","import_all":"Import all","import_this_account":"Import this account","discard_all":"Discard all","discard_duplicates":"Discard duplicates","discard_this_account":"Discard this account","generate_a_test_password":"Generate a test pasword","possible_duplicate":"An account with the exact same data already exists"}},"validation":{"accepted":"මෙම :attribute පිළිගත යුතුය.","accepted_if":"The :attribute must be accepted when :other is :value.","active_url":"මෙම :attribute වලංගු සබැඳි එකක් නොවේ.","after":"මෙම :attribute පසු දිනය විය යුතුය :date.","after_or_equal":"මෙම :attribute පසුව හෝ ඊට සමාන දිනයකි :date.","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 කිලෝ බයිට ගණන.","string":"මෙම :attribute අතර විය යුතුය :min සහ :max ප්රමාණය.","array":"මෙම :attribute අතර තිබිය යුතුය :min සහ :max අයිතම."},"boolean":"මෙම :attribute ක්ෂේත්ර සත්ය හෝ අසත්ය විය යුතුය.","confirmed":"මෙම :attribute තහවුරු කිරීම නොගැලපේ.","current_password":"The password is incorrect.","date":"මෙම :attribute වලංගු දිනය නොවේ.","date_equals":"මෙම :attribute දිනකට සමාන විය යුතුය :date.","date_format":"මෙම :attribute ආකෘතියට ගැළපෙන්නේ නැත :format.","declined":"The :attribute must be declined.","declined_if":"The :attribute must be declined when :other is :value.","different":"මෙම :attribute සහ :other වෙනස් විය යුතුය.","digits":"මෙම :attribute විය යුතුය :digits ඉලක්කම්.","digits_between":"මෙම :attribute විය යුතුය අතර :min සහ :max ඉලක්කම්.","dimensions":"මෙම :attribute වලංගු නොවන පිළිබිඹුවක් ඇත.","distinct":"මෙම :attribute ක්ෂේත්රයේ අනුපිටපත් වටිනාකමක් ඇත.","email":"මෙම :attribute වලංගු විද්යුත් තැපැල් ලිපිනයක් විය යුතුය.","ends_with":"The :attribute must end with one of the following: :values.","exists":"මෙම තෝරා ඇත :attribute අවලංගුයි.","file":"මෙම :attribute ගොනුවක් විය යුතුය.","filled":"මෙම :attribute ක්ෂේත්රයේ වටිනාකමක් තිබිය යුතුය.","gt":{"numeric":"මෙම :attribute වඩා විශාල විය යුතුය :value.","file":"මෙම :attribute වඩා විශාල විය යුතුය :value කිලෝ බයිට ගණන.","string":"මෙම :attribute වඩා විශාල විය යුතුය :value ප්රමාණය.","array":"මෙම :attribute වඩා වැඩි විය යුතුය :value අයිතම."},"gte":{"numeric":"මෙම :attribute වඩා වැඩි හෝ සමාන විය යුතුය :value.","file":"මෙම :attribute වඩා වැඩි හෝ සමාන විය යුතුයl :value කිලෝ බයිට ගණන.","string":"මෙම :attribute වඩා වැඩි හෝ සමාන විය යුතුය :value ප්රමාණය.","array":"මෙම :attribute තිබිය යුතු :value අයිතම හෝ ඊට වැඩි."},"image":"මෙම :attribute රූපයක් විය යුතුය.","in":"මෙම තෝරා ඇත :attribute අවලංගුයි.","in_array":"මෙම :attribute ක්ෂේත්රයේ නොපවතින :other.","integer":"මෙම :attribute පූර්ණ සංඛ්යාවක් විය යුතුය.","ip":"මෙම :attribute වලංගු IP ලිපිනයක් තිබිය යුතුය.","ipv4":"මෙම :attribute වලංගු IPv4 ලිපිනය විය යුතුය.","ipv6":"මෙම :attribute වලංගු IPv6 ලිපිනය විය යුතුය.","json":"මෙම :attribute වලංගු JSON පේළියකි විය යුතුය.","lt":{"numeric":"මෙම :attribute වඩා අඩු විය යුතුය :value.","file":"මෙම :attribute වඩා අඩු විය යුතුය :value කිලෝ බයිට ගණන.","string":"මෙම :attribute වඩා අඩු විය යුතුය :value ප්රමාණය..","array":"මෙම :attribute වඩා අඩු විය යුතුය :value අයිතම."},"lte":{"numeric":"මෙම :attribute අඩු හෝ සමාන විය යුතුය :value.","file":"මෙම :attribute අඩු හෝ සමාන විය යුතුය :value කිලෝ බයිට ගණන..","string":"මෙම :attribute අඩු හෝ සමාන විය යුතුය :value ප්රමාණය..","array":"මෙම :attribute වඩා වැඩි නොවිය යුතුය :value අයිතම."},"max":{"numeric":"මෙම :attribute වඩා විශාල විය නොහැකිය :max.","file":"මෙම :attribute වඩා විශාල විය නොහැකිය :max කිලෝ බයිට ගණන..","string":"මෙම :attribute වඩා විශාල විය නොහැකිය :max ප්රමාණය..","array":"මෙම :attribute වඩා වැඩි නොවිය හැක :max අයිතම."},"mimes":"මෙම :attribute වර්ගයේ ගොනුවක් විය යුතුය: :values.","mimetypes":"මෙම :attribute වර්ගයේ ගොනුවක් විය යුතුය: :values.","min":{"numeric":"මෙම :attribute අවම වශයෙන් විය යුතුය :min.","file":"මෙම :attribute අවම වශයෙන් විය යුතුය :min කිලෝ බයිට ගණන..","string":"මෙම :attribute අවම වශයෙන් විය යුතුය :min ප්රමාණය..","array":"මෙම :attribute අවම වශයෙන් තිබිය යුතුය :min අයිතම."},"multiple_of":"The :attribute must be a multiple of :value.","not_in":"මෙම තෝරා ඇත :attribute අවලංගුයි.","not_regex":"මෙම :attribute ආකෘතිය අවලංගුයි.","numeric":"මෙම :attribute අංකයක් විය යුතුය.","password":"The password is incorrect.","present":"මෙම :attribute ක්ෂේත්රයයි තිබිය යුතුය.","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":"මෙම :attribute ආකෘතිය අවලංගුයි.","required":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි.","required_if":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය :other මෙය :value.","required_unless":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි මිස :other මෙය :values.","required_with":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය :values තිබිය යුතුය.","required_with_all":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය :values තිබිය යුතුය.","required_without":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය :values තිබිය යුතුය.","required_without_all":"මෙම :attribute ක්ෂේත්රයයි අවශ්යයි එය කිසිවක් of :values තිබිය යුතුය.","same":"මෙම :attribute සහ :other ගැලපිය යුතුයි.","size":{"numeric":"මෙම :attribute විය යුතුය :size.","file":"මෙම :attribute විය යුතුය :size කිලෝ බයිට ගණන..","string":"මෙම :attribute විය යුතුය :size ප්රමාණය..","array":"මෙම :attribute must contain :size අයිතම."},"starts_with":"මෙම :attribute පහත සඳහන් එකක් සමඟ ආරම්භ කළ යුතුය: :values","string":"මෙම :attribute පේළියකි විය යුතුය.","timezone":"මෙම :attribute වලංගු කලාපයකි විය යුතුය.","unique":"මෙම :attribute දැනටමත් අරගෙන තියෙන්නේ.","uploaded":"මෙම :attribute උඩුගත කිරීම අසාර්ථක විය.","url":"මෙම :attribute ආකෘතිය අවලංගුයි.","uuid":"මෙම :attribute වලංගු 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":{"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."},"name":{"firstUser":"There is already a registered user"}},"attributes":[]}},"zh":{"auth":{"failed":"用户名或密码错误","password":"提供的密码不正确","throttle":"您尝试的登录次数过多,请 :seconds 秒后再试。","sign_out":"退出","sign_in":"登录","sign_in_using":"登录使用","login_and_password":"使用密码登录","register":"注册","welcome_back_x":"欢迎回来!{0}!","autolock_triggered":"Auto lock triggered","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.","already_authenticated":"已验证","authentication":"身份认证","maybe_later":"以后再说","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.","confirm":{"logout":"确定要退出吗?","revoke_device":"Are you sure you want to revoke this device?","delete_account":"Are you sure you want to delete your account?"},"webauthn":{"security_device":"a security device","security_devices":"Security devices","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)","enhance_security_using_webauthn":"You can enhance the security of your 2FAuth account by enabling WebAuthn authentication.

\n 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":"Lost your device?","recover_your_account":"Recover your account","account_recovery":"Account recovery","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.","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","register_a_new_device":"Register a new 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.","invalid_recovery_token":"Invalid recovery token","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.
\n 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":"Set at least one device to enable these options","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.
\n This has no effect if you only use WebAuthn."}},"forms":{"name":"用户名","login":"登录","webauthn_login":"WebAuthn login","email":"电子邮件","password":"密码","confirm_password":"确认密码","confirm_new_password":"确认新密码","dont_have_account_yet":"还没有账号?","already_register":"已经注册?","authentication_failed":"Authentication failed","forgot_your_password":"忘记密码?","request_password_reset":"重置","reset_password":"重置密码","disabled_in_demo":"Feature disabled in Demo mode","new_password":"新密码","current_password":{"label":"当前密码","help":"Fill in your current password to confirm that it's you"},"change_password":"Change password","send_password_reset_link":"Send password reset link","password_successfully_changed":"Password successfully changed","edit_account":"编辑账户","profile_saved":"帐户资料更新成功","welcome_to_demo_app_use_those_credentials":"Welcome to the 2FAuth demo.

You can connect using the email address demo@2fauth.app and the password demo","welcome_to_testing_app_use_those_credentials":"Welcome to the 2FAuth testing instance.

Use email address testing@2fauth.app and password password","register_punchline":"Welcome to 2FAuth.
You need an account to go further. Fill this form to register yourself, and please, choose a strong password, 2FA data are sensitives.","reset_punchline":"2FAuth will send you a password reset link to this address. Click the link in the received email to set a new password.","name_this_device":"Name this device","delete_account":"Delete account","delete_your_account":"Delete your account","delete_your_account_and_reset_all_data":"This will reset 2FAuth. Your user account will be deleted as well as all 2FA data. There is no going back.","user_account_successfully_deleted":"User account successfully deleted"}},"commons":{"cancel":"取消","update":"更新","copy":"复制","copy_to_clipboard":"Copy to clipboard","copied_to_clipboard":"Copied to clipboard","profile":"Profile","edit":"Edit","delete":"Delete","disable":"Disable","enable":"Enable","create":"Create","save":"Save","close":"Close","demo_do_not_post_sensitive_data":"This is a demo app, do not post any sensitive data","testing_do_not_post_sensitive_data":"This is a testing app, do not post any sensitive data","selected":"selected","name":"Name","manage":"Manage","done":"Done","new":"New","back":"Back","move":"Move","all":"All","rename":"Rename","new_name":"New name","options":"Options","reload":"Reload","some_data_have_changed":"某些数据已经更改,您应该:","generate":"生成","open_in_browser":"在浏览器中打开","continue":"继续","discard":"Discard"},"errors":{"resource_not_found":"资源未找到","error_occured":"发生错误:","cannot_register_more_user":"您不能注册多个用户","refresh":"刷新","no_valid_otp":"此二维码中没有有效的OTP资源","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:","wrong_current_password":"当前密码错误,没有发生任何更改","error_during_encryption":"加密失败,您的数据库仍未受到保护","error_during_decryption":"Decryption failed, your database is still protected. This is mainly caused by an integrity issue of encrypted data for one or more accounts.","qrcode_cannot_be_read":"This QR code is unreadable","too_many_ids":"too many ids were included in the query parameter, max 100 allowed","delete_user_setting_only":"Only user-created setting can be deleted","indecipherable":"*indecipherable*","cannot_decipher_secret":"The secret cannot be deciphered. This is mainly caused by a wrong APP_KEY set in the .env configuration file of 2Fauth or a corrupted data stored in database.","https_required":"HTTPS context required","browser_does_not_support_webauthn":"Your device does not support webauthn. Try again later using a more modern browser","aborted_by_user":"Aborted by user","security_device_unsupported":"Security device unsupported","unsupported_with_reverseproxy":"Not applicable when using an auth proxy","user_deletion_failed":"User account deletion failed, no data have been deleted","auth_proxy_failed":"Proxy authentication failed","auth_proxy_failed_legend":"2Fauth is configured to run behind an authentication proxy but your proxy does not return the expected header. Check your configuration and try again.","invalid_google_auth_migration":"Invalid or unreadable Google Authenticator data","unsupported_otp_type":"Unsupported OTP type"},"groups":{"groups":"组","create_group":"创建新组","select_accounts_to_show":"选择要显示的帐户","manage_groups":"管理组","active_group":"活跃组","manage_groups_legend":"您可以创建组以按照您想要的方式组织您的账户。 所有账户在名为“全部”的伪组中仍然可见,无论它们属于哪个组。","deleting_group_does_not_delete_accounts":"删除组不会删除帐户","move_selected_to":"移动选择到","no_group":"没有分组","forms":{"new_group":"新建组","new_name":"新名称","rename_group":"重命名组"},"confirm":{"delete":"您确定要删除此组吗?"}},"languages":{"browser_preference":"Browser preference","en":"English","fr":"French","de":"German"},"pagination":{"previous":"« 上一页","next":"下一页 »"},"passwords":{"reset":"密码重置成功!","sent":"密码重置邮件已发送!","throttled":"请稍候再试。","token":"密码重置令牌无效。","user":"找不到该邮箱对应的用户。","password":"密码必须包含至少8个字符,且两次输入的内容必须相同。"},"settings":{"settings":"设置","account":"账户","oauth":"OAuth","webauthn":"WebAuthn","tokens":"令牌","options":"选项","confirm":{"revoke":"Are you sure you want to revoke this token?"},"general":"常规","security":"安全","profile":"配置文件","change_password":"更改密码","personal_access_tokens":"个人访问令牌","token_legend":"Personal Access Tokens allow any app to authenticate to the 2Fauth API. You should specify the access token as a Bearer token in the authorization header of consumer apps requests.","generate_new_token":"生成新令牌","revoke":"撤回","token_revoked":"已成功吊销令牌","revoking_a_token_is_permanent":"Revoking a token is permanent","make_sure_copy_token":"Make sure to copy your personal access token now. You won’t be able to see it again!","data_input":"Data input","forms":{"edit_settings":"Edit settings","setting_saved":"Settings saved","new_token":"New token","some_translation_are_missing":"Some translations are missing using the browser preferred language?","help_translate_2fauth":"Help translate 2FAuth","language":{"label":"Language","help":"Language used to translate the 2FAuth user interface. Named languages are complete, set the one of your choice to override your browser preference."},"show_otp_as_dot":{"label":"Show generated one-time passwords as dot","help":"Replace generated password caracters with *** to ensure confidentiality. Do not affect the copy/paste feature."},"close_otp_on_copy":{"label":"Close OTP after copy","help":"Automatically close the popup showing the generated password after it has been copied"},"use_basic_qrcode_reader":{"label":"Use basic QR code reader","help":"If you experiences issues when capturing QR codes enables this option to switch to a more basic but more reliable QR code reader"},"display_mode":{"label":"Display mode","help":"Choose whether you want accounts to be displayed as a list or as a grid"},"grid":"Grid","list":"List","show_accounts_icons":{"label":"Show icons","help":"Show icons accounts in the main view"},"auto_lock":{"label":"Auto lock","help":"Log out the user automatically in case of inactivity. Has no effect when authentication is handled by a proxy and no custom logout url is specified."},"use_encryption":{"label":"Protect sensible data","help":"Sensitive data, the 2FA secrets and emails, are stored encrypted in database. Be sure to backup the APP_KEY value of your .env file (or the whole file) as it serves as key encryption. There is no way to decypher encrypted data without this key."},"default_group":{"label":"Default group","help":"The group to which the newly created accounts are associated"},"useDirectCapture":{"label":"Direct input","help":"Choose whether you want to be prompted to choose an input mode among those available or if you want to directly use the default input mode"},"defaultCaptureMode":{"label":"Default input mode","help":"Default input mode used when the Direct input option is On"},"remember_active_group":{"label":"Remember group filter","help":"Save the last group filter applied and restore it on your next visit"},"never":"Never","on_otp_copy":"On security code copy","1_minutes":"After 1 minute","5_minutes":"After 5 minutes","10_minutes":"After 10 minutes","15_minutes":"After 15 minutes","30_minutes":"After 30 minutes","1_hour":"After 1 hour","1_day":"After 1 day","livescan":"QR code livescan","upload":"QR code upload","advanced_form":"Advanced form"}},"titles":{"404":"Item not found","start":"New account","capture":"Flash QR","accounts":"Accounts","createAccount":"Create account","importAccounts":"Import accounts","editAccount":"Account edit","showQRcode":"Account as QR code","groups":"Groups","createGroup":"Create group","editGroup":"Group edit","settings":{"options":"Options","account":"User account","oauth":{"tokens":"OAuth tokens","generatePAT":"New personal token"},"webauthn":{"editCredential":"Device edit","devices":"WebAuthn devices"}},"login":"Login","register":"Register","autolock":"Auto lock","password":{"request":"Reset password","reset":"New password"},"webauthn":{"lost":"Account recovery","recover":"Register a new device"},"flooded":"Flood","genericError":"Error"},"twofaccounts":{"service":"服务","account":"账户","accounts":"账户","icon":"图标","no_account_here":"这里没有两步验证!","add_first_account":"添加您的第一个帐户","use_full_form":"或者使用完整的表单","add_one":"添加一个","show_qrcode":"显示 QR 码","no_service":"- 无服务 -","forms":{"service":{"placeholder":"example.com"},"account":{"placeholder":"John DOE"},"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":"选择一张图片...","test":"测试","secret":{"label":"密钥","help":"用于生成安全码的密钥"},"plain_text":"纯文本","otp_type":{"label":"选择要创建的 OTP 类型","help":"基于时间的OTP或基于HMAC的OTP"},"digits":{"label":"码长","help":"生成的安全码位数"},"algorithm":{"label":"算法","help":"用于保护您的安全代码的算法"},"period":{"label":"周期","placeholder":"默认为30","help":"生成的二维码的以秒为单位的有效期限"},"counter":{"label":"计数器","placeholder":"默认为0","help":"The initial counter value","help_lock":"It is risky to edit the counter as you can desynchronize the account with the verification server of the service. Use the lock icon to enable modification, but only if you know for you are doing"},"image":{"label":"Image","placeholder":"http://...","help":"The url of an external image to use as the account icon"},"options_help":"You can leave the following options blank if you don't know how to set them. The most commonly used values will be applied.","alternative_methods":"Alternative methods"},"stream":{"live_scan_cant_start":"Live scan can't start :(","need_grant_permission":{"reason":"2FAuth does not have permission to access your camera","solution":"You need to grant permission to use your device camera. If you already denied and your browser do not prompt you again, please refers to the browser documentation to find out how to grant permission."},"not_readable":{"reason":"Fail to load scanner","solution":"Is the camera already in use? Ensure that no other app use your camera and try again"},"no_cam_on_device":{"reason":"No camera on this device","solution":"Maybe you forgot to plug in your webcam"},"secured_context_required":{"reason":"Secure context required","solution":"HTTPS is required for live scan. If you run 2FAuth from your computer, do not use virtual host other than localhost"},"https_required":"HTTPS required for camera streaming","camera_not_suitable":{"reason":"Installed cameras are not suitable","solution":"Please use another device/camera"},"stream_api_not_supported":{"reason":"Stream API is not supported in this browser","solution":"You should use a modern browser"}},"confirm":{"delete":"Are you sure you want to delete this account?","cancel":"The account will be lost. Are you sure?","discard":"Are you sure you want to discard this account?","discard_all":"Are you sure you want to discard all accounts?","discard_duplicates":"Are you sure you want to discard all duplicates?"},"import":{"import":"Import","to_import":"Import","import_legend":"Import your Google Authenticator accounts.","use_the_gauth_qr_code":"Load a G-Auth QR code","issuer":"Issuer","imported":"Imported","failure":"Failure","x_valid_accounts_found":"{count} valid accounts found","import_all":"Import all","import_this_account":"Import this account","discard_all":"Discard all","discard_duplicates":"Discard duplicates","discard_this_account":"Discard this account","generate_a_test_password":"Generate a test pasword","possible_duplicate":"An account with the exact same data already exists"}},"validation":{"accepted":"您必须接受 :attribute。","accepted_if":":attribute 只有在 :other 为 :value 时才可用","active_url":":attribute 不是一个有效的网址。","after":":attribute 必须要晚于 :date。","after_or_equal":":attribute 必须要等于 :date 或更晚。","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 个单元。"},"boolean":":attribute 必须为布尔值。","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 已经存在。","email":":attribute 不是一个合法的邮箱。","ends_with":":attribute 必须以 :values 为结尾。","exists":":attribute 不存在。","file":":attribute 必须是文件。","filled":":attribute 不能为空。","gt":{"numeric":":attribute 必须大于 :value。","file":":attribute 必须大于 :value KB。","string":":attribute 必须多于 :value 个字符。","array":":attribute 必须多于 :value 个元素。"},"gte":{"numeric":":attribute 必须大于或等于 :value。","file":":attribute 必须大于或等于 :value KB。","string":":attribute 必须多于或等于 :value 个字符。","array":":attribute 必须多于或等于 :value 个元素。"},"image":":attribute 必须是图片。","in":"已选的属性 :attribute 无效。","in_array":":attribute 必须在 :other 中。","integer":":attribute 必须是整数。","ip":":attribute 必须是有效的 IP 地址。","ipv4":":attribute 必须是有效的 IPv4 地址。","ipv6":":attribute 必须是有效的 IPv6 地址。","json":":attribute 必须是正确的 JSON 格式。","lt":{"numeric":":attribute 必须小于 :value。","file":":attribute 必须小于 :value KB。","string":":attribute 必须少于 :value 个字符。","array":":attribute 必须少于 :value 个元素。"},"lte":{"numeric":":attribute 必须小于或等于 :value。","file":":attribute 必须小于或等于 :value KB。","string":":attribute 必须少于或等于 :value 个字符。","array":":attribute 必须少于或等于 :value 个元素。"},"max":{"numeric":":attribute 不能大于 :max。","file":":attribute 不能大于 :max KB。","string":":attribute 不能大于 :max 个字符。","array":":attribute 最多只有 :max 个单元。"},"mimes":":attribute 必须是一个 :values 类型的文件。","mimetypes":":attribute 必须是一个 :values 类型的文件。","min":{"numeric":":attribute 必须大于等于 :min。","file":":attribute 大小不能小于 :min KB。","string":":attribute 至少为 :min 个字符。","array":":attribute 至少有 :min 个单元。"},"multiple_of":":attribute 必须是 :value 的倍数","not_in":"已选的属性 :attribute 非法。","not_regex":":attribute 的格式错误。","numeric":":attribute 必须是一个数字。","password":"密码错误","present":":attribute 必须存在。","prohibited":":attribute 字段是禁止的.","prohibited_if":"当 :other 为 :value 时, :attribute 字段被禁止","prohibited_unless":"除非 :other 为 :values,否则 :attribute 字段是禁止的","prohibits":":attribute 字段禁止出现 \":other\"","regex":":attribute 格式不正确。","required":":attribute 不能为空。","required_if":"当 :other 为 :value 时 :attribute 不能为空。","required_unless":"当 :other 不为 :values 时 :attribute 不能为空。","required_with":"当 :values 存在时 :attribute 不能为空。","required_with_all":"当 :values 存在时 :attribute 不能为空。","required_without":"当 :values 不存在时 :attribute 不能为空。","required_without_all":"当 :values 都不存在时 :attribute 不能为空。","same":":attribute 和 :other 必须相同。","size":{"numeric":":attribute 大小必须为 :size。","file":":attribute 大小必须为 :size KB。","string":":attribute 必须是 :size 个字符。","array":":attribute 必须为 :size 个单元。"},"starts_with":":attribute 必须以 :values 为开头。","string":":attribute 必须是一个字符串。","timezone":":attribute 必须是一个合法的时区值。","unique":":attribute 已经存在。","uploaded":":attribute 上传失败。","url":":attribute 必须是有效的 url。","uuid":":attribute 必须是有效的 UUID。","single":"当使用 :attribute 时,它必须是此请求主体中的唯一参数","onlyCustomOtpWithUri":"The uri parameter must be provided alone or only in combination with the 'custom_otp' parameter","custom":{"icon":{"image":"支持的格式是 jpeg、png、bmp、gif、svg或web。"},"qrcode":{"image":"支持的格式是 jpeg、png、bmp、gif、svg或web。"},"uri":{"regex":":attribute 不是有效的 otpauth uri"},"otp_type":{"in":":attribute 不受支持"},"email":{"exists":"未找到使用此电子邮件的账户。"},"secret":{"isBase32Encoded":":attribute 必须是 base32 编码的字符串"},"account":{"regex":":attribute 不能包含冒号。"},"service":{"regex":":attribute 不能包含冒号。"},"label":{"required":"uri 必须有一个标签。"},"ids":{"regex":"ID必须以逗号分隔,无需尾随逗号。"},"name":{"firstUser":"已有注册用户"}},"attributes":[]}}} /***/ }), @@ -13352,6 +13352,9 @@ __webpack_require__.r(__webpack_exports__); // // // +// +// +// /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'App', data: function data() { @@ -13654,6 +13657,10 @@ __webpack_require__.r(__webpack_exports__); hasOffset: { type: Boolean, "default": false + }, + isDisabled: { + type: Boolean, + "default": false } } }); @@ -13912,7 +13919,9 @@ __webpack_require__.r(__webpack_exports__); }, logoutUser: function logoutUser() { clearTimeout(this.logoutTimer); - this.appLogout(); + this.$router.push({ + name: 'autolock' + }); }, resetTimer: function resetTimer() { clearTimeout(this.logoutTimer); @@ -14070,8 +14079,13 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar }, computed: { displayedOtp: function displayedOtp() { - var spacePosition = Math.ceil(this.internal_password.length / 2); - var pwd = this.internal_password.substr(0, spacePosition) + " " + this.internal_password.substr(spacePosition); + var pwd = this.internal_password; + + if (this.internal_otp_type !== 'steamtotp') { + var spacePosition = Math.ceil(this.internal_password.length / 2); + pwd = this.internal_password.substr(0, spacePosition) + " " + this.internal_password.substr(spacePosition); + } + return this.$root.appSettings.showOtpAsDot ? pwd.replace(/[0-9]/g, '●') : pwd; } }, @@ -14079,6 +14093,12 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar this.show(); }, methods: { + isTimeBased: function isTimeBased(otp_type) { + return otp_type === 'totp' || otp_type === 'steamtotp'; + }, + isHMacBased: function isHMacBased(otp_type) { + return otp_type === 'hotp'; + }, show: function show(id) { var _this = this; @@ -14124,7 +14144,7 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar _this.internal_icon = data.icon; _this.internal_otp_type = data.otp_type; - if (data.otp_type === 'hotp' && data.counter) { + if (_this.isHMacBased(data.otp_type) && data.counter) { _this.internal_counter = data.counter; } @@ -14136,29 +14156,36 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar } if (!(_this.internal_id || _this.uri || _this.secret)) { - _context.next = 33; + _context.next = 34; break; } - _context.t0 = _this.internal_otp_type; - _context.next = _context.t0 === 'totp' ? 25 : _context.t0 === 'hotp' ? 28 : 31; - break; + if (!_this.isTimeBased(_this.internal_otp_type)) { + _context.next = 27; + break; + } - case 25: - _context.next = 27; + _context.next = 25; return _this.startTotpLoop(); - case 27: - return _context.abrupt("break", 32); + case 25: + _context.next = 33; + break; + + case 27: + if (!_this.isHMacBased(_this.internal_otp_type)) { + _context.next = 32; + break; + } - case 28: _context.next = 30; return _this.getHOTP(); case 30: - return _context.abrupt("break", 32); + _context.next = 33; + break; - case 31: + case 32: _this.$router.push({ name: 'genericError', params: { @@ -14166,10 +14193,10 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar } }); - case 32: + case 33: _this.$parent.isActive = true; - case 33: + case 34: case "end": return _context.stop(); } @@ -14378,7 +14405,7 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar } }, stopLoop: function stopLoop() { - if (this.internal_otp_type === 'totp') { + if (this.isTimeBased(this.internal_otp_type)) { clearTimeout(this.remainingTimeout); clearTimeout(this.firstDotToNextOneTimeout); clearInterval(this.dotToDotInterval); @@ -14459,10 +14486,10 @@ __webpack_require__.r(__webpack_exports__); 'view': 'settings.account' }, { 'name': this.$t('settings.oauth'), - 'view': 'settings.oauth' + 'view': 'settings.oauth.tokens' }, { 'name': this.$t('settings.webauthn'), - 'view': 'settings.webauthn' + 'view': 'settings.webauthn.devices' }] }; }, @@ -15725,6 +15752,41 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar /***/ }), +/***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/views/auth/Autolock.vue?vue&type=script&lang=js&": +/*!***************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/views/auth/Autolock.vue?vue&type=script&lang=js& ***! + \***************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// +// +// +// +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + data: function data() { + return {}; + }, + mounted: function mounted() { + this.axios.get('/user/logout', { + returnError: true + })["catch"](function (error) {// there is nothing to do, we simply catch the error to avoid redondant navigation + }); + this.$storage.clear(); + } +}); + +/***/ }), + /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/views/auth/Login.vue?vue&type=script&lang=js&": /*!************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/views/auth/Login.vue?vue&type=script&lang=js& ***! @@ -15781,18 +15843,21 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar // // // +// /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ data: function data() { return { username: null, isDemo: this.$root.isDemoApp, + isTesting: this.$root.isTestingApp, form: new _components_Form__WEBPACK_IMPORTED_MODULE_1__["default"]({ email: '', password: '' }), isBusy: false, - showWebauthn: this.$root.appSettings.useWebauthnAsDefault || this.$root.appSettings.useWebauthnOnly + showWebauthn: this.$root.appSettings.useWebauthnAsDefault || this.$root.appSettings.useWebauthnOnly, + csrfRefresher: null }; }, computed: { @@ -15800,6 +15865,9 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar return this.isDemo ? '' : this.$t('auth.welcome_back_x', [this.username]); } }, + mounted: function mounted() { + this.csrfRefresher = setInterval(this.refreshToken, 300000); // 5 min + }, methods: { /** * Sign in using the login/password form @@ -15941,9 +16009,17 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar } }, _callee); }))(); + }, + refreshToken: function refreshToken() { + this.axios.get('/refresh-csrf'); } }, beforeRouteEnter: function beforeRouteEnter(to, from, next) { + if (to.params.forceRefresh && from.name !== null) { + window.location.href = to.path; + return; + } + next( /*#__PURE__*/function () { var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee2(vm) { var _yield$vm$axios$get, data; @@ -15952,29 +16028,20 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar while (1) { switch (_context2.prev = _context2.next) { case 0: - if (!to.params.forceLogout) { - _context2.next = 3; - break; - } - - _context2.next = 3; - return vm.axios.get('/user/logout'); - - case 3: - _context2.next = 5; + _context2.next = 2; return vm.axios.get('api/v1/user/name'); - case 5: + case 2: _yield$vm$axios$get = _context2.sent; data = _yield$vm$axios$get.data; if (!data.name) { - _context2.next = 13; + _context2.next = 10; break; } if (!data.email) { - _context2.next = 10; + _context2.next = 7; break; } @@ -15982,17 +16049,17 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar name: 'accounts' })); - case 10: + case 7: vm.username = data.name; - _context2.next = 14; + _context2.next = 11; break; - case 13: + case 10: return _context2.abrupt("return", next({ name: 'register' })); - case 14: + case 11: case "end": return _context2.stop(); } @@ -16010,6 +16077,7 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar this.$notify({ clean: true }); + clearInterval(this.csrfRefresher); next(); } }); @@ -16114,7 +16182,7 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar if (error.response.status === 422 && error.response.data.errors.name) { _this.$notify({ type: 'is-danger', - text: _this.$t('errors.already_one_user_registered') + ' ' + _this.$t('errors.cannot_register_more_user'), + text: _this.$t('errors.cannot_register_more_user'), duration: -1 }); } else if (error.response.status !== 422) { @@ -17151,7 +17219,7 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar case 2: if (_this.form.errors.any() === false) { _this.$router.push({ - name: 'settings.webauthn', + name: 'settings.webauthn.devices', params: { toRefresh: true } @@ -17168,7 +17236,7 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar }, cancelCreation: function cancelCreation() { this.$router.push({ - name: 'settings.webauthn' + name: 'settings.webauthn.devices' }); } } @@ -17743,7 +17811,7 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar if (_this.form.errors.any() === false) { _this.$router.push({ - name: 'settings.oauth', + name: 'settings.oauth.tokens', params: { accessToken: data.accessToken, token_id: data.token.id @@ -17761,7 +17829,7 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar }, cancelGeneration: function cancelGeneration() { this.$router.push({ - name: 'settings.oauth' + name: 'settings.oauth.tokens' }); } } @@ -18297,6 +18365,8 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar // // // +// +// /** * Create form view @@ -18347,6 +18417,9 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar }, { text: 'HOTP', value: 'hotp' + }, { + text: 'STEAM', + value: 'steamtotp' }], digitsChoices: [{ text: 6, @@ -18587,6 +18660,11 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar var value = _ref2.value, event = _ref2.event; console.log('error', value); + }, + SetFormState: function SetFormState(event) { + this.form.otp_type = event; + this.form.service = event === 'steamtotp' ? 'Steam' : ''; + this.secretIsBase32Encoded = event === 'steamtotp' ? 1 : this.secretIsBase32Encoded; } } }); @@ -18738,6 +18816,8 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar // // // +// +// @@ -18769,6 +18849,9 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar }, { text: 'HOTP', value: 'hotp' + }, { + text: 'STEAM', + value: 'steamtotp' }], digitsChoices: [{ text: 6, @@ -19488,20 +19571,10 @@ vue__WEBPACK_IMPORTED_MODULE_3__["default"].axios.interceptors.response.use(func } // api calls are stateless so when user inactivity is detected // by the backend middleware it cannot logout the user directly // so it returns a 418 response. - // We catch the 418 response and push the user to the login view - // with the instruction to request a session logout + // We catch the 418 response and push the user to the autolock view - if (error.response.status === 418) { - _routes_js__WEBPACK_IMPORTED_MODULE_2__["default"].push({ - name: 'login', - params: { - forceLogout: true - } - }); - throw new vue__WEBPACK_IMPORTED_MODULE_3__["default"].axios.Cancel(); - } - + if (error.response.status === 418) routeName = 'autolock'; if (error.response.status === 404) routeName = '404'; _routes_js__WEBPACK_IMPORTED_MODULE_2__["default"].push({ name: routeName, @@ -19525,9 +19598,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm.js"); /* harmony import */ var _mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mixins */ "./resources/js/mixins.js"); /* harmony import */ var _packages_vue_storage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./packages/vue-storage */ "./resources/js/packages/vue-storage.js"); -/* harmony import */ var _routes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./routes */ "./resources/js/routes.js"); -/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./api */ "./resources/js/api.js"); -/* harmony import */ var _langs_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./langs/i18n */ "./resources/js/langs/i18n.js"); +/* harmony import */ var _langs_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./langs/i18n */ "./resources/js/langs/i18n.js"); +/* harmony import */ var _routes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./routes */ "./resources/js/routes.js"); +/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./api */ "./resources/js/api.js"); /* harmony import */ var _packages_fontawesome__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./packages/fontawesome */ "./resources/js/packages/fontawesome.js"); /* harmony import */ var _packages_clipboard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./packages/clipboard */ "./resources/js/packages/clipboard.js"); /* harmony import */ var vue_notification__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue-notification */ "./node_modules/vue-notification/dist/index.js"); @@ -19549,10 +19622,11 @@ var app = new vue__WEBPACK_IMPORTED_MODULE_9__["default"]({ data: { appSettings: window.appSettings, appConfig: window.appConfig, - isDemoApp: window.isDemoApp + isDemoApp: window.isDemoApp, + isTestingApp: window.isTestingApp }, - i18n: _langs_i18n__WEBPACK_IMPORTED_MODULE_4__["default"], - router: _routes__WEBPACK_IMPORTED_MODULE_2__["default"] + i18n: _langs_i18n__WEBPACK_IMPORTED_MODULE_2__["default"], + router: _routes__WEBPACK_IMPORTED_MODULE_3__["default"] }); /***/ }), @@ -20346,7 +20420,12 @@ vue__WEBPACK_IMPORTED_MODULE_1__["default"].mixin({ case 10: _this.$storage.clear(); - location.reload(); + _this.$router.push({ + name: 'login', + params: { + forceRefresh: true + } + }); case 12: case "end": @@ -20577,17 +20656,18 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _views_groups_Edit__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./views/groups/Edit */ "./resources/js/views/groups/Edit.vue"); /* harmony import */ var _views_auth_Login__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./views/auth/Login */ "./resources/js/views/auth/Login.vue"); /* harmony import */ var _views_auth_Register__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./views/auth/Register */ "./resources/js/views/auth/Register.vue"); -/* harmony import */ var _views_auth_password_Request__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./views/auth/password/Request */ "./resources/js/views/auth/password/Request.vue"); -/* harmony import */ var _views_auth_password_Reset__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./views/auth/password/Reset */ "./resources/js/views/auth/password/Reset.vue"); -/* harmony import */ var _views_auth_webauthn_Lost__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./views/auth/webauthn/Lost */ "./resources/js/views/auth/webauthn/Lost.vue"); -/* harmony import */ var _views_auth_webauthn_Recover__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./views/auth/webauthn/Recover */ "./resources/js/views/auth/webauthn/Recover.vue"); -/* harmony import */ var _views_settings_Options__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./views/settings/Options */ "./resources/js/views/settings/Options.vue"); -/* harmony import */ var _views_settings_Account__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./views/settings/Account */ "./resources/js/views/settings/Account.vue"); -/* harmony import */ var _views_settings_OAuth__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./views/settings/OAuth */ "./resources/js/views/settings/OAuth.vue"); -/* harmony import */ var _views_settings_WebAuthn__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./views/settings/WebAuthn */ "./resources/js/views/settings/WebAuthn.vue"); -/* harmony import */ var _views_settings_Credentials_Edit__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./views/settings/Credentials/Edit */ "./resources/js/views/settings/Credentials/Edit.vue"); -/* harmony import */ var _views_settings_PATokens_Create__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./views/settings/PATokens/Create */ "./resources/js/views/settings/PATokens/Create.vue"); -/* harmony import */ var _views_Error__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./views/Error */ "./resources/js/views/Error.vue"); +/* harmony import */ var _views_auth_Autolock__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./views/auth/Autolock */ "./resources/js/views/auth/Autolock.vue"); +/* harmony import */ var _views_auth_password_Request__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./views/auth/password/Request */ "./resources/js/views/auth/password/Request.vue"); +/* harmony import */ var _views_auth_password_Reset__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./views/auth/password/Reset */ "./resources/js/views/auth/password/Reset.vue"); +/* harmony import */ var _views_auth_webauthn_Lost__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./views/auth/webauthn/Lost */ "./resources/js/views/auth/webauthn/Lost.vue"); +/* harmony import */ var _views_auth_webauthn_Recover__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./views/auth/webauthn/Recover */ "./resources/js/views/auth/webauthn/Recover.vue"); +/* harmony import */ var _views_settings_Options__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./views/settings/Options */ "./resources/js/views/settings/Options.vue"); +/* harmony import */ var _views_settings_Account__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./views/settings/Account */ "./resources/js/views/settings/Account.vue"); +/* harmony import */ var _views_settings_OAuth__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./views/settings/OAuth */ "./resources/js/views/settings/OAuth.vue"); +/* harmony import */ var _views_settings_WebAuthn__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./views/settings/WebAuthn */ "./resources/js/views/settings/WebAuthn.vue"); +/* harmony import */ var _views_settings_Credentials_Edit__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./views/settings/Credentials/Edit */ "./resources/js/views/settings/Credentials/Edit.vue"); +/* harmony import */ var _views_settings_PATokens_Create__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./views/settings/PATokens/Create */ "./resources/js/views/settings/PATokens/Create.vue"); +/* harmony import */ var _views_Error__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./views/Error */ "./resources/js/views/Error.vue"); vue__WEBPACK_IMPORTED_MODULE_0__["default"].use(vue_router__WEBPACK_IMPORTED_MODULE_1__["default"]); @@ -20612,6 +20692,7 @@ vue__WEBPACK_IMPORTED_MODULE_0__["default"].use(vue_router__WEBPACK_IMPORTED_MOD + var router = new vue_router__WEBPACK_IMPORTED_MODULE_1__["default"]({ @@ -20695,43 +20776,43 @@ var router = new vue_router__WEBPACK_IMPORTED_MODULE_1__["default"]({ }, { path: '/settings/options', name: 'settings.options', - component: _views_settings_Options__WEBPACK_IMPORTED_MODULE_18__["default"], + component: _views_settings_Options__WEBPACK_IMPORTED_MODULE_19__["default"], meta: { requiresAuth: true } }, { path: '/settings/account', name: 'settings.account', - component: _views_settings_Account__WEBPACK_IMPORTED_MODULE_19__["default"], + component: _views_settings_Account__WEBPACK_IMPORTED_MODULE_20__["default"], meta: { requiresAuth: true } }, { path: '/settings/oauth', - name: 'settings.oauth', - component: _views_settings_OAuth__WEBPACK_IMPORTED_MODULE_20__["default"], - meta: { - requiresAuth: true - } - }, { - path: '/settings/webauthn/:credentialId/edit', - name: 'settings.webauthn.editCredential', - component: _views_settings_Credentials_Edit__WEBPACK_IMPORTED_MODULE_22__["default"], - meta: { - requiresAuth: true - }, - props: true - }, { - path: '/settings/webauthn', - name: 'settings.webauthn', - component: _views_settings_WebAuthn__WEBPACK_IMPORTED_MODULE_21__["default"], + name: 'settings.oauth.tokens', + component: _views_settings_OAuth__WEBPACK_IMPORTED_MODULE_21__["default"], meta: { requiresAuth: true } }, { path: '/settings/oauth/pat/create', name: 'settings.oauth.generatePAT', - component: _views_settings_PATokens_Create__WEBPACK_IMPORTED_MODULE_23__["default"], + component: _views_settings_PATokens_Create__WEBPACK_IMPORTED_MODULE_24__["default"], + meta: { + requiresAuth: true + } + }, { + path: '/settings/webauthn/:credentialId/edit', + name: 'settings.webauthn.editCredential', + component: _views_settings_Credentials_Edit__WEBPACK_IMPORTED_MODULE_23__["default"], + meta: { + requiresAuth: true + }, + props: true + }, { + path: '/settings/webauthn', + name: 'settings.webauthn.devices', + component: _views_settings_WebAuthn__WEBPACK_IMPORTED_MODULE_22__["default"], meta: { requiresAuth: true } @@ -20749,48 +20830,55 @@ var router = new vue_router__WEBPACK_IMPORTED_MODULE_1__["default"]({ meta: { disabledWithAuthProxy: true } + }, { + path: '/autolock', + name: 'autolock', + component: _views_auth_Autolock__WEBPACK_IMPORTED_MODULE_14__["default"], + meta: { + disabledWithAuthProxy: true + } }, { path: '/password/request', name: 'password.request', - component: _views_auth_password_Request__WEBPACK_IMPORTED_MODULE_14__["default"], + component: _views_auth_password_Request__WEBPACK_IMPORTED_MODULE_15__["default"], meta: { disabledWithAuthProxy: true } }, { path: '/password/reset/:token', name: 'password.reset', - component: _views_auth_password_Reset__WEBPACK_IMPORTED_MODULE_15__["default"], + component: _views_auth_password_Reset__WEBPACK_IMPORTED_MODULE_16__["default"], meta: { disabledWithAuthProxy: true } }, { path: '/webauthn/lost', name: 'webauthn.lost', - component: _views_auth_webauthn_Lost__WEBPACK_IMPORTED_MODULE_16__["default"], + component: _views_auth_webauthn_Lost__WEBPACK_IMPORTED_MODULE_17__["default"], meta: { disabledWithAuthProxy: true } }, { path: '/webauthn/recover', name: 'webauthn.recover', - component: _views_auth_webauthn_Recover__WEBPACK_IMPORTED_MODULE_17__["default"], + component: _views_auth_webauthn_Recover__WEBPACK_IMPORTED_MODULE_18__["default"], meta: { disabledWithAuthProxy: true } }, { path: '/flooded', name: 'flooded', - component: _views_Error__WEBPACK_IMPORTED_MODULE_24__["default"], + component: _views_Error__WEBPACK_IMPORTED_MODULE_25__["default"], props: true }, { path: '/error', name: 'genericError', - component: _views_Error__WEBPACK_IMPORTED_MODULE_24__["default"], + component: _views_Error__WEBPACK_IMPORTED_MODULE_25__["default"], props: true }, { path: '/404', name: '404', - component: _views_Error__WEBPACK_IMPORTED_MODULE_24__["default"], + component: _views_Error__WEBPACK_IMPORTED_MODULE_25__["default"], props: true }, { path: '*', @@ -20801,6 +20889,8 @@ var router = new vue_router__WEBPACK_IMPORTED_MODULE_1__["default"]({ }); var isFirstLoad = true; router.beforeEach(function (to, from, next) { + document.title = router.app.$options.i18n.t('titles.' + to.name); + if (to.name === 'accounts') { to.params.isFirstLoad = isFirstLoad ? true : false; isFirstLoad = false; @@ -27257,6 +27347,45 @@ component.options.__file = "resources/js/views/Start.vue" /***/ }), +/***/ "./resources/js/views/auth/Autolock.vue": +/*!**********************************************!*\ + !*** ./resources/js/views/auth/Autolock.vue ***! + \**********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _Autolock_vue_vue_type_template_id_58efe5dc___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Autolock.vue?vue&type=template&id=58efe5dc& */ "./resources/js/views/auth/Autolock.vue?vue&type=template&id=58efe5dc&"); +/* harmony import */ var _Autolock_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Autolock.vue?vue&type=script&lang=js& */ "./resources/js/views/auth/Autolock.vue?vue&type=script&lang=js&"); +/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ +; +var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _Autolock_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], + _Autolock_vue_vue_type_template_id_58efe5dc___WEBPACK_IMPORTED_MODULE_0__.render, + _Autolock_vue_vue_type_template_id_58efe5dc___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "resources/js/views/auth/Autolock.vue" +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); + +/***/ }), + /***/ "./resources/js/views/auth/Login.vue": /*!*******************************************!*\ !*** ./resources/js/views/auth/Login.vue ***! @@ -28279,6 +28408,22 @@ __webpack_require__.r(__webpack_exports__); /***/ }), +/***/ "./resources/js/views/auth/Autolock.vue?vue&type=script&lang=js&": +/*!***********************************************************************!*\ + !*** ./resources/js/views/auth/Autolock.vue?vue&type=script&lang=js& ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_clonedRuleSet_5_0_rules_0_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Autolock_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Autolock.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-5[0].rules[0].use[0]!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/views/auth/Autolock.vue?vue&type=script&lang=js&"); + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_clonedRuleSet_5_0_rules_0_use_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Autolock_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + /***/ "./resources/js/views/auth/Login.vue?vue&type=script&lang=js&": /*!********************************************************************!*\ !*** ./resources/js/views/auth/Login.vue?vue&type=script&lang=js& ***! @@ -28918,6 +29063,23 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Start_vue_vue_type_template_id_0af62c5a___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Start.vue?vue&type=template&id=0af62c5a& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/views/Start.vue?vue&type=template&id=0af62c5a&"); +/***/ }), + +/***/ "./resources/js/views/auth/Autolock.vue?vue&type=template&id=58efe5dc&": +/*!*****************************************************************************!*\ + !*** ./resources/js/views/auth/Autolock.vue?vue&type=template&id=58efe5dc& ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "render": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Autolock_vue_vue_type_template_id_58efe5dc___WEBPACK_IMPORTED_MODULE_0__.render), +/* harmony export */ "staticRenderFns": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Autolock_vue_vue_type_template_id_58efe5dc___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) +/* harmony export */ }); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Autolock_vue_vue_type_template_id_58efe5dc___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Autolock.vue?vue&type=template&id=58efe5dc& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/views/auth/Autolock.vue?vue&type=template&id=58efe5dc&"); + + /***/ }), /***/ "./resources/js/views/auth/Login.vue?vue&type=template&id=46ec553e&": @@ -29264,6 +29426,23 @@ var render = function () { ) : _vm._e(), _vm._v(" "), + this.$root.isTestingApp + ? _c( + "div", + { + staticClass: + "demo has-background-warning has-text-centered is-size-7-mobile", + }, + [ + _vm._v( + "\n " + + _vm._s(_vm.$t("commons.testing_do_not_post_sensitive_data")) + + "\n " + ), + ] + ) + : _vm._e(), + _vm._v(" "), _c("notifications", { attrs: { width: "100%", @@ -29639,6 +29818,7 @@ var render = function () { ], staticClass: "input", attrs: { + disabled: _vm.isDisabled, id: _vm.fieldName, placeholder: _vm.placeholder, type: "checkbox", @@ -29693,6 +29873,7 @@ var render = function () { ], staticClass: "input", attrs: { + disabled: _vm.isDisabled, id: _vm.fieldName, placeholder: _vm.placeholder, type: "radio", @@ -29723,6 +29904,7 @@ var render = function () { ], staticClass: "input", attrs: { + disabled: _vm.isDisabled, id: _vm.fieldName, placeholder: _vm.placeholder, type: _vm.inputType, @@ -29993,7 +30175,10 @@ var render = function () { return _vm.$set(_vm.form, _vm.fieldName, choice.value) }, function ($event) { - return _vm.$emit(_vm.fieldName, _vm.form[_vm.fieldName]) + return _vm.$emit( + "otpTypeSelected", + _vm.form[_vm.fieldName] + ) }, ], }, @@ -30261,8 +30446,8 @@ var render = function () { { name: "show", rawName: "v-show", - value: _vm.internal_otp_type === "totp", - expression: "internal_otp_type === 'totp'", + value: _vm.isTimeBased(_vm.internal_otp_type), + expression: "isTimeBased(internal_otp_type)", }, ], staticClass: "dots", @@ -30280,8 +30465,8 @@ var render = function () { { name: "show", rawName: "v-show", - value: _vm.internal_otp_type === "hotp", - expression: "internal_otp_type === 'hotp'", + value: _vm.isHMacBased(_vm.internal_otp_type), + expression: "isHMacBased(internal_otp_type)", }, ], }, @@ -31841,6 +32026,61 @@ render._withStripped = true +/***/ }), + +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/views/auth/Autolock.vue?vue&type=template&id=58efe5dc&": +/*!********************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/views/auth/Autolock.vue?vue&type=template&id=58efe5dc& ***! + \********************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "render": () => (/* binding */ render), +/* harmony export */ "staticRenderFns": () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "form-wrapper", + { + attrs: { + title: _vm.$t("auth.autolock_triggered"), + punchline: _vm.$t("auth.autolock_triggered_punchline"), + }, + }, + [ + _c("p", [_vm._v(_vm._s(_vm.$t("auth.change_autolock_in_settings")))]), + _vm._v(" "), + _c("div", { staticClass: "nav-links" }, [ + _c( + "p", + [ + _c( + "router-link", + { + staticClass: "button is-link", + attrs: { + to: { name: "login", params: { forceRefresh: true } }, + }, + }, + [_vm._v(_vm._s(_vm.$t("auth.sign_in")))] + ), + ], + 1 + ), + ]), + ] + ) +} +var staticRenderFns = [] +render._withStripped = true + + + /***/ }), /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./resources/js/views/auth/Login.vue?vue&type=template&id=46ec553e&": @@ -31963,6 +32203,20 @@ var render = function () { }) : _vm._e(), _vm._v(" "), + _vm.isTesting + ? _c("div", { + staticClass: + "notification is-warning has-text-centered is-radiusless", + domProps: { + innerHTML: _vm._s( + _vm.$t( + "auth.forms.welcome_to_testing_app_use_those_credentials" + ) + ), + }, + }) + : _vm._e(), + _vm._v(" "), _c( "form", { @@ -33859,7 +34113,7 @@ var render = function () { return _c( "div", [ - _c("setting-tabs", { attrs: { activeTab: "settings.webauthn" } }), + _c("setting-tabs", { attrs: { activeTab: "settings.webauthn.devices" } }), _vm._v(" "), _c( "div", @@ -34320,6 +34574,7 @@ var render = function () { _c("form-field", { attrs: { form: _vm.form, + isDisabled: _vm.form.otp_type === "steamtotp", fieldName: "service", inputType: "text", label: _vm.$t("twofaccounts.service"), @@ -34412,202 +34667,217 @@ var render = function () { help: _vm.$t("twofaccounts.forms.otp_type.help"), hasOffset: true, }, + on: { otpTypeSelected: _vm.SetFormState }, }), _vm._v(" "), _vm.form.otp_type - ? _c( - "div", - [ - _c("label", { - staticClass: "label", - domProps: { - innerHTML: _vm._s( - _vm.$t("twofaccounts.forms.secret.label") - ), - }, - }), - _vm._v(" "), - _c("div", { staticClass: "field has-addons" }, [ - _c("p", { staticClass: "control" }, [ - _c("span", { staticClass: "select" }, [ - _c( - "select", - { - directives: [ - { - name: "model", - rawName: "v-model", - value: _vm.secretIsBase32Encoded, - expression: "secretIsBase32Encoded", + ? _c("div", [ + _c("label", { + staticClass: "label", + domProps: { + innerHTML: _vm._s( + _vm.$t("twofaccounts.forms.secret.label") + ), + }, + }), + _vm._v(" "), + _c("div", { staticClass: "field has-addons" }, [ + _c("p", { staticClass: "control" }, [ + _c("span", { staticClass: "select" }, [ + _c( + "select", + { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.secretIsBase32Encoded, + expression: "secretIsBase32Encoded", + }, + ], + on: { + change: [ + function ($event) { + var $$selectedVal = + Array.prototype.filter + .call( + $event.target.options, + function (o) { + return o.selected + } + ) + .map(function (o) { + var val = + "_value" in o + ? o._value + : o.value + return val + }) + _vm.secretIsBase32Encoded = $event + .target.multiple + ? $$selectedVal + : $$selectedVal[0] + }, + function ($event) { + _vm.form.secret = "" }, ], - on: { - change: [ - function ($event) { - var $$selectedVal = - Array.prototype.filter - .call( - $event.target.options, - function (o) { - return o.selected - } - ) - .map(function (o) { - var val = - "_value" in o - ? o._value - : o.value - return val - }) - _vm.secretIsBase32Encoded = $event - .target.multiple - ? $$selectedVal - : $$selectedVal[0] - }, - function ($event) { - _vm.form.secret = "" - }, - ], - }, - }, - _vm._l(_vm.secretFormats, function (format) { - return _c( - "option", - { domProps: { value: format.value } }, - [_vm._v(_vm._s(format.text))] - ) - }), - 0 - ), - ]), - ]), - _vm._v(" "), - _c("p", { staticClass: "control is-expanded" }, [ - _c("input", { - directives: [ - { - name: "model", - rawName: "v-model", - value: _vm.form.secret, - expression: "form.secret", - }, - ], - staticClass: "input", - attrs: { type: "text" }, - domProps: { value: _vm.form.secret }, - on: { - input: function ($event) { - if ($event.target.composing) { - return - } - _vm.$set( - _vm.form, - "secret", - $event.target.value - ) }, }, - }), - ]), - ]), - _vm._v(" "), - _c( - "div", - { staticClass: "field" }, - [ - _c("field-error", { - staticClass: "help-for-file", - attrs: { form: _vm.form, field: "secret" }, - }), - _vm._v(" "), - _c("p", { - staticClass: "help", - domProps: { - innerHTML: _vm._s( - _vm.$t("twofaccounts.forms.secret.help") - ), - }, - }), - ], - 1 - ), - _vm._v(" "), - _c("h2", { staticClass: "title is-4 mt-5 mb-2" }, [ - _vm._v(_vm._s(_vm.$t("commons.options"))), - ]), - _vm._v(" "), - _c("p", { staticClass: "help mb-4" }, [ - _vm._v( - "\n " + - _vm._s( - _vm.$t("twofaccounts.forms.options_help") - ) + - "\n " - ), - ]), - _vm._v(" "), - _c("form-toggle", { - attrs: { - form: _vm.form, - choices: _vm.digitsChoices, - fieldName: "digits", - label: _vm.$t("twofaccounts.forms.digits.label"), - help: _vm.$t("twofaccounts.forms.digits.help"), - }, - }), - _vm._v(" "), - _c("form-toggle", { - attrs: { - form: _vm.form, - choices: _vm.algorithms, - fieldName: "algorithm", - label: _vm.$t( - "twofaccounts.forms.algorithm.label" + _vm._l(_vm.secretFormats, function (format) { + return _c( + "option", + { domProps: { value: format.value } }, + [_vm._v(_vm._s(format.text))] + ) + }), + 0 ), - help: _vm.$t("twofaccounts.forms.algorithm.help"), - }, - }), + ]), + ]), _vm._v(" "), - _vm.form.otp_type === "totp" - ? _c("form-field", { - attrs: { - form: _vm.form, - fieldName: "period", - inputType: "text", - label: _vm.$t( - "twofaccounts.forms.period.label" - ), - placeholder: _vm.$t( - "twofaccounts.forms.period.placeholder" - ), - help: _vm.$t( - "twofaccounts.forms.period.help" - ), + _c("p", { staticClass: "control is-expanded" }, [ + _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.form.secret, + expression: "form.secret", }, - }) - : _vm._e(), - _vm._v(" "), - _vm.form.otp_type === "hotp" - ? _c("form-field", { - attrs: { - form: _vm.form, - fieldName: "counter", - inputType: "text", - label: _vm.$t( - "twofaccounts.forms.counter.label" - ), - placeholder: _vm.$t( - "twofaccounts.forms.counter.placeholder" - ), - help: _vm.$t( - "twofaccounts.forms.counter.help" - ), + ], + staticClass: "input", + attrs: { type: "text" }, + domProps: { value: _vm.form.secret }, + on: { + input: function ($event) { + if ($event.target.composing) { + return + } + _vm.$set( + _vm.form, + "secret", + $event.target.value + ) }, - }) - : _vm._e(), - ], - 1 - ) + }, + }), + ]), + ]), + _vm._v(" "), + _c( + "div", + { staticClass: "field" }, + [ + _c("field-error", { + staticClass: "help-for-file", + attrs: { form: _vm.form, field: "secret" }, + }), + _vm._v(" "), + _c("p", { + staticClass: "help", + domProps: { + innerHTML: _vm._s( + _vm.$t("twofaccounts.forms.secret.help") + ), + }, + }), + ], + 1 + ), + _vm._v(" "), + _vm.form.otp_type !== "steamtotp" + ? _c( + "div", + [ + _c( + "h2", + { staticClass: "title is-4 mt-5 mb-2" }, + [_vm._v(_vm._s(_vm.$t("commons.options")))] + ), + _vm._v(" "), + _c("p", { staticClass: "help mb-4" }, [ + _vm._v( + "\n " + + _vm._s( + _vm.$t( + "twofaccounts.forms.options_help" + ) + ) + + "\n " + ), + ]), + _vm._v(" "), + _c("form-toggle", { + attrs: { + form: _vm.form, + choices: _vm.digitsChoices, + fieldName: "digits", + label: _vm.$t( + "twofaccounts.forms.digits.label" + ), + help: _vm.$t( + "twofaccounts.forms.digits.help" + ), + }, + }), + _vm._v(" "), + _c("form-toggle", { + attrs: { + form: _vm.form, + choices: _vm.algorithms, + fieldName: "algorithm", + label: _vm.$t( + "twofaccounts.forms.algorithm.label" + ), + help: _vm.$t( + "twofaccounts.forms.algorithm.help" + ), + }, + }), + _vm._v(" "), + _vm.form.otp_type === "totp" + ? _c("form-field", { + attrs: { + form: _vm.form, + fieldName: "period", + inputType: "text", + label: _vm.$t( + "twofaccounts.forms.period.label" + ), + placeholder: _vm.$t( + "twofaccounts.forms.period.placeholder" + ), + help: _vm.$t( + "twofaccounts.forms.period.help" + ), + }, + }) + : _vm._e(), + _vm._v(" "), + _vm.form.otp_type === "hotp" + ? _c("form-field", { + attrs: { + form: _vm.form, + fieldName: "counter", + inputType: "text", + label: _vm.$t( + "twofaccounts.forms.counter.label" + ), + placeholder: _vm.$t( + "twofaccounts.forms.counter.placeholder" + ), + help: _vm.$t( + "twofaccounts.forms.counter.help" + ), + }, + }) + : _vm._e(), + ], + 1 + ) + : _vm._e(), + ]) : _vm._e(), _vm._v(" "), _c("vue-footer", { attrs: { showButtons: true } }, [ @@ -34824,6 +35094,7 @@ var render = function () { [ _c("form-field", { attrs: { + isDisabled: _vm.form.otp_type === "steamtotp", form: _vm.form, fieldName: "service", inputType: "text", @@ -34915,359 +35186,384 @@ var render = function () { }), _vm._v(" "), _vm.form.otp_type - ? _c( - "div", - [ - _c("label", { - staticClass: "label", - domProps: { - innerHTML: _vm._s( - _vm.$t("twofaccounts.forms.secret.label") - ), - }, - }), - _vm._v(" "), - _c("div", { staticClass: "field has-addons" }, [ - _c("p", { staticClass: "control" }, [ - _c("span", { staticClass: "select" }, [ - _c( - "select", - { - directives: [ - { - name: "model", - rawName: "v-model", - value: _vm.secretIsBase32Encoded, - expression: "secretIsBase32Encoded", - }, - ], - on: { - change: [ - function ($event) { - var $$selectedVal = Array.prototype.filter - .call($event.target.options, function (o) { - return o.selected - }) - .map(function (o) { - var val = - "_value" in o ? o._value : o.value - return val - }) - _vm.secretIsBase32Encoded = $event.target - .multiple - ? $$selectedVal - : $$selectedVal[0] - }, - function ($event) { - _vm.form.secret = "" + ? _c("div", [ + _c("label", { + staticClass: "label", + domProps: { + innerHTML: _vm._s( + _vm.$t("twofaccounts.forms.secret.label") + ), + }, + }), + _vm._v(" "), + _c("div", { staticClass: "field has-addons" }, [ + !_vm.secretIsLocked + ? _c("p", { staticClass: "control" }, [ + _c("span", { staticClass: "select" }, [ + _c( + "select", + { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.secretIsBase32Encoded, + expression: "secretIsBase32Encoded", }, ], - }, - }, - _vm._l(_vm.secretFormats, function (format) { - return _c( - "option", - { domProps: { value: format.value } }, - [_vm._v(_vm._s(format.text))] - ) - }), - 0 - ), - ]), - ]), - _vm._v(" "), - _c("p", { staticClass: "control is-expanded" }, [ - _c("input", { - directives: [ - { - name: "model", - rawName: "v-model", - value: _vm.form.secret, - expression: "form.secret", - }, - ], - staticClass: "input", - attrs: { type: "text", disabled: _vm.secretIsLocked }, - domProps: { value: _vm.form.secret }, - on: { - input: function ($event) { - if ($event.target.composing) { - return - } - _vm.$set(_vm.form, "secret", $event.target.value) - }, - }, - }), - ]), - _vm._v(" "), - _vm.secretIsLocked - ? _c("p", { staticClass: "control" }, [ - _c( - "a", - { - staticClass: "button is-dark field-lock", - attrs: { - title: _vm.$t( - "twofaccounts.forms.unlock.title" - ), - }, on: { - click: function ($event) { - _vm.secretIsLocked = false - }, + change: [ + function ($event) { + var $$selectedVal = Array.prototype.filter + .call( + $event.target.options, + function (o) { + return o.selected + } + ) + .map(function (o) { + var val = + "_value" in o ? o._value : o.value + return val + }) + _vm.secretIsBase32Encoded = $event.target + .multiple + ? $$selectedVal + : $$selectedVal[0] + }, + function ($event) { + _vm.form.secret = "" + }, + ], }, }, - [ - _c( - "span", - { staticClass: "icon" }, - [ - _c("font-awesome-icon", { - attrs: { icon: ["fas", "lock"] }, - }), - ], - 1 - ), - ] - ), - ]) - : _c("p", { staticClass: "control" }, [ - _c( - "a", - { - staticClass: "button is-dark field-unlock", - attrs: { - title: _vm.$t("twofaccounts.forms.lock.title"), - }, - on: { - click: function ($event) { - _vm.secretIsLocked = true - }, - }, - }, - [ - _c( - "span", - { staticClass: "icon has-text-danger" }, - [ - _c("font-awesome-icon", { - attrs: { icon: ["fas", "lock-open"] }, - }), - ], - 1 - ), - ] + _vm._l(_vm.secretFormats, function (format) { + return _c( + "option", + { domProps: { value: format.value } }, + [_vm._v(_vm._s(format.text))] + ) + }), + 0 ), ]), - ]), - _vm._v(" "), - _c( - "div", - { staticClass: "field" }, - [ - _c("field-error", { - staticClass: "help-for-file", - attrs: { form: _vm.form, field: "secret" }, - }), - _vm._v(" "), - _c("p", { - staticClass: "help", - domProps: { - innerHTML: _vm._s( - _vm.$t("twofaccounts.forms.secret.help") - ), - }, - }), - ], - 1 - ), - _vm._v(" "), - _c("h2", { staticClass: "title is-4 mt-5 mb-2" }, [ - _vm._v(_vm._s(_vm.$t("commons.options"))), - ]), - _vm._v(" "), - _c("p", { staticClass: "help mb-4" }, [ - _vm._v( - "\n " + - _vm._s(_vm.$t("twofaccounts.forms.options_help")) + - "\n " - ), - ]), - _vm._v(" "), - _c("form-toggle", { - attrs: { - form: _vm.form, - choices: _vm.digitsChoices, - fieldName: "digits", - label: _vm.$t("twofaccounts.forms.digits.label"), - help: _vm.$t("twofaccounts.forms.digits.help"), - }, - }), - _vm._v(" "), - _c("form-toggle", { - attrs: { - form: _vm.form, - choices: _vm.algorithms, - fieldName: "algorithm", - label: _vm.$t("twofaccounts.forms.algorithm.label"), - help: _vm.$t("twofaccounts.forms.algorithm.help"), - }, - }), - _vm._v(" "), - _vm.form.otp_type === "totp" - ? _c("form-field", { - attrs: { - form: _vm.form, - fieldName: "period", - inputType: "text", - label: _vm.$t("twofaccounts.forms.period.label"), - placeholder: _vm.$t( - "twofaccounts.forms.period.placeholder" - ), - help: _vm.$t("twofaccounts.forms.period.help"), - }, - }) + ]) : _vm._e(), _vm._v(" "), - _vm.form.otp_type === "hotp" - ? _c( - "div", - [ - _c( - "div", - { - staticClass: "field", - staticStyle: { "margin-bottom": "0.5rem" }, + _c("p", { staticClass: "control is-expanded" }, [ + _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.form.secret, + expression: "form.secret", + }, + ], + staticClass: "input", + attrs: { type: "text", disabled: _vm.secretIsLocked }, + domProps: { value: _vm.form.secret }, + on: { + input: function ($event) { + if ($event.target.composing) { + return + } + _vm.$set(_vm.form, "secret", $event.target.value) + }, + }, + }), + ]), + _vm._v(" "), + _vm.secretIsLocked + ? _c("p", { staticClass: "control" }, [ + _c( + "a", + { + staticClass: "button is-dark field-lock", + attrs: { + title: _vm.$t("twofaccounts.forms.unlock.title"), }, - [ - _c("label", { staticClass: "label" }, [ - _vm._v( - _vm._s( - _vm.$t("twofaccounts.forms.counter.label") - ) + on: { + click: function ($event) { + _vm.secretIsLocked = false + }, + }, + }, + [ + _c( + "span", + { staticClass: "icon" }, + [ + _c("font-awesome-icon", { + attrs: { icon: ["fas", "lock"] }, + }), + ], + 1 + ), + ] + ), + ]) + : _c("p", { staticClass: "control" }, [ + _c( + "a", + { + staticClass: "button is-dark field-unlock", + attrs: { + title: _vm.$t("twofaccounts.forms.lock.title"), + }, + on: { + click: function ($event) { + _vm.secretIsLocked = true + }, + }, + }, + [ + _c( + "span", + { staticClass: "icon has-text-danger" }, + [ + _c("font-awesome-icon", { + attrs: { icon: ["fas", "lock-open"] }, + }), + ], + 1 + ), + ] + ), + ]), + ]), + _vm._v(" "), + _c( + "div", + { staticClass: "field" }, + [ + _c("field-error", { + staticClass: "help-for-file", + attrs: { form: _vm.form, field: "secret" }, + }), + _vm._v(" "), + _c("p", { + staticClass: "help", + domProps: { + innerHTML: _vm._s( + _vm.$t("twofaccounts.forms.secret.help") + ), + }, + }), + ], + 1 + ), + _vm._v(" "), + _vm.form.otp_type !== "steamtotp" + ? _c( + "div", + [ + _c("h2", { staticClass: "title is-4 mt-5 mb-2" }, [ + _vm._v(_vm._s(_vm.$t("commons.options"))), + ]), + _vm._v(" "), + _c("p", { staticClass: "help mb-4" }, [ + _vm._v( + "\n " + + _vm._s( + _vm.$t("twofaccounts.forms.options_help") + ) + + "\n " + ), + ]), + _vm._v(" "), + _c("form-toggle", { + attrs: { + form: _vm.form, + choices: _vm.digitsChoices, + fieldName: "digits", + label: _vm.$t("twofaccounts.forms.digits.label"), + help: _vm.$t("twofaccounts.forms.digits.help"), + }, + }), + _vm._v(" "), + _c("form-toggle", { + attrs: { + form: _vm.form, + choices: _vm.algorithms, + fieldName: "algorithm", + label: _vm.$t("twofaccounts.forms.algorithm.label"), + help: _vm.$t("twofaccounts.forms.algorithm.help"), + }, + }), + _vm._v(" "), + _vm.form.otp_type === "totp" + ? _c("form-field", { + attrs: { + form: _vm.form, + fieldName: "period", + inputType: "text", + label: _vm.$t( + "twofaccounts.forms.period.label" ), - ]), - ] - ), - _vm._v(" "), - _c("div", { staticClass: "field has-addons" }, [ - _c("div", { staticClass: "control is-expanded" }, [ - _c("input", { - directives: [ + placeholder: _vm.$t( + "twofaccounts.forms.period.placeholder" + ), + help: _vm.$t("twofaccounts.forms.period.help"), + }, + }) + : _vm._e(), + _vm._v(" "), + _vm.form.otp_type === "hotp" + ? _c( + "div", + [ + _c( + "div", { - name: "model", - rawName: "v-model", - value: _vm.form.counter, - expression: "form.counter", + staticClass: "field", + staticStyle: { "margin-bottom": "0.5rem" }, }, - ], - staticClass: "input", - attrs: { - type: "text", - placeholder: "", - disabled: _vm.counterIsLocked, - }, - domProps: { value: _vm.form.counter }, - on: { - input: function ($event) { - if ($event.target.composing) { - return - } - _vm.$set( - _vm.form, - "counter", - $event.target.value - ) - }, - }, - }), - ]), - _vm._v(" "), - _vm.counterIsLocked - ? _c("div", { staticClass: "control" }, [ - _c( - "a", - { - staticClass: "button is-dark field-lock", - attrs: { - title: _vm.$t( - "twofaccounts.forms.unlock.title" - ), - }, - on: { - click: function ($event) { - _vm.counterIsLocked = false - }, - }, - }, - [ - _c( - "span", - { staticClass: "icon" }, - [ - _c("font-awesome-icon", { - attrs: { icon: ["fas", "lock"] }, - }), - ], - 1 + [ + _c("label", { staticClass: "label" }, [ + _vm._v( + _vm._s( + _vm.$t( + "twofaccounts.forms.counter.label" + ) + ) ), + ]), + ] + ), + _vm._v(" "), + _c("div", { staticClass: "field has-addons" }, [ + _c( + "div", + { staticClass: "control is-expanded" }, + [ + _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.form.counter, + expression: "form.counter", + }, + ], + staticClass: "input", + attrs: { + type: "text", + placeholder: "", + disabled: _vm.counterIsLocked, + }, + domProps: { value: _vm.form.counter }, + on: { + input: function ($event) { + if ($event.target.composing) { + return + } + _vm.$set( + _vm.form, + "counter", + $event.target.value + ) + }, + }, + }), ] ), - ]) - : _c("div", { staticClass: "control" }, [ - _c( - "a", - { - staticClass: - "button is-dark field-unlock", - attrs: { - title: _vm.$t( - "twofaccounts.forms.lock.title" - ), - }, - on: { - click: function ($event) { - _vm.counterIsLocked = true - }, - }, - }, - [ - _c( - "span", - { staticClass: "icon has-text-danger" }, - [ - _c("font-awesome-icon", { + _vm._v(" "), + _vm.counterIsLocked + ? _c("div", { staticClass: "control" }, [ + _c( + "a", + { + staticClass: + "button is-dark field-lock", attrs: { - icon: ["fas", "lock-open"], + title: _vm.$t( + "twofaccounts.forms.unlock.title" + ), }, - }), - ], - 1 - ), - ] - ), + on: { + click: function ($event) { + _vm.counterIsLocked = false + }, + }, + }, + [ + _c( + "span", + { staticClass: "icon" }, + [ + _c("font-awesome-icon", { + attrs: { + icon: ["fas", "lock"], + }, + }), + ], + 1 + ), + ] + ), + ]) + : _c("div", { staticClass: "control" }, [ + _c( + "a", + { + staticClass: + "button is-dark field-unlock", + attrs: { + title: _vm.$t( + "twofaccounts.forms.lock.title" + ), + }, + on: { + click: function ($event) { + _vm.counterIsLocked = true + }, + }, + }, + [ + _c( + "span", + { + staticClass: + "icon has-text-danger", + }, + [ + _c("font-awesome-icon", { + attrs: { + icon: ["fas", "lock-open"], + }, + }), + ], + 1 + ), + ] + ), + ]), ]), - ]), - _vm._v(" "), - _c("field-error", { - attrs: { form: _vm.form, field: "counter" }, - }), - _vm._v(" "), - _c("p", { - staticClass: "help", - domProps: { - innerHTML: _vm._s( - _vm.$t("twofaccounts.forms.counter.help_lock") - ), - }, - }), - ], - 1 - ) - : _vm._e(), - ], - 1 - ) + _vm._v(" "), + _c("field-error", { + attrs: { form: _vm.form, field: "counter" }, + }), + _vm._v(" "), + _c("p", { + staticClass: "help", + domProps: { + innerHTML: _vm._s( + _vm.$t( + "twofaccounts.forms.counter.help_lock" + ) + ), + }, + }), + ], + 1 + ) + : _vm._e(), + ], + 1 + ) + : _vm._e(), + ]) : _vm._e(), _vm._v(" "), _c("vue-footer", { attrs: { showButtons: true } }, [ @@ -35542,7 +35838,7 @@ var render = function () { "\n " + _vm._s( _vm.$t( - "twofaccounts.import.import" + "twofaccounts.import.to_import" ) ) + "\n "