Skip to content
Snippets Groups Projects
Commit 85157594 authored by Julian's avatar Julian
Browse files

Fix/complete mfa translations

parent 3f68d5ef
Branches
Tags v2.1.0
No related merge requests found
Pipeline #16647 passed
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
function begin_webauthn() { function begin_webauthn() {
$('#webauthn-alert').addClass('d-none'); $('#webauthn-alert').addClass('d-none');
$('#webauthn-spinner').removeClass('d-none'); $('#webauthn-spinner').removeClass('d-none');
$('#webauthn-btn-text').text('Fetching credential data'); $('#webauthn-btn-text').text({{ _('Contacting server')|tojson }});
$('#webauthn-btn').prop('disabled', true); $('#webauthn-btn').prop('disabled', true);
fetch({{ url_for('mfa.auth_webauthn_begin')|tojson }}, { fetch({{ url_for('mfa.auth_webauthn_begin')|tojson }}, {
method: 'POST', method: 'POST',
...@@ -49,17 +49,17 @@ function begin_webauthn() { ...@@ -49,17 +49,17 @@ function begin_webauthn() {
return response.arrayBuffer(); return response.arrayBuffer();
} else if (response.status == 403) { } else if (response.status == 403) {
window.location = {{ request.url|tojson }}; /* reload */ window.location = {{ request.url|tojson }}; /* reload */
throw new Error('Session timed out'); throw new Error({{ _('Session timed out')|tojson }});
} else if (response.status == 404) { } else if (response.status == 404) {
throw new Error('You have not registered any U2F/FIDO2 devices for your account'); throw new Error({{ _('You have not registered any U2F/FIDO2 devices for your account')|tojson }});
} else { } else {
throw new Error('Server error'); throw new Error({{ _('Server error')|tojson }});
} }
}).then(CBOR.decode).then(function(options) { }).then(CBOR.decode).then(function(options) {
$('#webauthn-btn-text').text('Waiting for response from your device'); $('#webauthn-btn-text').text({{ _('Waiting for device')|tojson }});
return navigator.credentials.get(options); return navigator.credentials.get(options);
}).then(function(assertion) { }).then(function(assertion) {
$('#webauthn-btn-text').text('Verifing response'); $('#webauthn-btn-text').text({{ _('Verifing response')|tojson }});
return fetch({{ url_for('mfa.auth_webauthn_complete')|tojson }}, { return fetch({{ url_for('mfa.auth_webauthn_complete')|tojson }}, {
method: 'POST', method: 'POST',
headers: {'Content-Type': 'application/cbor'}, headers: {'Content-Type': 'application/cbor'},
...@@ -73,37 +73,37 @@ function begin_webauthn() { ...@@ -73,37 +73,37 @@ function begin_webauthn() {
}).then(function(response) { }).then(function(response) {
if (response.ok) { if (response.ok) {
$('#webauthn-spinner').addClass('d-none'); $('#webauthn-spinner').addClass('d-none');
$('#webauthn-btn-text').text('Success, redirecting'); $('#webauthn-btn-text').text({{ _('Success, redirecting')|tojson }});
window.location = {{ (ref or url_for('index'))|tojson }}; window.location = {{ (ref or url_for('index'))|tojson }};
} else if (response.status == 403) { } else if (response.status == 403) {
window.location = {{ request.url|tojson }}; /* reload */ window.location = {{ request.url|tojson }}; /* reload */
throw new Error('Session timed out'); throw new Error({{ _('Session timed out')|tojson }});
} else { } else {
throw new Error('Response from authenticator rejected'); throw new Error({{ _('Invalid response from device')|tojson }});
} }
}).catch(function(err) { }).catch(function(err) {
console.log(err); console.log(err);
/* various webauthn errors */ /* various webauthn errors */
if (err.name == 'NotAllowedError') if (err.name == 'NotAllowedError')
$('#webauthn-alert').text('Authentication timed out, was aborted or not allowed'); $('#webauthn-alert').text({{ _('Authentication timed out, was aborted or not allowed')|tojson }});
else if (err.name == 'InvalidStateError') else if (err.name == 'InvalidStateError')
$('#webauthn-alert').text('Device is not registered for your account'); $('#webauthn-alert').text({{ _('Device is not registered for your account')|tojson }});
else if (err.name == 'AbortError') else if (err.name == 'AbortError')
$('#webauthn-alert').text('Authentication was aborted'); $('#webauthn-alert').text({{ _('Authentication was aborted')|tojson }});
else if (err.name == 'NotSupportedError') else if (err.name == 'NotSupportedError')
$('#webauthn-alert').text('U2F and FIDO2 devices are not supported by your browser'); $('#webauthn-alert').text({{ _('U2F and FIDO2 devices are not supported by your browser')|tojson }});
/* errors from fetch() */ /* errors from fetch() */
else if (err.name == 'TypeError') else if (err.name == 'TypeError')
$('#webauthn-alert').text('Could not connect to server'); $('#webauthn-alert').text({{ _('Could not connect to server')|tojson }});
/* our own errors */ /* our own errors */
else if (err.name == 'Error') else if (err.name == 'Error')
$('#webauthn-alert').text(err.message); $('#webauthn-alert').text(err.message);
/* fallback */ /* fallback */
else else
$('#webauthn-alert').text('Authentication failed ('+err+')'); $('#webauthn-alert').text({{ _('Authentication failed ')|tojson }}+'('+err+')');
$('#webauthn-alert').removeClass('d-none'); $('#webauthn-alert').removeClass('d-none');
$('#webauthn-spinner').addClass('d-none'); $('#webauthn-spinner').addClass('d-none');
$('#webauthn-btn-text').text('Try FIDO token again'); $('#webauthn-btn-text').text({{ _('Retry authenticate with U2F/FIDO2 device')|tojson }});
$('#webauthn-btn').prop('disabled', false); $('#webauthn-btn').prop('disabled', false);
}); });
} }
......
...@@ -196,7 +196,7 @@ mfa_enabled: The user has setup at least one two-factor method. Two-factor authe ...@@ -196,7 +196,7 @@ mfa_enabled: The user has setup at least one two-factor method. Two-factor authe
$('#webauthn-form').on('submit', function(e) { $('#webauthn-form').on('submit', function(e) {
$('#webauthn-alert').addClass('d-none'); $('#webauthn-alert').addClass('d-none');
$('#webauthn-spinner').removeClass('d-none'); $('#webauthn-spinner').removeClass('d-none');
$('#webauthn-btn-text').text('Contacting server'); $('#webauthn-btn-text').text({{ _('Contacting server')|tojson }});
$('#webauthn-btn').prop('disabled', true); $('#webauthn-btn').prop('disabled', true);
fetch({{ url_for('mfa.setup_webauthn_begin')|tojson }}, { fetch({{ url_for('mfa.setup_webauthn_begin')|tojson }}, {
method: 'POST', method: 'POST',
...@@ -204,10 +204,10 @@ $('#webauthn-form').on('submit', function(e) { ...@@ -204,10 +204,10 @@ $('#webauthn-form').on('submit', function(e) {
if (response.ok) if (response.ok)
return response.arrayBuffer(); return response.arrayBuffer();
if (response.status == 403) if (response.status == 403)
throw new Error('You need to generate recovery codes first'); throw new Error({{ _('You need to generate recovery codes first')|tojson }});
throw new Error('Server error'); throw new Error({{ _('Server error')|tojson }});
}).then(CBOR.decode).then(function(options) { }).then(CBOR.decode).then(function(options) {
$('#webauthn-btn-text').text('Waiting for response from your device'); $('#webauthn-btn-text').text({{ _('Waiting for device')|tojson }});
return navigator.credentials.create(options); return navigator.credentials.create(options);
}).then(function(attestation) { }).then(function(attestation) {
return fetch({{ url_for('mfa.setup_webauthn_complete')|tojson }}, { return fetch({{ url_for('mfa.setup_webauthn_complete')|tojson }}, {
...@@ -222,34 +222,34 @@ $('#webauthn-form').on('submit', function(e) { ...@@ -222,34 +222,34 @@ $('#webauthn-form').on('submit', function(e) {
}).then(function(response) { }).then(function(response) {
if (response.ok) { if (response.ok) {
$('#webauthn-spinner').addClass('d-none'); $('#webauthn-spinner').addClass('d-none');
$('#webauthn-btn-text').text('Success'); $('#webauthn-btn-text').text({{ _('Success')|tojson }});
window.location = {{ url_for('mfa.setup')|tojson }}; window.location = {{ url_for('mfa.setup')|tojson }};
} else { } else {
throw new Error('Response from authenticator rejected'); throw new Error({{ _('Invalid response from device')|tojson }});
} }
}, function(err) { }, function(err) {
console.log(err); console.log(err);
/* various webauthn errors */ /* various webauthn errors */
if (err.name == 'NotAllowedError') if (err.name == 'NotAllowedError')
$('#webauthn-alert').text('Registration timed out, was aborted or not allowed'); $('#webauthn-alert').text({{ _('Registration timed out, was aborted or not allowed')|tojson }});
else if (err.name == 'InvalidStateError') else if (err.name == 'InvalidStateError')
$('#webauthn-alert').text('You attempted to register a device that is already registered'); $('#webauthn-alert').text({{ _('Device already registered')|tojson }});
else if (err.name == 'AbortError') else if (err.name == 'AbortError')
$('#webauthn-alert').text('Registration was aborted'); $('#webauthn-alert').text({{ _('Registration was aborted')|tojson }});
else if (err.name == 'NotSupportedError') else if (err.name == 'NotSupportedError')
$('#webauthn-alert').text('U2F and FIDO2 devices are not supported by your browser'); $('#webauthn-alert').text({{ _('U2F and FIDO2 devices are not supported by your browser')|tojson }});
/* errors from fetch() */ /* errors from fetch() */
else if (err.name == 'TypeError') else if (err.name == 'TypeError')
$('#webauthn-alert').text('Could not connect to server'); $('#webauthn-alert').text({{ _('Could not connect to server')|tojson }});
/* our own errors */ /* our own errors */
else if (err.name == 'Error') else if (err.name == 'Error')
$('#webauthn-alert').text(err.message); $('#webauthn-alert').text(err.message);
/* fallback */ /* fallback */
else else
$('#webauthn-alert').text('Registration failed ('+err+')'); $('#webauthn-alert').text({{ _('Registration failed')|tojson }}+' ('+err+')');
$('#webauthn-alert').removeClass('d-none'); $('#webauthn-alert').removeClass('d-none');
$('#webauthn-spinner').addClass('d-none'); $('#webauthn-spinner').addClass('d-none');
$('#webauthn-btn-text').text('Retry registration'); $('#webauthn-btn-text').text({{ _('Retry registration')|tojson }});
$('#webauthn-btn').prop('disabled', false); $('#webauthn-btn').prop('disabled', false);
}); });
return false; return false;
...@@ -261,7 +261,7 @@ if (typeof(PublicKeyCredential) != "undefined") { ...@@ -261,7 +261,7 @@ if (typeof(PublicKeyCredential) != "undefined") {
$('#webauthn-name').prop('disabled', false); $('#webauthn-name').prop('disabled', false);
{% endif %} {% endif %}
} else { } else {
$('#webauthn-alert').text('U2F and FIDO2 devices are not supported by your browser'); $('#webauthn-alert').text({{ _('U2F and FIDO2 devices are not supported by your browser')|tojson }});
$('#webauthn-alert').removeClass('d-none'); $('#webauthn-alert').removeClass('d-none');
} }
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</p> </p>
<div class="btn-toolbar"> <div class="btn-toolbar">
<a class="ml-auto mb-2 btn btn-primary d-print-none" href="{{ url_for('mfa.setup') }}">Continue</a> <a class="ml-auto mb-2 btn btn-primary d-print-none" href="{{ url_for('mfa.setup') }}">{{_("Continue")}}</a>
<a class="ml-2 mb-2 btn btn-light d-print-none" href="{{ methods|map(attribute='code')|join('\n')|datauri }}" download="uffd-recovery-codes"> <a class="ml-2 mb-2 btn btn-light d-print-none" href="{{ methods|map(attribute='code')|join('\n')|datauri }}" download="uffd-recovery-codes">
{{_("Download codes")}} {{_("Download codes")}}
</a> </a>
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<form action="{{ url_for('mfa.setup_totp_finish', name=name) }}" method="POST" class="form"> <form action="{{ url_for('mfa.setup_totp_finish', name=name) }}" method="POST" class="form">
<div class="row m-0"> <div class="row m-0">
<input type="text" name="code" class="form-control mb-2 mr-2 col-auto col-md" id="code" placeholder="Code" required autofocus> <input type="text" name="code" class="form-control mb-2 mr-2 col-auto col-md" id="code" placeholder="{{_('Code')}}" required autofocus>
<button type="submit" class="btn btn-primary mb-2 col col-md-auto">{{_("Verify and complete setup")}}</button> <button type="submit" class="btn btn-primary mb-2 col col-md-auto">{{_("Verify and complete setup")}}</button>
</div> </div>
</form> </form>
......
No preview for this file type
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2022-05-22 16:42+0200\n" "POT-Creation-Date: 2022-08-14 13:15+0200\n"
"PO-Revision-Date: 2021-05-25 21:18+0200\n" "PO-Revision-Date: 2021-05-25 21:18+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de\n" "Language: de\n"
...@@ -16,7 +16,7 @@ msgstr "" ...@@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.9.1\n" "Generated-By: Babel 2.8.0\n"
#: uffd/ratelimit.py:76 #: uffd/ratelimit.py:76
msgid "a few seconds" msgid "a few seconds"
...@@ -56,7 +56,8 @@ msgstr "Einladungslink weist keine Rollen zu" ...@@ -56,7 +56,8 @@ msgstr "Einladungslink weist keine Rollen zu"
msgid "Invite link does not grant any new roles" msgid "Invite link does not grant any new roles"
msgstr "Einladungslink weist keine neuen Rollen zu" msgstr "Einladungslink weist keine neuen Rollen zu"
#: uffd/invite/models.py:90 uffd/signup/models.py:115 #: uffd/invite/models.py:90 uffd/mfa/templates/mfa/setup.html:225
#: uffd/signup/models.py:115
msgid "Success" msgid "Success"
msgstr "Erfolgreich" msgstr "Erfolgreich"
...@@ -95,19 +96,19 @@ msgstr "Einladungslink erlaubt keine Account-Registrierung" ...@@ -95,19 +96,19 @@ msgstr "Einladungslink erlaubt keine Account-Registrierung"
msgid "Passwords do not match" msgid "Passwords do not match"
msgstr "Die Passwörter stimmen nicht überein" msgstr "Die Passwörter stimmen nicht überein"
#: uffd/invite/views.py:180 uffd/signup/views.py:54 #: uffd/invite/views.py:181 uffd/signup/views.py:55
#, python-format #, python-format
msgid "Too many signup requests with this mail address! Please wait %(delay)s." msgid "Too many signup requests with this mail address! Please wait %(delay)s."
msgstr "" msgstr ""
"Zu viele Account-Registrierungen mit dieser E-Mail-Adresse! Bitte warte " "Zu viele Account-Registrierungen mit dieser E-Mail-Adresse! Bitte warte "
"%(delay)s." "%(delay)s."
#: uffd/invite/views.py:182 uffd/signup/views.py:56 uffd/signup/views.py:96 #: uffd/invite/views.py:184 uffd/signup/views.py:58
#, python-format #, python-format
msgid "Too many requests! Please wait %(delay)s." msgid "Too many requests! Please wait %(delay)s."
msgstr "Zu viele Anfragen! Bitte warte %(delay)s." msgstr "Zu viele Anfragen! Bitte warte %(delay)s."
#: uffd/invite/views.py:195 uffd/signup/views.py:72 #: uffd/invite/views.py:199 uffd/signup/views.py:76
msgid "Could not send mail" msgid "Could not send mail"
msgstr "Mailversand fehlgeschlagen" msgstr "Mailversand fehlgeschlagen"
...@@ -451,7 +452,7 @@ msgstr "Generiere zuerst die Wiederherstellungscodes!" ...@@ -451,7 +452,7 @@ msgstr "Generiere zuerst die Wiederherstellungscodes!"
msgid "Code is invalid" msgid "Code is invalid"
msgstr "Wiederherstellungscode ist ungültig" msgstr "Wiederherstellungscode ist ungültig"
#: uffd/mfa/views.py:123 #: uffd/mfa/views.py:107
#, python-format #, python-format
msgid "" msgid ""
"2FA WebAuthn support disabled because import of the fido2 module failed " "2FA WebAuthn support disabled because import of the fido2 module failed "
...@@ -460,16 +461,16 @@ msgstr "" ...@@ -460,16 +461,16 @@ msgstr ""
"2FA WebAuthn Unterstützung deaktiviert, da das fido2 Modul nicht geladen " "2FA WebAuthn Unterstützung deaktiviert, da das fido2 Modul nicht geladen "
"werden konnte (%s)" "werden konnte (%s)"
#: uffd/mfa/views.py:232 #: uffd/mfa/views.py:216
#, python-format #, python-format
msgid "We received too many invalid attempts! Please wait at least %s." msgid "We received too many invalid attempts! Please wait at least %s."
msgstr "Wir haben zu viele fehlgeschlagene Versuche! Bitte warte mindestens %s." msgstr "Wir haben zu viele fehlgeschlagene Versuche! Bitte warte mindestens %s."
#: uffd/mfa/views.py:246 #: uffd/mfa/views.py:230
msgid "You have exhausted your recovery codes. Please generate new ones now!" msgid "You have exhausted your recovery codes. Please generate new ones now!"
msgstr "Du hast keine Wiederherstellungscode mehr. Bitte generiere diese jetzt!" msgstr "Du hast keine Wiederherstellungscode mehr. Bitte generiere diese jetzt!"
#: uffd/mfa/views.py:249 #: uffd/mfa/views.py:233
msgid "" msgid ""
"You only have a few recovery codes remaining. Make sure to generate new " "You only have a few recovery codes remaining. Make sure to generate new "
"ones before they run out." "ones before they run out."
...@@ -477,7 +478,7 @@ msgstr "" ...@@ -477,7 +478,7 @@ msgstr ""
"Du hast nur noch wenige Wiederherstellungscodes übrig. Bitte generiere " "Du hast nur noch wenige Wiederherstellungscodes übrig. Bitte generiere "
"diese erneut bevor keine mehr übrig sind." "diese erneut bevor keine mehr übrig sind."
#: uffd/mfa/views.py:253 #: uffd/mfa/views.py:237
msgid "Two-factor authentication failed" msgid "Two-factor authentication failed"
msgstr "Zwei-Faktor-Authentifizierung fehlgeschlagen" msgstr "Zwei-Faktor-Authentifizierung fehlgeschlagen"
...@@ -499,7 +500,7 @@ msgstr "" ...@@ -499,7 +500,7 @@ msgstr ""
#: uffd/mfa/templates/mfa/auth.html:21 #: uffd/mfa/templates/mfa/auth.html:21
msgid "Authenticate with U2F/FIDO2 device" msgid "Authenticate with U2F/FIDO2 device"
msgstr "Authentifiziere dich mit einem U2F/FIDO2 Gerät" msgstr "Authentifiziere dich mit einem U2F/FIDO2-Gerät"
#: uffd/mfa/templates/mfa/auth.html:24 #: uffd/mfa/templates/mfa/auth.html:24
msgid "or" msgid "or"
...@@ -513,6 +514,67 @@ msgstr "Code aus deiner Authentifikator-App oder Wiederherstellungscode" ...@@ -513,6 +514,67 @@ msgstr "Code aus deiner Authentifikator-App oder Wiederherstellungscode"
msgid "Verify" msgid "Verify"
msgstr "Verifizieren" msgstr "Verifizieren"
#: uffd/mfa/templates/mfa/auth.html:43 uffd/mfa/templates/mfa/setup.html:199
msgid "Contacting server"
msgstr "Verbinde mit Server"
#: uffd/mfa/templates/mfa/auth.html:52 uffd/mfa/templates/mfa/auth.html:80
msgid "Session timed out"
msgstr "Sitzung abgelaufen"
#: uffd/mfa/templates/mfa/auth.html:54
msgid "You have not registered any U2F/FIDO2 devices for your account"
msgstr "Es sind keine U2F/FIDO2-Geräte für deinen Account registriert"
#: uffd/mfa/templates/mfa/auth.html:56 uffd/mfa/templates/mfa/setup.html:208
msgid "Server error"
msgstr "Serverfehler"
#: uffd/mfa/templates/mfa/auth.html:59 uffd/mfa/templates/mfa/setup.html:210
msgid "Waiting for device"
msgstr "Warte auf Gerät"
#: uffd/mfa/templates/mfa/auth.html:62
msgid "Verifing response"
msgstr "Überprüfe Antwort"
#: uffd/mfa/templates/mfa/auth.html:76
msgid "Success, redirecting"
msgstr "Erfolg, leite weiter"
#: uffd/mfa/templates/mfa/auth.html:82 uffd/mfa/templates/mfa/setup.html:228
msgid "Invalid response from device"
msgstr "Ungültige Antwort von Gerät"
#: uffd/mfa/templates/mfa/auth.html:88
msgid "Authentication timed out, was aborted or not allowed"
msgstr "Authentifikation abgelaufen, abgebrochen oder nicht erlaubt"
#: uffd/mfa/templates/mfa/auth.html:90
msgid "Device is not registered for your account"
msgstr "Gerät ist nicht für deinen Account registriert"
#: uffd/mfa/templates/mfa/auth.html:92
msgid "Authentication was aborted"
msgstr "Authentifikation abgebrochen"
#: uffd/mfa/templates/mfa/auth.html:94 uffd/mfa/templates/mfa/setup.html:240
#: uffd/mfa/templates/mfa/setup.html:264
msgid "U2F and FIDO2 devices are not supported by your browser"
msgstr "U2F- und FIDO2-Geräte werden vom Webbrowser nicht unterstüzt"
#: uffd/mfa/templates/mfa/auth.html:97 uffd/mfa/templates/mfa/setup.html:243
msgid "Could not connect to server"
msgstr "Verbindung zum Server fehlgeschlagen"
#: uffd/mfa/templates/mfa/auth.html:103
msgid "Authentication failed "
msgstr "Authentifikation fehlgeschlagen"
#: uffd/mfa/templates/mfa/auth.html:106
msgid "Retry authenticate with U2F/FIDO2 device"
msgstr "Authentifikation mit U2F/FIDO2-Gerät nochmal versuchen"
#: uffd/mfa/templates/mfa/disable.html:6 #: uffd/mfa/templates/mfa/disable.html:6
msgid "" msgid ""
"When you proceed, all recovery codes, registered authenticator " "When you proceed, all recovery codes, registered authenticator "
...@@ -671,6 +733,30 @@ msgstr "Neues Gerät hinzufügen" ...@@ -671,6 +733,30 @@ msgstr "Neues Gerät hinzufügen"
msgid "No U2F/FIDO2 devices registered yet" msgid "No U2F/FIDO2 devices registered yet"
msgstr "Bisher kein U2F/FIDO2 Gerät registriert" msgstr "Bisher kein U2F/FIDO2 Gerät registriert"
#: uffd/mfa/templates/mfa/setup.html:207
msgid "You need to generate recovery codes first"
msgstr "Du musst erst Wiederherstellungscodes generieren"
#: uffd/mfa/templates/mfa/setup.html:234
msgid "Registration timed out, was aborted or not allowed"
msgstr "Registrierung abgelaufen, abgebrochen oder nicht erlaubt"
#: uffd/mfa/templates/mfa/setup.html:236
msgid "Device already registered"
msgstr "Gerät bereits registriert"
#: uffd/mfa/templates/mfa/setup.html:238
msgid "Registration was aborted"
msgstr "Registrierung abgebrochen"
#: uffd/mfa/templates/mfa/setup.html:249
msgid "Registration failed"
msgstr "Registrierung fehlgeschlagen"
#: uffd/mfa/templates/mfa/setup.html:252
msgid "Retry registration"
msgstr "Registrierung nochmal versuchen"
#: uffd/mfa/templates/mfa/setup_recovery.html:8 #: uffd/mfa/templates/mfa/setup_recovery.html:8
msgid "" msgid ""
"Recovery codes allow you to login when you lose access to your " "Recovery codes allow you to login when you lose access to your "
...@@ -691,6 +777,12 @@ msgstr "" ...@@ -691,6 +777,12 @@ msgstr ""
"Ort, sonst könntest du den Zugriff auf dein Konto verlieren. Alle " "Ort, sonst könntest du den Zugriff auf dein Konto verlieren. Alle "
"vorherigen Wiederherstellungscodes sind nun ungültig." "vorherigen Wiederherstellungscodes sind nun ungültig."
#: uffd/mfa/templates/mfa/setup_recovery.html:26
#: uffd/session/templates/session/deviceauth.html:36
#: uffd/session/templates/session/devicelogin.html:25
msgid "Continue"
msgstr "Weiter"
#: uffd/mfa/templates/mfa/setup_recovery.html:28 #: uffd/mfa/templates/mfa/setup_recovery.html:28
msgid "Download codes" msgid "Download codes"
msgstr "Codes herunterladen" msgstr "Codes herunterladen"
...@@ -718,9 +810,9 @@ msgid "" ...@@ -718,9 +810,9 @@ msgid ""
"\t\t\tapp:" "\t\t\tapp:"
msgstr "" msgstr ""
"Falls du ein Mobilgerät verwendest und den Code nicht scannen kannst, " "Falls du ein Mobilgerät verwendest und den Code nicht scannen kannst, "
"kannst du drauf klick und direkt in der Authentifikator-App öffnen. Wenn " "kannst du drauf klicken um ihn damit direkt in der Authentifikator-App zu"
"das nicht funktioniert, gib die folgenden Angaben manuell in die " " öffnen. Wenn das nicht funktioniert, gib die folgenden Angaben manuell "
"Authentifikator-App ein:" "in die Authentifikator-App ein:"
#: uffd/mfa/templates/mfa/setup_totp.html:23 #: uffd/mfa/templates/mfa/setup_totp.html:23
msgid "Issuer" msgid "Issuer"
...@@ -754,12 +846,16 @@ msgstr "Intervall/Dauer" ...@@ -754,12 +846,16 @@ msgstr "Intervall/Dauer"
msgid "seconds" msgid "seconds"
msgstr "Sekunden" msgstr "Sekunden"
#: uffd/mfa/templates/mfa/setup_totp.html:37
msgid "Code"
msgstr "Code"
#: uffd/mfa/templates/mfa/setup_totp.html:38 #: uffd/mfa/templates/mfa/setup_totp.html:38
msgid "Verify and complete setup" msgid "Verify and complete setup"
msgstr "Verifiziere und beende das Setup" msgstr "Verifiziere und beende das Setup"
#: uffd/oauth2/views.py:169 uffd/selfservice/views.py:71 #: uffd/oauth2/views.py:169 uffd/selfservice/views.py:71
#: uffd/session/views.py:73 #: uffd/session/views.py:74
#, python-format #, python-format
msgid "" msgid ""
"We received too many requests from your ip address/network! Please wait " "We received too many requests from your ip address/network! Please wait "
...@@ -1059,7 +1155,7 @@ msgstr "Passwort vergessen" ...@@ -1059,7 +1155,7 @@ msgstr "Passwort vergessen"
#: uffd/selfservice/templates/selfservice/forgot_password.html:9 #: uffd/selfservice/templates/selfservice/forgot_password.html:9
#: uffd/selfservice/templates/selfservice/self.html:21 #: uffd/selfservice/templates/selfservice/self.html:21
#: uffd/session/templates/session/login.html:12 #: uffd/session/templates/session/login.html:12
#: uffd/signup/templates/signup/start.html:14 #: uffd/signup/templates/signup/start.html:9
#: uffd/user/templates/user/list.html:18 uffd/user/templates/user/show.html:47 #: uffd/user/templates/user/list.html:18 uffd/user/templates/user/show.html:47
msgid "Login Name" msgid "Login Name"
msgstr "Anmeldename" msgstr "Anmeldename"
...@@ -1101,13 +1197,13 @@ msgid "Changes may take several minutes to be visible in all services." ...@@ -1101,13 +1197,13 @@ msgid "Changes may take several minutes to be visible in all services."
msgstr "Änderungen sind erst nach einigen Minuten in allen Diensten sichtbar." msgstr "Änderungen sind erst nach einigen Minuten in allen Diensten sichtbar."
#: uffd/selfservice/templates/selfservice/self.html:25 #: uffd/selfservice/templates/selfservice/self.html:25
#: uffd/signup/templates/signup/start.html:27 #: uffd/signup/templates/signup/start.html:22
#: uffd/user/templates/user/list.html:19 uffd/user/templates/user/show.html:62 #: uffd/user/templates/user/list.html:19 uffd/user/templates/user/show.html:62
msgid "Display Name" msgid "Display Name"
msgstr "Anzeigename" msgstr "Anzeigename"
#: uffd/selfservice/templates/selfservice/self.html:29 #: uffd/selfservice/templates/selfservice/self.html:29
#: uffd/signup/templates/signup/start.html:34 #: uffd/signup/templates/signup/start.html:29
msgid "E-Mail Address" msgid "E-Mail Address"
msgstr "E-Mail-Adresse" msgstr "E-Mail-Adresse"
...@@ -1123,7 +1219,7 @@ msgstr "Änderungen speichern" ...@@ -1123,7 +1219,7 @@ msgstr "Änderungen speichern"
#: uffd/selfservice/templates/selfservice/self.html:44 #: uffd/selfservice/templates/selfservice/self.html:44
#: uffd/session/templates/session/login.html:16 #: uffd/session/templates/session/login.html:16
#: uffd/signup/templates/signup/start.html:41 #: uffd/signup/templates/signup/start.html:36
#: uffd/user/templates/user/show.html:76 #: uffd/user/templates/user/show.html:76
msgid "Password" msgid "Password"
msgstr "Passwort" msgstr "Passwort"
...@@ -1146,7 +1242,7 @@ msgstr "Neues Passwort" ...@@ -1146,7 +1242,7 @@ msgstr "Neues Passwort"
#: uffd/selfservice/templates/selfservice/self.html:56 #: uffd/selfservice/templates/selfservice/self.html:56
#: uffd/selfservice/templates/selfservice/set_password.html:16 #: uffd/selfservice/templates/selfservice/set_password.html:16
#: uffd/signup/templates/signup/start.html:48 #: uffd/signup/templates/signup/start.html:43
msgid "Repeat Password" msgid "Repeat Password"
msgstr "Passwort wiederholen" msgstr "Passwort wiederholen"
...@@ -1328,7 +1424,7 @@ msgstr "Mitglieder der Gruppe \"%(group_name)s\" haben Zugriff" ...@@ -1328,7 +1424,7 @@ msgstr "Mitglieder der Gruppe \"%(group_name)s\" haben Zugriff"
msgid "Hide mail addresses with remailer" msgid "Hide mail addresses with remailer"
msgstr "Verstecke Mailadressen mit dem Remailer" msgstr "Verstecke Mailadressen mit dem Remailer"
#: uffd/session/views.py:71 #: uffd/session/views.py:72
#, python-format #, python-format
msgid "" msgid ""
"We received too many invalid login attempts for this user! Please wait at" "We received too many invalid login attempts for this user! Please wait at"
...@@ -1337,27 +1433,27 @@ msgstr "" ...@@ -1337,27 +1433,27 @@ msgstr ""
"Wir haben zu viele fehlgeschlagene Anmeldeversuche für diesen Account " "Wir haben zu viele fehlgeschlagene Anmeldeversuche für diesen Account "
"erhalten! Bitte warte mindestens %(delay)s." "erhalten! Bitte warte mindestens %(delay)s."
#: uffd/session/views.py:79 #: uffd/session/views.py:80
msgid "Login name or password is wrong" msgid "Login name or password is wrong"
msgstr "Der Anmeldename oder das Passwort ist falsch" msgstr "Der Anmeldename oder das Passwort ist falsch"
#: uffd/session/views.py:85 #: uffd/session/views.py:86
msgid "You do not have access to this service" msgid "You do not have access to this service"
msgstr "Du hast keinen Zugriff auf diesen Service" msgstr "Du hast keinen Zugriff auf diesen Service"
#: uffd/session/views.py:97 uffd/session/views.py:108 #: uffd/session/views.py:98 uffd/session/views.py:109
msgid "You need to login first" msgid "You need to login first"
msgstr "Du musst dich erst anmelden" msgstr "Du musst dich erst anmelden"
#: uffd/session/views.py:129 uffd/session/views.py:139 #: uffd/session/views.py:130 uffd/session/views.py:140
msgid "Initiation code is no longer valid" msgid "Initiation code is no longer valid"
msgstr "Startcode ist nicht mehr gültig" msgstr "Startcode ist nicht mehr gültig"
#: uffd/session/views.py:143 #: uffd/session/views.py:144
msgid "Invalid confirmation code" msgid "Invalid confirmation code"
msgstr "Ungültiger Bestätigungscode" msgstr "Ungültiger Bestätigungscode"
#: uffd/session/views.py:155 uffd/session/views.py:166 #: uffd/session/views.py:156 uffd/session/views.py:167
msgid "Invalid initiation code" msgid "Invalid initiation code"
msgstr "Ungültiger Startcode" msgstr "Ungültiger Startcode"
...@@ -1392,11 +1488,6 @@ msgstr "" ...@@ -1392,11 +1488,6 @@ msgstr ""
"\"Gerätelogin\" auf der Anmeldeseite aus. Gib den angezeigten Startcode " "\"Gerätelogin\" auf der Anmeldeseite aus. Gib den angezeigten Startcode "
"oben ein." "oben ein."
#: uffd/session/templates/session/deviceauth.html:36
#: uffd/session/templates/session/devicelogin.html:25
msgid "Continue"
msgstr "Weiter"
#: uffd/session/templates/session/deviceauth.html:43 #: uffd/session/templates/session/deviceauth.html:43
#, python-format #, python-format
msgid "Authorize the login for service <b>%(service_name)s</b>?" msgid "Authorize the login for service <b>%(service_name)s</b>?"
...@@ -1482,7 +1573,7 @@ msgstr "Ein Account mit diesem Anmeldenamen existiert bereits" ...@@ -1482,7 +1573,7 @@ msgstr "Ein Account mit diesem Anmeldenamen existiert bereits"
msgid "Valid" msgid "Valid"
msgstr "Gültig" msgstr "Gültig"
#: uffd/signup/models.py:104 uffd/signup/views.py:100 #: uffd/signup/models.py:104 uffd/signup/views.py:106
msgid "Wrong password" msgid "Wrong password"
msgstr "Falsches Passwort" msgstr "Falsches Passwort"
...@@ -1490,16 +1581,16 @@ msgstr "Falsches Passwort" ...@@ -1490,16 +1581,16 @@ msgstr "Falsches Passwort"
msgid "Signup not enabled" msgid "Signup not enabled"
msgstr "Account-Registrierung ist deaktiviert" msgstr "Account-Registrierung ist deaktiviert"
#: uffd/signup/views.py:81 uffd/signup/views.py:89 #: uffd/signup/views.py:86 uffd/signup/views.py:94
msgid "Invalid signup link" msgid "Invalid signup link"
msgstr "Ungültiger Account-Registrierungs-Link" msgstr "Ungültiger Account-Registrierungs-Link"
#: uffd/signup/views.py:94 #: uffd/signup/views.py:99
#, python-format #, python-format
msgid "Too many failed attempts! Please wait %(delay)s." msgid "Too many failed attempts! Please wait %(delay)s."
msgstr "Zu viele fehlgeschlagene Versuche! Bitte warte mindestens %(delay)s." msgstr "Zu viele fehlgeschlagene Versuche! Bitte warte mindestens %(delay)s."
#: uffd/signup/views.py:106 #: uffd/signup/views.py:114
msgid "Your account was successfully created" msgid "Your account was successfully created"
msgstr "Account erfolgreich erstellt" msgstr "Account erfolgreich erstellt"
...@@ -1507,19 +1598,19 @@ msgstr "Account erfolgreich erstellt" ...@@ -1507,19 +1598,19 @@ msgstr "Account erfolgreich erstellt"
msgid "Complete Registration" msgid "Complete Registration"
msgstr "Account-Registrierung abschließen" msgstr "Account-Registrierung abschließen"
#: uffd/signup/templates/signup/confirm.html:12 #: uffd/signup/templates/signup/confirm.html:9
msgid "Please enter your password to complete the account registration" msgid "Please enter your password to complete the account registration"
msgstr "Bitte gib dein Passwort ein, um die Account-Registrierung abzuschließen" msgstr "Bitte gib dein Passwort ein, um die Account-Registrierung abzuschließen"
#: uffd/signup/templates/signup/confirm.html:16 #: uffd/signup/templates/signup/confirm.html:13
msgid "Complete Account Registration" msgid "Complete Account Registration"
msgstr "Account-Registrierung abschließen" msgstr "Account-Registrierung abschließen"
#: uffd/signup/templates/signup/start.html:18 #: uffd/signup/templates/signup/start.html:13
msgid "Check" msgid "Check"
msgstr "Überprüfen" msgstr "Überprüfen"
#: uffd/signup/templates/signup/start.html:23 #: uffd/signup/templates/signup/start.html:18
#: uffd/user/templates/group/show.html:29 #: uffd/user/templates/group/show.html:29
msgid "" msgid ""
"At least one and at most 32 lower-case characters, digits, dashes (\"-\")" "At least one and at most 32 lower-case characters, digits, dashes (\"-\")"
...@@ -1528,11 +1619,11 @@ msgstr "" ...@@ -1528,11 +1619,11 @@ msgstr ""
"1 bis 32 Kleinbuchstaben, Zahlen, Binde- (\"-\") und Unterstriche " "1 bis 32 Kleinbuchstaben, Zahlen, Binde- (\"-\") und Unterstriche "
"(\"_\"). <b>Kann später nicht geändert werden!</b>" "(\"_\"). <b>Kann später nicht geändert werden!</b>"
#: uffd/signup/templates/signup/start.html:30 #: uffd/signup/templates/signup/start.html:25
msgid "At least one and at most 128 characters, no other special requirements." msgid "At least one and at most 128 characters, no other special requirements."
msgstr "Mindestens 1 und maximal 128 Zeichen, keine weiteren Einschränkungen." msgstr "Mindestens 1 und maximal 128 Zeichen, keine weiteren Einschränkungen."
#: uffd/signup/templates/signup/start.html:37 #: uffd/signup/templates/signup/start.html:32
msgid "" msgid ""
"We will send a confirmation mail to this address that you need to " "We will send a confirmation mail to this address that you need to "
"complete the registration." "complete the registration."
...@@ -1540,19 +1631,19 @@ msgstr "" ...@@ -1540,19 +1631,19 @@ msgstr ""
"Wir werden eine Bestätigungsmail an diese Adresse senden. Du benötigst " "Wir werden eine Bestätigungsmail an diese Adresse senden. Du benötigst "
"sie, um die Account-Registrierung abzuschließen." "sie, um die Account-Registrierung abzuschließen."
#: uffd/signup/templates/signup/start.html:52 #: uffd/signup/templates/signup/start.html:47
msgid "Create Account" msgid "Create Account"
msgstr "Account registrieren" msgstr "Account registrieren"
#: uffd/signup/templates/signup/start.html:79 #: uffd/signup/templates/signup/start.html:74
msgid "The name is already taken" msgid "The name is already taken"
msgstr "Dieser Name wird bereits verwendet" msgstr "Dieser Name wird bereits verwendet"
#: uffd/signup/templates/signup/start.html:82 #: uffd/signup/templates/signup/start.html:77
msgid "Too many requests! Please wait a bit before trying again!" msgid "Too many requests! Please wait a bit before trying again!"
msgstr "Zu viele Anfragen! Bitte warte etwas, bevor du es erneut versuchst!" msgstr "Zu viele Anfragen! Bitte warte etwas, bevor du es erneut versuchst!"
#: uffd/signup/templates/signup/start.html:85 #: uffd/signup/templates/signup/start.html:80
msgid "The name is invalid" msgid "The name is invalid"
msgstr "Name ungültig" msgstr "Name ungültig"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment