From 4bc1818e6a74da6d43d23e17da482ddefaf83af6 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Thu, 12 Mar 2026 11:10:46 -0300 Subject: [PATCH] update translations --- gatekeeper/models.py | 5 +- locale/de/LC_MESSAGES/django.mo | Bin 77460 -> 87722 bytes locale/de/LC_MESSAGES/django.po | 322 ++++++++--------- locale/es/LC_MESSAGES/django.mo | Bin 75786 -> 86118 bytes locale/es/LC_MESSAGES/django.po | 325 ++++++++---------- locale/fr/LC_MESSAGES/django.mo | Bin 78152 -> 88490 bytes locale/fr/LC_MESSAGES/django.po | 320 ++++++++--------- locale/pt_BR/LC_MESSAGES/django.mo | Bin 78064 -> 88052 bytes locale/pt_BR/LC_MESSAGES/django.po | 321 ++++++++--------- locale/sk/LC_MESSAGES/django.mo | Bin 77276 -> 87372 bytes locale/sk/LC_MESSAGES/django.po | 318 ++++++++--------- .../gatekeeper_auth_method_form.html | 5 +- 12 files changed, 701 insertions(+), 915 deletions(-) diff --git a/gatekeeper/models.py b/gatekeeper/models.py index 4b132f5..c31c760 100644 --- a/gatekeeper/models.py +++ b/gatekeeper/models.py @@ -14,10 +14,7 @@ class AuthMethod(models.Model): )) # TOTP-specific fields - totp_secret = models.CharField( - max_length=255, blank=True, - help_text="Shared/global TOTP secret key" - ) + totp_secret = models.CharField(max_length=255, blank=True, help_text=_("Shared/global TOTP secret key")) # OIDC-specific fields oidc_provider = models.CharField(max_length=64, blank=True) diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 58dc641752ed9fdb8ef7338d6854fd56d02c96df..bf897f85161cb3aecef2b2391fbb1036ed8ea1d6 100644 GIT binary patch delta 22627 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 Cbn09H delta 13851 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 diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 69ff925..6ca2f9e 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-12 10:44-0300\n" +"POT-Creation-Date: 2026-03-12 11:09-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -58,6 +58,8 @@ msgid "" "Are you sure you want to regenerate the token? The old token will stop " "working immediately." msgstr "" +"Sind Sie sicher, dass Sie das Token neu generieren möchten? Das alte Token " +"wird sofort ungültig." #: api_v2/forms.py:63 cluster/forms.py:67 cluster/forms.py:124 dns/forms.py:37 #: dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:40 @@ -194,32 +196,32 @@ msgstr "API-Dokumentation" #: app_gateway/models.py:12 msgid "Upstream address, e.g.: http://10.188.18.27:3000" -msgstr "" +msgstr "Upstream-Adresse, z. B.: http://10.188.18.27:3000" #: app_gateway/models.py:42 msgid "Bypass (public)" -msgstr "" +msgstr "Bypass (öffentlich)" #: app_gateway/models.py:43 msgid "One Factor" -msgstr "" +msgstr "Ein Faktor" #: app_gateway/models.py:44 msgid "Two Factor" -msgstr "" +msgstr "Zwei Faktoren" -#: app_gateway/models.py:45 gatekeeper/models.py:114 +#: app_gateway/models.py:45 gatekeeper/models.py:111 #: templates/gatekeeper/gatekeeper_list.html:272 msgid "Deny" -msgstr "" +msgstr "Ablehnen" #: app_gateway/models.py:84 msgid "Route identifier, used in export (e.g.: public_area)" -msgstr "" +msgstr "Routen-ID, verwendet im Export (z. B.: public_area)" #: app_gateway/models.py:87 msgid "Evaluation order — lower value means higher priority" -msgstr "" +msgstr "Auswertungsreihenfolge — niedrigerer Wert bedeutet höhere Priorität" #: cluster/forms.py:20 msgid "IP Lock" @@ -869,7 +871,7 @@ msgstr "Passwort" #: gatekeeper/forms.py:19 msgid "TOTP Secret" -msgstr "" +msgstr "TOTP-Geheimnis" #: gatekeeper/forms.py:41 gatekeeper/forms.py:75 gatekeeper/forms.py:137 #: gatekeeper/forms.py:224 gatekeeper/forms.py:254 gatekeeper/forms.py:285 @@ -879,108 +881,109 @@ msgid "Cancel" msgstr "Abbrechen" #: gatekeeper/forms.py:54 templates/gatekeeper/gatekeeper_list.html:104 -#, fuzzy -#| msgid "Profile Name" msgid "Group Name" -msgstr "Profilname" +msgstr "Gruppenname" #: gatekeeper/forms.py:55 templates/gatekeeper/gatekeeper_list.html:105 msgid "Members" -msgstr "" +msgstr "Mitglieder" #: gatekeeper/forms.py:85 msgid "TOTP Validation PIN" -msgstr "" +msgstr "TOTP-Validierungs-PIN" #: gatekeeper/forms.py:88 msgid "" "Enter a 6-digit PIN generated by your authenticator app to validate the " "secret." msgstr "" +"Geben Sie eine 6-stellige PIN ein, die von Ihrer Authenticator-App generiert " +"wurde, um das Geheimnis zu validieren." #: gatekeeper/forms.py:99 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Type" -msgstr "Authentifizierung" +msgstr "Authentifizierungstyp" #: gatekeeper/forms.py:100 msgid "Global TOTP Secret" -msgstr "" +msgstr "Globales TOTP-Geheimnis" #: gatekeeper/forms.py:101 msgid "OIDC Provider URL" -msgstr "" +msgstr "OIDC-Anbieter-URL" #: gatekeeper/forms.py:102 msgid "OIDC Client ID" -msgstr "" +msgstr "OIDC-Client-ID" #: gatekeeper/forms.py:103 msgid "OIDC Client Secret" -msgstr "" +msgstr "OIDC-Client-Geheimnis" #: gatekeeper/forms.py:154 msgid "TOTP secret must be empty for Local Password authentication." msgstr "" +"Das TOTP-Geheimnis muss für die Authentifizierung mit lokalem Passwort leer " +"sein." #: gatekeeper/forms.py:156 msgid "TOTP validation PIN must be empty for Local Password authentication." msgstr "" +"Die TOTP-Validierungs-PIN muss für die Authentifizierung mit lokalem " +"Passwort leer sein." #: gatekeeper/forms.py:158 msgid "OIDC fields must be empty for Local Password authentication." msgstr "" +"OIDC-Felder müssen für die Authentifizierung mit lokalem Passwort leer sein." #: gatekeeper/forms.py:164 msgid "Only one Local Password authentication method can be configured." msgstr "" +"Es kann nur eine Authentifizierungsmethode mit lokalem Passwort konfiguriert " +"werden." #: gatekeeper/forms.py:167 msgid "OIDC fields must be empty for TOTP authentication." -msgstr "" +msgstr "OIDC-Felder müssen für die TOTP-Authentifizierung leer sein." #: gatekeeper/forms.py:169 msgid "TOTP secret is required for TOTP authentication." -msgstr "" +msgstr "Das TOTP-Geheimnis ist für die TOTP-Authentifizierung erforderlich." #: gatekeeper/forms.py:173 -#, fuzzy -#| msgid "Please provide a valid IP address." msgid "Please provide a PIN to validate the TOTP secret." -msgstr "Bitte geben Sie eine gültige IP‑Adresse ein." +msgstr "Bitte geben Sie eine PIN an, um das TOTP-Geheimnis zu validieren." #: gatekeeper/forms.py:178 msgid "Invalid TOTP PIN." -msgstr "" +msgstr "Ungültige TOTP-PIN." #: gatekeeper/forms.py:180 msgid "Invalid TOTP secret format. Must be a valid Base32 string." msgstr "" +"Ungültiges TOTP-Geheimnisformat. Muss eine gültige Base32-Zeichenfolge sein." #: gatekeeper/forms.py:183 msgid "TOTP secret must be empty for OIDC authentication." -msgstr "" +msgstr "Das TOTP-Geheimnis muss für die OIDC-Authentifizierung leer sein." #: gatekeeper/forms.py:185 msgid "TOTP validation PIN must be empty for OIDC authentication." msgstr "" +"Die TOTP-Validierungs-PIN muss für die OIDC-Authentifizierung leer sein." #: gatekeeper/forms.py:194 gatekeeper/forms.py:236 gatekeeper/forms.py:267 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Method" -msgstr "Authentifizierung" +msgstr "Authentifizierungsmethode" #: gatekeeper/forms.py:195 -#, fuzzy -#| msgid "IP Address" msgid "IP/Network Address" -msgstr "IP‑Adresse" +msgstr "IP/Netzwerkadresse" #: gatekeeper/forms.py:196 templates/gatekeeper/gatekeeper_list.html:257 msgid "Prefix Length" -msgstr "" +msgstr "Präfixlänge" #: gatekeeper/forms.py:197 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 @@ -990,132 +993,108 @@ msgstr "Aktion" #: gatekeeper/forms.py:237 templates/gatekeeper/gatekeeper_list.html:221 msgid "Domain" -msgstr "" +msgstr "Domäne" #: gatekeeper/models.py:10 -#, fuzzy -#| msgid "Default Password" msgid "Local Password" -msgstr "Standardpasswort" +msgstr "Lokales Passwort" #: gatekeeper/models.py:11 msgid "One-Time Password (TOTP)" -msgstr "" +msgstr "Einmalpasswort (TOTP)" #: gatekeeper/models.py:12 msgid "OpenID Connect (OIDC)" -msgstr "" +msgstr "OpenID Connect (OIDC)" #: gatekeeper/models.py:13 -#, fuzzy -#| msgid "IP Address" msgid "IP Address List" -msgstr "IP‑Adresse" +msgstr "IP-Adressliste" -#: gatekeeper/models.py:71 +#: gatekeeper/models.py:17 +msgid "Shared/global TOTP secret key" +msgstr "Gemeinsamer/globaler TOTP-Geheimschlüssel" + +#: gatekeeper/models.py:68 msgid "Password for local authentication (leave blank if not using)" msgstr "" +"Passwort für die lokale Authentifizierung (leer lassen, wenn nicht verwendet)" -#: gatekeeper/models.py:72 +#: gatekeeper/models.py:69 msgid "Per-user TOTP secret key" -msgstr "" +msgstr "Benutzerspezifischer TOTP-Geheimschlüssel" -#: gatekeeper/models.py:112 +#: gatekeeper/models.py:109 msgid "CIDR prefix length (e.g.: 24 for /24). Leave blank for a single host." msgstr "" +"CIDR-Präfixlänge (z. B.: 24 für /24). Leer lassen für einen einzelnen Host." -#: gatekeeper/models.py:114 templates/gatekeeper/gatekeeper_list.html:270 -#, fuzzy -#| msgid "Allowed IPs" +#: gatekeeper/models.py:111 templates/gatekeeper/gatekeeper_list.html:270 msgid "Allow" -msgstr "Erlaubte IPs" +msgstr "Zulassen" #: gatekeeper/views.py:55 -#, fuzzy -#| msgid "Edit User" msgid "Edit Gatekeeper User" -msgstr "Benutzer bearbeiten" +msgstr "Gatekeeper-Benutzer bearbeiten" #: gatekeeper/views.py:58 -#, fuzzy -#| msgid "Create Peer" msgid "Create Gatekeeper User" -msgstr "Peer erstellen" +msgstr "Gatekeeper-Benutzer erstellen" #: gatekeeper/views.py:66 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Gatekeeper User saved successfully." -msgstr "API-Schlüssel erfolgreich gespeichert." +msgstr "Gatekeeper-Benutzer erfolgreich gespeichert." #: gatekeeper/views.py:91 -#, fuzzy -#| msgid "Peer deleted|Peer deleted successfully." msgid "Gatekeeper User deleted successfully." -msgstr "Peer gelöscht|Peer erfolgreich gelöscht." +msgstr "Gatekeeper-Benutzer erfolgreich gelöscht." #: gatekeeper/views.py:96 -#, fuzzy -#| msgid "Delete Peer" msgid "Delete Gatekeeper User" -msgstr "Peer löschen" +msgstr "Gatekeeper-Benutzer löschen" #: gatekeeper/views.py:98 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the user \"%(username)s\"?" msgstr "" -"Sind Sie sicher, dass Sie den API-Schlüssel \"%(name)s\" löschen möchten?" +"Sind Sie sicher, dass Sie den Benutzer \"%(username)s\" löschen möchten?" #: gatekeeper/views.py:112 -#, fuzzy -#| msgid "Edit Peer Group: " msgid "Edit Gatekeeper Group" -msgstr "Peer‑Gruppe bearbeiten: " +msgstr "Gatekeeper-Gruppe bearbeiten" #: gatekeeper/views.py:115 msgid "Create Gatekeeper Group" -msgstr "" +msgstr "Gatekeeper-Gruppe erstellen" #: gatekeeper/views.py:123 -#, fuzzy -#| msgid "Peer reactivated successfully." msgid "Gatekeeper Group saved successfully." -msgstr "Peer erfolgreich reaktiviert." +msgstr "Gatekeeper-Gruppe erfolgreich gespeichert." #: gatekeeper/views.py:148 -#, fuzzy -#| msgid "Schedule Slot deleted successfully." msgid "Gatekeeper Group deleted successfully." -msgstr "Zeitplan-Slot erfolgreich gelöscht." +msgstr "Gatekeeper-Gruppe erfolgreich gelöscht." #: gatekeeper/views.py:153 msgid "Delete Gatekeeper Group" -msgstr "" +msgstr "Gatekeeper-Gruppe löschen" #: gatekeeper/views.py:155 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the group \"%(name)s\"?" -msgstr "Sind Sie sicher, dass Sie das Profil \"%(name)s\" löschen möchten?" +msgstr "Sind Sie sicher, dass Sie die Gruppe \"%(name)s\" löschen möchten?" #: gatekeeper/views.py:169 -#, fuzzy -#| msgid "Authentication" msgid "Edit Authentication Method" -msgstr "Authentifizierung" +msgstr "Authentifizierungsmethode bearbeiten" #: gatekeeper/views.py:172 -#, fuzzy -#| msgid "Authentication" msgid "Create Authentication Method" -msgstr "Authentifizierung" +msgstr "Authentifizierungsmethode erstellen" #: gatekeeper/views.py:180 -#, fuzzy -#| msgid "Static DNS saved successfully" msgid "Authentication Method saved successfully." -msgstr "Statischer DNS erfolgreich gespeichert" +msgstr "Authentifizierungsmethode erfolgreich gespeichert." #: gatekeeper/views.py:187 msgid "" @@ -1135,97 +1114,95 @@ msgid "" " \n" " " msgstr "" +"\n" +"
Authentifizierungstypen
\n" +"

Wählen Sie aus, wie sich Benutzer über diese Methode " +"authentifizieren.

\n" +"
    \n" +"
  • Lokales Passwort: Benutzer authentifizieren " +"sich mit einem lokal gespeicherten Standard-Benutzernamen und Passwort. Es " +"kann nur einer dieser Typen erstellt werden.
  • \n" +"
  • TOTP (Time-Based One-Time Password): " +"Benutzer müssen ein rotierendes Token aus einer Authenticator-App eingeben. " +"Erfordert die Festlegung eines globalen TOTP-Geheimnisses.
  • \n" +"
  • OIDC (OpenID Connect): Benutzer " +"authentifizieren sich über einen externen Identitätsanbieter (wie Keycloak, " +"Google oder Authelia). Erfordert Anbieter-URL, Client-ID und Client-" +"Geheimnis.
  • \n" +"
\n" +" " #: gatekeeper/views.py:219 -#, fuzzy -#| msgid "Static DNS deleted successfully" msgid "Authentication Method deleted successfully." -msgstr "Statischer DNS erfolgreich gelöscht" +msgstr "Authentifizierungsmethode erfolgreich gelöscht." #: gatekeeper/views.py:224 -#, fuzzy -#| msgid "Authentication" msgid "Delete Authentication Method" -msgstr "Authentifizierung" +msgstr "Authentifizierungsmethode löschen" #: gatekeeper/views.py:226 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the authentication method \"%(name)s\"?" msgstr "" -"Sind Sie sicher, dass Sie den API-Schlüssel \"%(name)s\" löschen möchten?" +"Sind Sie sicher, dass Sie die Authentifizierungsmethode \"%(name)s\" löschen " +"möchten?" #: gatekeeper/views.py:276 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Edit Allowed Domain" -msgstr "Erlaubte IP eingeben" +msgstr "Zulässige Domäne bearbeiten" #: gatekeeper/views.py:279 templates/gatekeeper/gatekeeper_list.html:186 msgid "Add Allowed Domain" -msgstr "" +msgstr "Zulässige Domäne hinzufügen" #: gatekeeper/views.py:287 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Allowed Domain saved successfully." -msgstr "API-Schlüssel erfolgreich gespeichert." +msgstr "Zulässige Domäne erfolgreich gespeichert." #: gatekeeper/views.py:312 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "Allowed Domain deleted successfully." -msgstr "API-Schlüssel erfolgreich gelöscht." +msgstr "Zulässige Domäne erfolgreich gelöscht." #: gatekeeper/views.py:317 msgid "Delete Allowed Domain" -msgstr "" +msgstr "Zulässige Domäne löschen" #: gatekeeper/views.py:319 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?" -msgstr "Sind Sie sicher, dass Sie das Profil \"%(name)s\" löschen möchten?" +msgstr "" +"Sind Sie sicher, dass Sie die zulässige Domäne \"%(domain)s\" löschen " +"möchten?" #: gatekeeper/views.py:333 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Edit Allowed Email" -msgstr "Erlaubte IP eingeben" +msgstr "Zulässige E-Mail bearbeiten" #: gatekeeper/views.py:336 templates/gatekeeper/gatekeeper_list.html:183 msgid "Add Allowed Email" -msgstr "" +msgstr "Zulässige E-Mail hinzufügen" #: gatekeeper/views.py:344 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Allowed Email saved successfully." -msgstr "API-Schlüssel erfolgreich gespeichert." +msgstr "Zulässige E-Mail erfolgreich gespeichert." #: gatekeeper/views.py:369 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "Allowed Email deleted successfully." -msgstr "API-Schlüssel erfolgreich gelöscht." +msgstr "Zulässige E-Mail erfolgreich gelöscht." #: gatekeeper/views.py:374 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Delete Allowed Email" -msgstr "Erlaubte IP eingeben" +msgstr "Zulässige E-Mail löschen" #: gatekeeper/views.py:376 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the allowed email \"%(email)s\"?" -msgstr "Sind Sie sicher, dass Sie das Profil \"%(name)s\" löschen möchten?" +msgstr "" +"Sind Sie sicher, dass Sie die zulässige E-Mail \"%(email)s\" löschen möchten?" #: gatekeeper/views.py:390 -#, fuzzy -#| msgid "Add IP Address" msgid "Edit IP Address" -msgstr "IP‑Adresse hinzufügen" +msgstr "IP-Adresse bearbeiten" #: gatekeeper/views.py:393 templates/gatekeeper/gatekeeper_list.html:247 #: templates/wireguard/wireguard_manage_peer.html:171 @@ -1233,29 +1210,22 @@ msgid "Add IP Address" msgstr "IP‑Adresse hinzufügen" #: gatekeeper/views.py:401 -#, fuzzy -#| msgid "API Key saved successfully." msgid "IP Address saved successfully." -msgstr "API-Schlüssel erfolgreich gespeichert." +msgstr "IP-Adresse erfolgreich gespeichert." #: gatekeeper/views.py:426 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "IP Address deleted successfully." -msgstr "API-Schlüssel erfolgreich gelöscht." +msgstr "IP-Adresse erfolgreich gelöscht." #: gatekeeper/views.py:431 -#, fuzzy -#| msgid "IP Address" msgid "Delete IP Address" -msgstr "IP‑Adresse" +msgstr "IP-Adresse löschen" #: gatekeeper/views.py:433 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the IP address \"%(address)s\"?" msgstr "" -"Sind Sie sicher, dass Sie den API-Schlüssel \"%(name)s\" löschen möchten?" +"Sind Sie sicher, dass Sie die IP-Adresse \"%(address)s\" löschen möchten?" #: intl_tools/forms.py:11 templates/accounts/login.html:36 msgid "Language" @@ -2207,25 +2177,30 @@ msgstr "" msgid "Create Port forwarding Rule" msgstr "Port‑Weiterleitungsregel erstellen" +#: templates/gatekeeper/gatekeeper_auth_method_form.html:63 +msgid "View QR Code" +msgstr "QR-Code anzeigen" + +#: templates/gatekeeper/gatekeeper_auth_method_form.html:74 +msgid "Please enter a TOTP Secret first to generate the QR code." +msgstr "" +"Bitte geben Sie zuerst ein TOTP-Geheimnis ein, um den QR-Code zu generieren." + #: templates/gatekeeper/gatekeeper_list.html:12 msgid "Gatekeeper Users" -msgstr "" +msgstr "Gatekeeper-Benutzer" #: templates/gatekeeper/gatekeeper_list.html:18 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Methods" -msgstr "Authentifizierung" +msgstr "Authentifizierungsmethoden" #: templates/gatekeeper/gatekeeper_list.html:24 msgid "Allowed Emails & Domains" -msgstr "" +msgstr "Zulässige E-Mails und Domänen" #: templates/gatekeeper/gatekeeper_list.html:30 -#, fuzzy -#| msgid "IP Address" msgid "IP Addresses" -msgstr "IP‑Adresse" +msgstr "IP-Adressen" #: templates/gatekeeper/gatekeeper_list.html:40 #: templates/user_manager/peer_group_list.html:11 @@ -2233,10 +2208,8 @@ msgid "Users" msgstr "Benutzer" #: templates/gatekeeper/gatekeeper_list.html:43 -#, fuzzy -#| msgid "Peer Groups" msgid "Groups" -msgstr "Peer‑Gruppen" +msgstr "Gruppen" #: templates/gatekeeper/gatekeeper_list.html:51 #: templates/user_manager/list_buttons.html:2 user_manager/views.py:111 @@ -2254,55 +2227,45 @@ msgid "Actions" msgstr "Aktionen" #: templates/gatekeeper/gatekeeper_list.html:88 -#, fuzzy -#| msgid "No time intervals found." msgid "No Gatekeeper Users found." -msgstr "Keine Zeitintervalle gefunden." +msgstr "Keine Gatekeeper-Benutzer gefunden." #: templates/gatekeeper/gatekeeper_list.html:95 -#, fuzzy -#| msgid "Add Peer Group" msgid "Add Group" -msgstr "Peer‑Gruppe hinzufügen" +msgstr "Gruppe hinzufügen" #: templates/gatekeeper/gatekeeper_list.html:131 msgid "No Gatekeeper Groups found." -msgstr "" +msgstr "Keine Gatekeeper-Gruppen gefunden." #: templates/gatekeeper/gatekeeper_list.html:140 msgid "Add Auth Method" -msgstr "" +msgstr "Authentifizierungsmethode hinzufügen" #: templates/gatekeeper/gatekeeper_list.html:176 -#, fuzzy -#| msgid "Authentication" msgid "No Authentication Methods found." -msgstr "Authentifizierung" +msgstr "Keine Authentifizierungsmethoden gefunden." #: templates/gatekeeper/gatekeeper_list.html:196 msgid "Identity" -msgstr "" +msgstr "Identität" #: templates/gatekeeper/gatekeeper_list.html:197 #: templates/gatekeeper/gatekeeper_list.html:259 msgid "Auth Method" -msgstr "" +msgstr "Authentifizierungsmethode" #: templates/gatekeeper/gatekeeper_list.html:241 msgid "No Allowed Emails or Domains found." -msgstr "" +msgstr "Keine zulässigen E-Mails oder Domänen gefunden." #: templates/gatekeeper/gatekeeper_list.html:260 -#, fuzzy -#| msgid "User Manager" msgid "Manage" -msgstr "Benutzerverwaltung" +msgstr "Verwalten" #: templates/gatekeeper/gatekeeper_list.html:293 -#, fuzzy -#| msgid "IP Address" msgid "No IP Addresses found." -msgstr "IP‑Adresse" +msgstr "Keine IP-Adressen gefunden." #: templates/generic_delete_confirmation.html:16 msgid "Confirm Delete" @@ -3952,7 +3915,6 @@ msgstr "" #~ msgid "Delete Schedule Slot" #~ msgstr "Zeitplan-Slot löschen" -#~| msgid "No schedule profiles found." #~ msgid "No schedule slots found." #~ msgstr "Keine Zeitplanprofile gefunden." diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo index b999c3b310dd9444806436bdef9efa4d145ea24f..4b44b6a0acf09181616856db9ab346d5319c35cd 100644 GIT binary patch delta 22725 zcmbW82Y8fK`nTT+q4(YdUaCYwLJf*YOCTU6R0RtavGs^jb+Z8=3!mdW zoa;Dy;432>=VHn|aJu6xgxy9t&RqB)Y(sjN(T>v_=8SQiMOB@IGjFWptgGrczfW|W zcSyK*s^jdUfs4;}oJ(NNG&+WU*ZGb!vYO+3=69TP(WlR#GgQ2ECKbZJ!{OwsH_LG{ zktc^~94>(;!p)H4&ik+-`~Z1@ z2-b#0uo0XO)xgzIc z(Q%O3a;Cysumq}u7r?r35mX14!zvY9w)}4qXnF z?*`Zgu7RE4Q?LX40(OKoN*t#>OoysxENlu3p$2jh)Bvu8F1)n_`)h66L4%Ne~ z*=EE8U_IpVP;+@c><6!gr@?38V3-ocDli)kg9~9__ySb^Kj6tQD`tEp0&y>AZ4CQw zB=RSU!Ej?7Yrr3&dfc(pbRZLIBm<#3G6|-^OQ5D;9c&DrhFS1!%Q|z6#j;^f^nR#S zmV~KrQ-X+0yahId&p=i57OW5VLXGGk)D#S4EollyLpkM4h!LFGQ2GA>Rq@YImOKb$ z!9OhP&NCf20V+Ll3K3O22+DcJKs7KKs=^r5oGyau*xgVa-VPhU=U_AVE@X>vzK31l zN%Kty$3t~s3Tz7tVP|-m(I=b-h^XPmpc>o>Yr;3J{v#-peF3!!QWiK)bJ!fJ;Y_G< z!=a|^45;Ni9V*|&upPV+wt!oq2Cy5})%yRC$Pg6YKutmV1*YIYC@(()s>c^tc{S{V z{2Y|8{AQVPp;--nsB(*;EObAV1s;X!;NM_N_%>{;_5TAAnYhYDX6`yeb>t){%M5_& zFb8VHv!N=!0;=Mhp(?!3>Yst?;F~ZT)?hzoH+DwD;cz9C@9cpIRqzForf@%$iEGiT z6JR?i6AplCcoI~{Ww>ZF;oYWPz`Ug+yynae~0S$S5W2ugsQjNrH=CuY!21I7caFv z*^NTpy$3de`(P_rb)m703)N5-l(UV3S~X`wbtnYowDT+%LRso+n|?b~hc-Z2dKXkX zA0&vV;P+4!9)wz#)fO4Kj%6#TDd-B-;2_uyj znI-s-Zln4&DJ}frl-3!c&pofO58a zSC}oh6`YDZ9#)6zVGURYWr@dO6RrQ}iS$76p-rfJrRi}CNU~D`)$ot79jv<4><67; z8{|>Y^8u(iod-4dSHTW&6?EZKuoL_g%6Y3@#dNBHjzqe_(Xb<&2j#W5L3#69*adEa zs^DGN8U7BHzr)pLYKB9N^h_(C2i2hxSPL$Ks`nb$#m9XBCTgR2e3@AeFTfheufVGC z9asl`2vxz?P*b!Y4uPrHn2`;KnaG7uzOfRj+*YU#?Sv}#5>&nqU~gFaS`4hnplglE zV^BSQ392J|U_Sf`rod6xnTp3krJrpXfEq{h32f`a^vkCVSVIjmc>vNTnvZ9>!C*aK5PgN!aP{(deh)pP~}4~9nOcc;5|@N zxEX3n-$@XW6a5FOqSi@c((W)7c`VdOCqj+r9H@~Nz@9J)HKMzqMzjU0;T=%E@d}jl z{sfh;+6|_@=1?6NP2eJ^WqcEqcW<_Q z6*flx*78rNfi_;@t&W7#nTQIEfEqy%%6W>QGA^*`S3@;;Ka^!QL2txR9o+$|z@1PV z(eqIC?138Kw^shQl~Zq&Pci=uh{#lpp$q##Z9G$;&VV><2Cs$c=si$VwiD{K`xFj^ zzd_CIz?G(+eApCuG3*6zfvWcvC`)|}yKDWY++;HLfHLiHC{v#SHRpb)k8~8nQk|%3*Uq?-KS6$eGlb? zzd+?rxy9_5Eub1631z{{puBw@)D*o7)zJ@O6Ziu>5vJa1@}=L3{WUjJQD`{@p+>wI z_J!9#b>vy7j=c`mp^vTp8+bDEzo9Dbahu^3sE%9$RqqBk0KN>n!D2w!3ZRUOu)J8HMs@y!QUj^kW8=)-s z1eB#;h8oCwHa+nZ5jl~w#+bYj)Lf5%-Qakrf)_zGe5Fml5vqYZpr+(OC@0+xwM?J3 zd;!X-cf(fjW7rJ-3Yp@B({Qb+AQ!5_36_4S9jgSM3NM9fV24fLWz*k+8qpW9E&Ky& z0B!Cv8&4P561hKQtj;8;0Uv<%wf<||ZAR7tDxot}fqqa8j)xlIR45+_K&^tCVJEl| zc7|_R{jabia)W!!0Qx{p-7u&*pAXf}1F$abJ5Lbt<_2~_eh+E{f5KE)<6a}zg-UM* z)$nOh6-|dSX&lM|S6Tf!n1lQ{)E4Z!&m3M&p?8)*@BLpuBtsRzYH%&ooUMZ+;G?hx zta88E`RYJfVS`DrMNys{4a_aO2q3T+UL z)|)xXgEHMhsQux2sAZJ$fN|0WP*c+mYE^WC@`;}CG?)t)!zFMbthK?^w+udp{07t& z?3%=bW>4O-k+YtJ127j3+hl%VSO&GRY=a}=Pf#5?b+ggWfpWf0a1eY424S;@%yPaE z4nuwjo&*mKOKMI}hML1% z%R;D*T@Jg#Rj?I&&Zd6~HFdtnjfJYhCCKSe`iG#VaI59BP#t^&wt=5Nj{W7WDLYKV zGhhzRcm=FZ4X-?b+2Pwy^GikwD`gkIWFRkoo~1^<-7nG*df&_Jdel?(RYnPyLoL7b z-IO8UW;hz|dyV~oIUDqb<1B-t-o^eMsNnq%@mMPUeGk1u9{w52hXO6XVA(KJ6QOJI9=UxJ8C^dgk^ zz6WLUy-)@JfbxNAKbuuhA4=a0YEIii`9g2l8IFOfIA+sVz~;#7U?=ztRC`}RIc?%! zL^LPPeshR4g7SqlsESU8t>IZv9h_t3%b@bDfvRXTRK<@&EbF`o=fl^a25|bn%)ll> zwHJa|BH>&>L_NP9$|;_O4d7=`8GnX4)v6vaJ6I=}hMWhp;C$E@Zi3z5m#`6R^l#I_ z&af$RAE*JH4plA;3$*^%5|K%39W)slK{eb5s-fX2jB!a@E6Pum%~%w z$FM(a`K#HIC&7WpH^3l#6KdI?@*BRS$aW$_VeQ||T#kh@?F=i=g}soM!=CV2*a{wi z&0xd-nA>hwsAW1Co&+z31K|BO{Y$9Rvhg2gfURIcbDB;>CL3TA@?aja-^!ceiO4&l z=JH#3E!+>)(Zzq7ijz>5yameSYhVlb2$a{q4%LDEP!|5}PYj^~bse8~U2Y21kzr6H znF3qFOQAY?E7Zu>LpkMha3cH+_JLVGpVy&TQ27=>Sz-n34xfUu*!NKFR!vEm2J5Ey zyuI0l^4{*S9qbL8!--G@XF)Z*5UNABLwWy$P|md-wt*i&mH!3G0xhffyo*RL*aUeX zJQq$(5YdP?Lz(DVC@=mBX2Qm)KJO)y4KdjR7XCs`n_-q^6yaI|4?mXf$gvb?K``P$i#c03+vV~rp|yG z;Yg?s6hQ5a7g$~m)xlLz%WyrEvpx!C;y0iyx);go;u?7x;kJ%?41;hid<;&7wHo@IaWDW~ zxTPWMUp;;Yg_h4=D6ekT$mjh^odq@5H$s_ygXI%Y%W*f<$m%rqd0Ti3ScH5w)X4t^ zS8r-ImbOp@219i;4z+KrfwI6BD9gPL zwXXjO<*dz``Mfh@5Y#C<8xDpmEfen%IT1z6=BCF(pqyThP*H?*CU3k>VOCCtL+((zUQI+z92> zJK*W?ZP*36t$f~#C>LsE%c1Jo2377kD5rf3D*ty-7HQJj4D2*mr1d|OhS z18_go$fokw2O5zdYA#Em@?C6s1yn=V+w}ENQ}ZyC^F9wXppT%+eGU7jf?D36 zS?+@>m(rf~uZn86HycQ6sEl2pD#(H|c^=fBJ_X8zK`5_}K<%7YL5*}1)M>aAy6}6b z4%F{pI@|?nCp;M{-zq%Y{%Dxf;r}w?d8NL8u0v zgX7^xa4^g~(UdQN>hJ>C9;v~gO<|jpG)1hx?nE@wp>QG`50&9= z%Pls27nHNU1qZ<|p+?%Jn=$bisHt24HPZEPD108C3~QwueKwT-JlI3)e~lvWO(x4|HM1`dW@GtDU(f(ace zn}}q=&mnW-wC>^aejw;zc|Md$Z-*}20%iJlpqwkUr%CS#wNs9OIz!HZb>M8MDZCiU zg11_ELr>O!e-tmGkn>gTWlU5b)msI9qLUo(JCumSSP39A?hWukMTMz8?NbPJ)J*2Q`rWQ04pdGnUDNvScDiM9X77RKs^!J^*E+hoR>B38=aLCsYG1 zPc|D-Z`c8OB9xEJfn(q@sO9$o%!B)(ER=JKnYwZCG_C*hh-i*iK~=C37QyGB=D1IP zGl$twJ~0DIKL?%ymq4wWC!w5o7gWbzhRXL2bm13Pu6C-?H-*)-{yPy-#oeHm%PFuI zJP*owu7?`&HrNlo4%JZ20mfntpc-reW#SG{K6DzCbB=+U$|+DgXb_$XFM@em|J#XZ zXRCRdInPHx&D~lki+l&QoKgpxk+y_#o_0`9)dNm|W8pNo8fv{egUqrnfZGsP!8Sft z&tUUJiw$A@=acXxk+HDjP~%)tI1G6$)Wzd#sAbbD+uU4=pf;wpP;>nZ48R6CW+0{T z4CIHQoVxZfpK}}R3NM7aU>O`bob^AI$bsR;ImYE0)1Cv<(C5Rha2b>Zwn91EOHgzE zJyZkxZF<8IX3DxiP3b78shSEk1?NMZ5k;^HjE-RaYXoyph|fYfW22F#L!F@JvIo>$ z4u}tKcpxm%&SspMtVnV(4ho@Oe-@O+YoU z6l#M=THXt_r9KAbl&?d1^In_oj4_sI0#&X%l%D*wAsPW`JV zv;MNj`5ab-_w3RfRs236L7sdw0arQny-B=h3U3EA>xh3!2oXOS-G}foM}qdBO5X;QgV9WYiz=i%hpg{$%N*j}iGK{40q>gwYg0L= ztMfaWWw3)yQ-(O9nDq7NZX@ha`%{TLt3o6`MZ5qGBk1de{vLw9l?I+~+=6Z};WV3e zJ>~R$11}`ZCu}6GDO?5F`VW0OZR|#L`uhX#yO)3OB4cA)VHw;kDO9zc;5l9jPdfOOje8*9KNL~M3&^PbS<6G4$%`cRf%@30 zy~|?(dGz^^Zzt%x)#~m*&LFfW{0;qCgdxhn*Ujd+7p_LWi10M|ekSNkv>@R+1nqiS z{|^xVm@p3gTKEin1L|YXaGr*9(6KK$cUrwRn({A(PRlO4Tmh@ud>0cBQ+7DK$LJEy zBZ{EZw~?T2csaVcgdXUJBJYISlpZE%cbuYh7)1XgJP9^YJ$&7XwW7u|Wvhx{KxJLCew59OQ6M>eDIAPEOyCIuD~UL}4i`~W6N)2AJeo0zj6J*TYq z#fWz$-We{jx<155nq+4Hx~q`=$a#b_35nGxP9UU^*wbdbn)pjLUPKxjq{E%U+y7TU zKRSIW@Js@Srt=8$9iGzIu0dE~Q@+ju#c|Cdnc zdya4|p{4}BF9?0fSdVaXhX{>YA#E{Wc*tAbq@*Z$O@G@+X`>iG)dL4KIX`6Lu2+jG(((`L~opbq2}ud0s~G1o0T0U=!zARK!-fwlgEcdDa-($#X-}|OnHbR+YGtPkjp@Lkv zh_HqDo#bmtygu<|#Qz{1Ae4XqB+`MfkT8jS)5v$8O>BzXkNDZ>1`@xU_lHwL#3dA? zJcV!~@reX|t&sm9JZ41iq53)TP3W#Aj3(&2hp>Y1cjPR1r7eFx@gQLy@(99{gfMxU z!FSQ0s`0Nxu^q*)wz4AlB8kIbTdSLnyp;HIcn5i_6K_taPW&8#zNcXgLK7=bgV&Jf z71BzfzVF}@u!WU#%lH4NRXpfr;~IsWK?U!?Tda=X5S;65<%PuWBV0jR#HN?yd7DRa zBSJO8o#=)T&Y(;uCGfpP@c#RcggJ!sNX#SCvoH>CBj{U$tnWk1`9}2qeVja{g!>4S zNZ)MJ8WL}5^S4BoOGqQkBHuon=UV;!ZFMUMtx423lY&`<0P+oRgVi@Cez}b+-wb4Z zvkbgP>=x2@p}z!5Eaa}8Lxv6AzxzUu5calAXtx3g@V%w zs|hy~M%l(k6890`3?CwNA$~UDe#%^ed;)xca4zw?2uq3IMMz}u&#}JsDAy6*CbPb} zRJNRO1)&YPC!oHY;op$|W%Er&UTM>mzJ~Zz!e*=c0bM)d)P*1x_P-oNIb&LniQ zl}Xcsa692r!sk|hBJp%vVSxB-^!?#lbZ-&=h4@gLPV~_C46%{upS1N<*#AtP)4{zY z9w2PDnet&F`i8c`-6pGZJxoJa0v8kRBiumPL(q3V<*M2`x*HXLc)%1;W;AkDLR*c$ z0pW5Iy1^Gnyb)f6`~v)$;1WuZ%fBk*xtnkq;ePZJ;AtdYL)bz5Qk!>`R;-3?gkQ|cLIoaU!YGrTr-rcUzkka^!U~xQ@?~jKf#qOl}CCMRYH%<qcKEEXB=GXNXyVGGb=#K{j$&9J(5|i>KjdQzB3Ka#r5B0~W zBd<8vUE-l$rX9PR#X&O1BQDknM(JTR630e#HXfN3EOrZ`ks|t7(JT?Nm6T+-6N0l# zL(yQ&jRoT^y&`@$HyoLcWxU=@4AQ~4*SoxtIoWR4ypmw?$Q(C2Qd}I&j~}N$mFzz! zE1k8(R4gxKxQ~Ju$F7T0hy)Y#4PF9#O-T8td$`U3&xDCTzP z+|@?YVjYq{2D`NO+c5;ZF(`wH+4Pp>=|K%h$zH^!HmxvET2Xd!v?=IWwNS%MwkasA z7xdg*Mdj|v_66ONiwhbje-5@78Vwc(i-S@87sn>Z*#^0jh(^NlNBN$&9$6A4E~{*o zd@@v26bytY#NsGhQIO^vYVGTIlYMA`A0Zw)Q~A_j+2&aG@VeJ{?6fftX~#^79a%tI z${&TDlHV5oG9J0lW{XOw*~V`IwHV|IrBQCvHLJDlY>muYh+ zl!k-l%3M-r1%o9l7S92Xq1UcewsO|i)I_;E88>utg5eNAT*+rVwx!vdlB5xp|1WA@2Qs?f4A z!;xCAKc2F@H?f#wledB-!VJJw$mG|{q4E(rTlM~7nZVmU2f**14>8lS=mq?iZLRE!p|9 z#l1B&?-F&yh`26P*keNlZgC{e8HGormECdK_9{)gmogWX{ApHjesa>%3(_iFY21QP z6z5`HmoI!be&5s0v$tRW;w$t8l(7N`|@K zFj>)botyzTq`OZ^BpNS2FU*N@o}c|bt?ZlY=2U4-G>}r=95Atk(e7` zn<|Z)_ep+eXIXJF^VJhh%imd66yb7xI4!z!buoS&!#PU*oCPsqbd!}&HCOH<|x!G@)Lxm?mrD~39Bp>f6EoONXO^*iEKii@^AGIGpKU^`b z(k&h}u0LGl&kq*+19VKQFFjnOS4D<9F%tF$Qc@bEDm`1GR1;CXUZ3Mwp~5SsVzJ@{5)3NVAzd^*oq<*-w~At6$rAM%VHrq8wr%=ht#UQTbgIi9Ip== zk-vnST8`hd{?YScA3H&8!O*=e$QuH)qc={(>=5&7xxYG3R3m?-jgWE zM58Jn-eLW*Uqvm-%3j#pU@Gs2P;n^Ya@Q;h#Y2IJGX&QQVE6n;G#ccQ8Rp>^#lb`Q z$I4}W_h|bkuYdn+-W8=Kk+RR#dc7%g>u~udaSTJR`lzolbaK^4MU8lJmoNPCN8IXN~u)@-aU1@>fOh3y|Z55Oj=X36`bV9}EA!p~JtmB?$ zzH`Qyt?TGs>8({^cXW=Q@wh48e4cUKbd+f38ne##&Ih!l2wE)m)yBx7|)Y+6TQ#a*mPk->dN! zD*amvoi{l;v*{LmUpHaM79H>cue zoE-D77RhrDjy^&=`}dahY(AB9M~*AI?_gtJ>q=!aCjh-J!Vv zB{%=pltaxAYUOma^ zACt-+|D%bo#u%J&Eyyq_0lp|`e ztL7M+8X$FEzT}JLPV2 zr2eQ|k?Un2jfwL8Tr^{zOm)+B{lsB12C%cQ$rVK``Vtkv#in;ywWB1xSOB10Ue|NL#9W~ zU7CyO^l-34k#{4{4aG;4PIoH*%5PugEBQY~AMEd$=?EKnCULuZw}cAEUo6DqLyw=* zn4cd|SKeF2*L_<`s_$TxHrZkQOlnq*-z+6{5mg!*-H@l31r>yj zGbv3f9R9j!^VXjk*%q$tYnM9I{HCS-)?VqOrE$Mr{92Xx7LH_I{dUhc*M*8t|7}a_ z`=Y6xj$sL&0(6eMx8MFKuDO9qRr2p&vJ;(3g|9>Bk<9W{KoO|!t?)`pe%++%;6Xs z;5cP5v#8@V4s@LND=O+Zn`=AH2h?Tbdg6oYIZg`Y&_<3kjB=j@$0_AH&WWaua{;e3 zbDXK1cesV)%)pi{9cKa_!E)3$Npzgr*sGP}%nWus&f?aN^H#9q6l?D|r>Qv5*>R?E zgXJl7h;qqpj?*^8aq4t;oZiHz_I8|3T=0BfE`(M4IZkWZ^~36v-|X)=RqzbPV&DMB z;dG}87RFjw4im8q_jd-6$xUD?=Eu2M5SO7&+=#hwt1a(B2JXCvdGP=i!sDp(&SNRO zi3KotpyTAjVyJQ?>bx3QjQcwYWYn|HsE!Q85}1jhI1|-@g{TfL$3WbGFXCp@4Qi#C z`leW#atBmLhF}q#j%v3Qb)DDIqp8?IrZ|3v>e&yd4*iM|=%$;gj6zn&Nk&%8S%t-L zJ!)h*sHs1K_3?LWumj&JeR!^|2=LuBc5q z7lUvEYDC$n4!?^<@hED9=TQUv8MTzTGaP3W7DO%8^bF=-7g|Cf7?-0)vdX#zb;EtO z{tW8E-=UV|2I>ZPP!}vbl=a0(R7YB(I@lexN77JBI}RJ;0uPyrWR9YG_$#Ud_pv+% zKj%0x7>$Z2qi&pvx?z9JgQINxdDN23wDqrIUdo%X4DP~`coM_WbDfMfN$yP3(@4|^ zz>cqtujhj&&`^=W_U>(Y(hOrT`gLN84QTCzEJB^x&zmNfWoP5Jg56fT} z6|tzPYmS=AuBauNfa=H;)C?@ds<<3ArH4=#{uT@14b=4>+IX=Mrh_rql6VhH*7LuH zOltx^p_ZV=NOOVun3r;E)X2M_rgkXm!X8_{!nzSP(sxiD_zDZ*52%6MwdE4*K*eJ* zM9+T%GP$uS>ck|}rt6Nn;aKa7n2+)rREM^pE_4WY;#a7dnmgKDX94D?{F*IiqxQ-k z>p}DsCUC+wxPZFwE!6uUc#L^*ltG;skGfz3)YH=1mfKr#@6y)>Bc@8xrn@~?r4(f)d zQ60O9i5NJJ4$OQ8^RlrV^n_@9s zgc|t@A4Kh?$C!$t6U_kAJY+P&Ow`E7p)NEHYv3{)KZ4yUpF-`KN|Q{xYz(Ko zAN4q1K)sNHCYz2#VG+tTQA?eO+N9ku0zH$+=(${p8rcDi!}F-M3x3{lDqv02)6o^R z345W|FatH^qp+gOXFh7A*;CAB+>ILGKGdE$ggXBiGGLE$noM&7m#{ikc)?sa1vTY8 zQSs-nHoj*495o|>eB0my(CLW*cmQ>SgQy#SZas_Y*d; zjf^hX1homuA&s zR-&%^2`1oG)C^U4(LeJZr!$#G1cqZB%tl@40tREqOT4EsAF88WQ6uS(ZE-wme3pPFxb^ct`jIO}k_&Mqw z2qsxOp*C4JERBOuPr-E54PQl_{~s)X-&n7s|M`DFrZE+{7nvI*q8heGy&rm_MwE$K z%h{+7Za_WP+fYx02i9SHB*~h3GUqp4}25O}DPED1>KC zOOPK`E{R&o@>mS3qc&S2hT${T;aHmTJoMe8&k7e*DYw&vW7)7Gu zNvN4fLydG8>ijWS1gBzAT!OmKMpTElp$3w(p84NI=3@fdB$;oRp3guv%tGDZb=1h- zvc88J(FxRzuA*-AC+e}yzrmElQRmf0%}63P##DR?mu+DFwPs%uke4wWZ(9p*G##sn zam3r8rfwvv-FythEm#qE;A}i?1VSChejF#JB9GGn~I8hmTxryvICdr?DCBdhX@z ziL3VU_y)72@9}*RJ@-E3M2r!pDs(gvtKkc2w14{GfP zVF-?}@$sm&oND!ANy?is8b3sB!Yin${tZiDz_(_J!%!WFL;vsplF6t8gZu%$P@wk0 zE2s;-j#|U5$c#Dra1wrq>TsiT=0;DWMmPXta5iddabMRhC{OJfF> z!C9Ds>#z>qz3eePs`P_t*Z?*16s(3*QJZHg>c)pqH$0AdLta4bi5sX*cpG)&JU^Pf z6NZtLqp=*e#&AqS4Rn@=OkOgpQM)=Dd*go8jmlmzGf^F@Q0{^n`Bbcm+fhq&4z=c` zu9{EN6x2XoMGfQ-YKCv4W-`|`(@{?tnF<6dp?cH-wV4K?Ucrk|BU@?fcVd0Y$1xfM zubY{RL!I9eHNsxDJO!IlUWV=PYwV1XKe2DLFUOF{P2fXR509Z9w~H8ox3DZ0_}N$m zHT6lD3%g=@?2Vx~1+@foQB$9V{=H-4$5Hn?hxzqf{76Pq|2xKEt{Y~}YgpT$K3w{s zHqmHXUWmIXug4I4_NEy?U)1wH&N>G*pe)qx--w#gU09s^J159Q;bqiFf^V5AjYgf& z6g8rb7>s>TBTBQ5M|E%>Y6(`MrhK=pzh}+$i`|r{^P|zD6YG)DR3>9y>|*VMc_R`k}GlOxc$14Ff zgRQKcP}fbh^`nuQ@;J|vDNe;gR1Y_xPJA2d;y%=r{)QTH;9q8w6~`pX4N2XPxJn5)-)RRe0Q;?qB`6UOW=4+ zz?V@s{1nyxJQl(qFc$Bku3Pr8Ij=4jWdAwsmBC)96EiUs$JqE()QJmGQ~M_7!?&>v zet>!ve}fv?W2}sY|1nQd0;;3EQ5_tM<#7&r)NmsiZI+X$kzGV>%6q8IQ^s-q9g9SD zG!7MSU~Ph$`a~>=eNdZqye-eSZ_#V{Wde3qB{zv9AfpE<4y8fT>s-ZU9I8?*+ zs1Y2)=J>s>j|y=8Q`-sSiBCYy$R^Yb9z^Y>&#Y%q1HFX0?r#Aeb3(~LGs4=aDQslz zfZCM(teIGr@rXmsF9pP&DbBPj>LqRfpx8(*tjP&mpP$> zbt-CYcc31Z-Kb6X5Vbb~dE0cxFw~kqhuYn)Tg{qOwAs5j+DSP$=E zh@Stdp|1aDvD(&AsHxk55qJbO#n(_HES}fYx4@#5Q&CUDFx1jaM$J%`EoWmR%12Op z!Odr8CNKIw|6|GMgu18(ZBQ5PjGFRv)Mgrsnh6i;jW-W9Ba2aw-zJR2byLZd#`&ntvkA3J&!Bd1zCy154H<)4^S0O)2ckCNHq`mI zP&1Odu<1Z~)UL0Ex?yi?I%;Ny73TTZ+D;&#wcUui!566a!A*?9d_~OERmTpLTcbL* z6g%NI)Xe;iTCzMv&7LZSTH0=?sUL#F(1U7st0>QZelm}2Ahek4|5ZyE>M2M;cBzw! z>Ty5Ri9<00C)x5!Yc{I=9@KRYpq`4)uom7y?Ujnf%|P3E$kZp0jyiEQYN|G%ZnzaS zweO*$V;AgzeQ+J>@%#ttp(nkh>*SDGh5GxP zXZT~Dc9chlx&HrF+m9V7N0l~vV-&WcydL%OdmXjgYnE~SAJ>_v50~|*rTPfdupocS zqc`SQ?1nyMGkTm*?z)OVEKb40=)>maUH^B&d#JVT6mDjyCsv|70ON20Y6fl$qM%6AkrJq-h(awzE!3uc z%Gw>ZIY*&p;w5V~YEvIYop&AmzyH5OMi&f^G9#&uYM6-HJZV@BUqX$14{DEGM!k@J zMxB2L^}YzKVBQzusQTup$2{5E9j8-HLyxBDDjD4{FxvF20_wzg)SIxrwH@mD?u*)d z<4~XX3vB%c)X4YP@+s8JTtV%Te=q?X#hB|(h~fEHgZTusTQ{P zklrKpBz}jaBbc%d?GOFM+$*S8?=|8(ZQU%&8iYn#m!xADsTu8`98GBZE9n~h&sj?* z6+g5WP@_eprxhbTIWAE@fkF!|bj-Hhgf%IDi@C864xr5`OsD+h2qWKyn2s7)i?SX= zPaiT_1imLN^H-byP*iq5sUh{%sOy2uuKy@OUem23lUN7RLtCfV+vNH1`#;B(|5yIa z)N1_vmV!z><7Y^Ed(9+0IYPOaHr=Hs0sMvbt%(0bem!~imGd+CJjD12aQLRpmrQe9 zq}-9Dmz$0Tq}NErY3u*}e=iF8RiMF165kV?v!uqvbv#Y}GVUO~LcTKTFI8|vkRFnr zC9NYp#dUP(9k1glgR>m}A?@c}9Zy*wvH$*i%p!k?H1xj_KHKdDw-D1aA4mNkcmVZY zuZiPHI;!I|n@`}pZ-||y{4DuI(q8htNZzh9G9n48L|l&vXylc8j$O-XrmS)PGDhIH{DgHU2YXTHB!LPI*24 zhP6q-c7%FSeL%SW~^~{Tq|I zk-FF$9kC5>U^~)A8r~=AXhzyZs%qQlPjR0di-=XW<#_TrRBW{E)MgBMy-n+p{vlt8 zzHcG)5w=3EhHTvjUZly^ey?%NpYMTj`|M?9UU=%REX4{ zc6?Rve+T#jb?oBv$7xQ6p9P#WQhS|1xgSYKLt?{8&yhYhA*VVGN>biRT1o6@d>Ma0 z9rH+$x(LTDQcoN2gqXGk)9ksl9@;Cc-m6KKx zf0aDnF`fRX&H5rP#ZO2+@{h45W{`AL;k+5RlK7M3W%3Jb`7L}*#rLEcTK}d58juU`97q2lz+#yq}AjvkYe2G|R z&O3`OZM_&rx=G5gZQmgOJV}S=B>x=sXL&(b2jf^8&nNw5Pikpqy~T zAcph|X#sVQNb%%#TqV6JY1f)qvW=^*A?dI(93j;E=Rb%Bohd~9t6^b(C0`nd4I)3C zrop6z(<}#ec}<+>+sq5dGdux9c=tPRgzDnzO8NJDMg?zX&`k`1UIV@M;fsL zlndi-EK95%c^%bBS)@voU!(4xf*kcJ$58$c`JuSgA2t8H3vZF?5>L1B#TtJsfqa~J z9(A0hp8qzdFiupaj+Nd6_# z2|fQs2~44)2~Nfnq#Gn1&4~@ik7@iXjwMYZuj6YhK>aB46Uomcy+b}Pu@}k5;$qbC zJbr1iPGjQDY}~*8LkK)$D@AWA8xh-p`6>TGYDa28`jS`)e46^ExPtQEBpv06{ri|l z{1AaMq~oN~l&jh{L6k3$3b{5g&R)cOyLn~bzQ(7*eVzMME$H1jtdZ~juz1&7dBhsu zh>??AZ`7E2-X&v-?i?HIhNcf6n=!Ee*o+awy?Mu1@IDxK+t*~m_5g35$;EvgCT|b& z&hm8ho$*w5y}75K^YxoiKfrfwR-Hg!mw9~yOQa7^AKgFGX=98?Ngq2lWB6d7cR{A> z&ATep8@8~4cl5$I-;sqOuJ8JynyzoqlCJ~2$x9n}UtD_8J9613U-t6juD8O981MQO zrMxFs%>8%G5Cs%9^DeSuqNhWeJgTif;B z%gO8d^6z~V<4d`Gy^weHoi4t=?{sy&J?|a!6?t&j^)`9f*t_>(X&RRV$A>AZJw`H_^?y9_s#*Gb5k- zaX`-Yg6`13oSsG9prEX(rQEQbQKj7WZr0afZo8~DrQPJ5BcnV3kXwI-Ccd47xEZI$SbA0Vw HU(o*mYg>s8 diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po index 826fa56..aaed15a 100644 --- a/locale/es/LC_MESSAGES/django.po +++ b/locale/es/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-12 10:44-0300\n" +"POT-Creation-Date: 2026-03-12 11:09-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -58,6 +58,8 @@ msgid "" "Are you sure you want to regenerate the token? The old token will stop " "working immediately." msgstr "" +"¿Está seguro de que desea regenerar el token? El antiguo token dejará de " +"funcionar inmediatamente." #: api_v2/forms.py:63 cluster/forms.py:67 cluster/forms.py:124 dns/forms.py:37 #: dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:40 @@ -193,32 +195,32 @@ msgstr "Documentación de la API" #: app_gateway/models.py:12 msgid "Upstream address, e.g.: http://10.188.18.27:3000" -msgstr "" +msgstr "Dirección de origen (upstream), ej.: http://10.188.18.27:3000" #: app_gateway/models.py:42 msgid "Bypass (public)" -msgstr "" +msgstr "Bypass (público)" #: app_gateway/models.py:43 msgid "One Factor" -msgstr "" +msgstr "Un factor" #: app_gateway/models.py:44 msgid "Two Factor" -msgstr "" +msgstr "Dos factores" -#: app_gateway/models.py:45 gatekeeper/models.py:114 +#: app_gateway/models.py:45 gatekeeper/models.py:111 #: templates/gatekeeper/gatekeeper_list.html:272 msgid "Deny" -msgstr "" +msgstr "Denegar" #: app_gateway/models.py:84 msgid "Route identifier, used in export (e.g.: public_area)" -msgstr "" +msgstr "Identificador de ruta, usado en la exportación (ej.: public_area)" #: app_gateway/models.py:87 msgid "Evaluation order — lower value means higher priority" -msgstr "" +msgstr "Orden de evaluación: un valor menor significa una prioridad mayor" #: cluster/forms.py:20 msgid "IP Lock" @@ -865,7 +867,7 @@ msgstr "Contraseña" #: gatekeeper/forms.py:19 msgid "TOTP Secret" -msgstr "" +msgstr "Secreto TOTP" #: gatekeeper/forms.py:41 gatekeeper/forms.py:75 gatekeeper/forms.py:137 #: gatekeeper/forms.py:224 gatekeeper/forms.py:254 gatekeeper/forms.py:285 @@ -875,108 +877,106 @@ msgid "Cancel" msgstr "Cancelar" #: gatekeeper/forms.py:54 templates/gatekeeper/gatekeeper_list.html:104 -#, fuzzy -#| msgid "Profile Name" msgid "Group Name" -msgstr "Nombre del Perfil" +msgstr "Nombre del grupo" #: gatekeeper/forms.py:55 templates/gatekeeper/gatekeeper_list.html:105 msgid "Members" -msgstr "" +msgstr "Miembros" #: gatekeeper/forms.py:85 msgid "TOTP Validation PIN" -msgstr "" +msgstr "PIN de validación TOTP" #: gatekeeper/forms.py:88 msgid "" "Enter a 6-digit PIN generated by your authenticator app to validate the " "secret." msgstr "" +"Introduzca un PIN de 6 dígitos generado por su aplicación de autenticación " +"para validar el secreto." #: gatekeeper/forms.py:99 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Type" -msgstr "Autenticación" +msgstr "Tipo de autenticación" #: gatekeeper/forms.py:100 msgid "Global TOTP Secret" -msgstr "" +msgstr "Secreto TOTP global" #: gatekeeper/forms.py:101 msgid "OIDC Provider URL" -msgstr "" +msgstr "URL del proveedor OIDC" #: gatekeeper/forms.py:102 msgid "OIDC Client ID" -msgstr "" +msgstr "ID de cliente OIDC" #: gatekeeper/forms.py:103 msgid "OIDC Client Secret" -msgstr "" +msgstr "Secreto de cliente OIDC" #: gatekeeper/forms.py:154 msgid "TOTP secret must be empty for Local Password authentication." msgstr "" +"El secreto TOTP debe estar vacío para la autenticación por contraseña local." #: gatekeeper/forms.py:156 msgid "TOTP validation PIN must be empty for Local Password authentication." msgstr "" +"El PIN de validación TOTP debe estar vacío para la autenticación por " +"contraseña local." #: gatekeeper/forms.py:158 msgid "OIDC fields must be empty for Local Password authentication." msgstr "" +"Los campos OIDC deben estar vacíos para la autenticación por contraseña " +"local." #: gatekeeper/forms.py:164 msgid "Only one Local Password authentication method can be configured." msgstr "" +"Sólo se puede configurar un método de autenticación por contraseña local." #: gatekeeper/forms.py:167 msgid "OIDC fields must be empty for TOTP authentication." -msgstr "" +msgstr "Los campos OIDC deben estar vacíos para la autenticación TOTP." #: gatekeeper/forms.py:169 msgid "TOTP secret is required for TOTP authentication." -msgstr "" +msgstr "El secreto TOTP es obligatorio para la autenticación TOTP." #: gatekeeper/forms.py:173 -#, fuzzy -#| msgid "Please provide a valid IP address." msgid "Please provide a PIN to validate the TOTP secret." -msgstr "Por favor proporciona una IP válida." +msgstr "Proporcione un PIN para validar el secreto TOTP." #: gatekeeper/forms.py:178 msgid "Invalid TOTP PIN." -msgstr "" +msgstr "PIN TOTP no válido." #: gatekeeper/forms.py:180 msgid "Invalid TOTP secret format. Must be a valid Base32 string." -msgstr "" +msgstr "Formato de secreto TOTP no válido. Debe ser una cadena Base32 válida." #: gatekeeper/forms.py:183 msgid "TOTP secret must be empty for OIDC authentication." -msgstr "" +msgstr "El secreto TOTP debe estar vacío para la autenticación OIDC." #: gatekeeper/forms.py:185 msgid "TOTP validation PIN must be empty for OIDC authentication." -msgstr "" +msgstr "El PIN de validación TOTP debe estar vacío para la autenticación OIDC." #: gatekeeper/forms.py:194 gatekeeper/forms.py:236 gatekeeper/forms.py:267 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Method" -msgstr "Autenticación" +msgstr "Método de autenticación" #: gatekeeper/forms.py:195 -#, fuzzy -#| msgid "IP Address" msgid "IP/Network Address" -msgstr "Dirección IP" +msgstr "Dirección IP/Red" #: gatekeeper/forms.py:196 templates/gatekeeper/gatekeeper_list.html:257 msgid "Prefix Length" -msgstr "" +msgstr "Longitud del prefijo" #: gatekeeper/forms.py:197 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 @@ -986,131 +986,107 @@ msgstr "Acción" #: gatekeeper/forms.py:237 templates/gatekeeper/gatekeeper_list.html:221 msgid "Domain" -msgstr "" +msgstr "Dominio" #: gatekeeper/models.py:10 -#, fuzzy -#| msgid "Default Password" msgid "Local Password" -msgstr "Contraseña predeterminada" +msgstr "Contraseña local" #: gatekeeper/models.py:11 msgid "One-Time Password (TOTP)" -msgstr "" +msgstr "Contraseña de un solo uso (TOTP)" #: gatekeeper/models.py:12 msgid "OpenID Connect (OIDC)" -msgstr "" +msgstr "OpenID Connect (OIDC)" #: gatekeeper/models.py:13 -#, fuzzy -#| msgid "IP Address" msgid "IP Address List" -msgstr "Dirección IP" +msgstr "Lista de direcciones IP" -#: gatekeeper/models.py:71 +#: gatekeeper/models.py:17 +msgid "Shared/global TOTP secret key" +msgstr "Clave secreta TOTP compartida/global" + +#: gatekeeper/models.py:68 msgid "Password for local authentication (leave blank if not using)" -msgstr "" +msgstr "Contraseña para autenticación local (dejar en blanco si no se usa)" -#: gatekeeper/models.py:72 +#: gatekeeper/models.py:69 msgid "Per-user TOTP secret key" -msgstr "" +msgstr "Clave secreta TOTP por usuario" -#: gatekeeper/models.py:112 +#: gatekeeper/models.py:109 msgid "CIDR prefix length (e.g.: 24 for /24). Leave blank for a single host." msgstr "" +"Longitud de prefijo CIDR (ej.: 24 para /24). Dejar en blanco para un solo " +"host." -#: gatekeeper/models.py:114 templates/gatekeeper/gatekeeper_list.html:270 -#, fuzzy -#| msgid "Allowed IPs" +#: gatekeeper/models.py:111 templates/gatekeeper/gatekeeper_list.html:270 msgid "Allow" -msgstr "IPs permitidas" +msgstr "Permitir" #: gatekeeper/views.py:55 -#, fuzzy -#| msgid "Edit User" msgid "Edit Gatekeeper User" -msgstr "Editar usuario" +msgstr "Editar usuario de Gatekeeper" #: gatekeeper/views.py:58 -#, fuzzy -#| msgid "Create Peer" msgid "Create Gatekeeper User" -msgstr "Crear peer" +msgstr "Crear usuario de Gatekeeper" #: gatekeeper/views.py:66 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Gatekeeper User saved successfully." -msgstr "Clave de API guardada con éxito." +msgstr "Usuario de Gatekeeper guardado correctamente." #: gatekeeper/views.py:91 -#, fuzzy -#| msgid "Peer deleted|Peer deleted successfully." msgid "Gatekeeper User deleted successfully." -msgstr "Peer eliminado|Peer eliminado correctamente." +msgstr "Usuario de Gatekeeper eliminado correctamente." #: gatekeeper/views.py:96 -#, fuzzy -#| msgid "Delete Peer" msgid "Delete Gatekeeper User" -msgstr "Eliminar peer" +msgstr "Eliminar usuario de Gatekeeper" #: gatekeeper/views.py:98 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the user \"%(username)s\"?" -msgstr "¿Está seguro de que desea eliminar la clave de API \"%(name)s\"?" +msgstr "¿Está seguro de que desea eliminar al usuario \"%(username)s\"?" #: gatekeeper/views.py:112 -#, fuzzy -#| msgid "Edit Peer Group: " msgid "Edit Gatekeeper Group" -msgstr "Editar grupo de peers: " +msgstr "Editar grupo de Gatekeeper" #: gatekeeper/views.py:115 msgid "Create Gatekeeper Group" -msgstr "" +msgstr "Crear grupo Gatekeeper" #: gatekeeper/views.py:123 -#, fuzzy -#| msgid "Peer reactivated successfully." msgid "Gatekeeper Group saved successfully." -msgstr "Peer reactivado con éxito." +msgstr "Grupo de Gatekeeper guardado correctamente." #: gatekeeper/views.py:148 -#, fuzzy -#| msgid "Schedule Slot deleted successfully." msgid "Gatekeeper Group deleted successfully." -msgstr "Franja de programación eliminada con éxito." +msgstr "Grupo de Gatekeeper eliminado correctamente." #: gatekeeper/views.py:153 msgid "Delete Gatekeeper Group" -msgstr "" +msgstr "Eliminar grupo Gatekeeper" #: gatekeeper/views.py:155 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the group \"%(name)s\"?" -msgstr "¿Está seguro de que desea eliminar el perfil \"%(name)s\"?" +msgstr "¿Está seguro de que desea eliminar el grupo \"%(name)s\"?" #: gatekeeper/views.py:169 -#, fuzzy -#| msgid "Authentication" msgid "Edit Authentication Method" -msgstr "Autenticación" +msgstr "Editar método de autenticación" #: gatekeeper/views.py:172 -#, fuzzy -#| msgid "Authentication" msgid "Create Authentication Method" -msgstr "Autenticación" +msgstr "Crear método de autenticación" #: gatekeeper/views.py:180 -#, fuzzy -#| msgid "Static DNS saved successfully" msgid "Authentication Method saved successfully." -msgstr "DNS estático guardado correctamente" +msgstr "Método de autenticación guardado correctamente." #: gatekeeper/views.py:187 msgid "" @@ -1130,96 +1106,95 @@ msgid "" " \n" " " msgstr "" +"\n" +"
Tipos de autenticación
\n" +"

Seleccione cómo se autenticarán los usuarios a través de este " +"método.

\n" +"
    \n" +"
  • Contraseña local: los usuarios se " +"autenticarán con un nombre de usuario y una contraseña estándar almacenados " +"localmente. Solo se puede crear uno de este tipo.
  • \n" +"
  • TOTP (Contraseña de un solo uso basada en el " +"tiempo): los usuarios deberán introducir un token rotativo de una " +"aplicación de autenticación. Requiere configurar un secreto TOTP global.\n" +"
  • OIDC (OpenID Connect): los usuarios se " +"autenticarán a través de un proveedor de identidad externo (como Keycloak, " +"Google o Authelia). Requiere la URL del proveedor, el ID de cliente y el " +"secreto de cliente.
  • \n" +"
\n" +" " #: gatekeeper/views.py:219 -#, fuzzy -#| msgid "Static DNS deleted successfully" msgid "Authentication Method deleted successfully." -msgstr "DNS estático eliminado correctamente" +msgstr "Método de autenticación eliminado correctamente." #: gatekeeper/views.py:224 -#, fuzzy -#| msgid "Authentication" msgid "Delete Authentication Method" -msgstr "Autenticación" +msgstr "Eliminar método de autenticación" #: gatekeeper/views.py:226 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the authentication method \"%(name)s\"?" -msgstr "¿Está seguro de que desea eliminar la clave de API \"%(name)s\"?" +msgstr "" +"¿Está seguro de que desea eliminar el método de autenticación \"%(name)s\"?" #: gatekeeper/views.py:276 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Edit Allowed Domain" -msgstr "Ingresar IP permitida" +msgstr "Editar dominio permitido" #: gatekeeper/views.py:279 templates/gatekeeper/gatekeeper_list.html:186 msgid "Add Allowed Domain" -msgstr "" +msgstr "Añadir dominio permitido" #: gatekeeper/views.py:287 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Allowed Domain saved successfully." -msgstr "Clave de API guardada con éxito." +msgstr "Dominio permitido guardado correctamente." #: gatekeeper/views.py:312 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "Allowed Domain deleted successfully." -msgstr "Clave de API eliminada con éxito." +msgstr "Dominio permitido eliminado correctamente." #: gatekeeper/views.py:317 msgid "Delete Allowed Domain" -msgstr "" +msgstr "Eliminar dominio permitido" #: gatekeeper/views.py:319 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?" -msgstr "¿Está seguro de que desea eliminar el perfil \"%(name)s\"?" +msgstr "" +"¿Está seguro de que desea eliminar el dominio permitido \"%(domain)s\"?" #: gatekeeper/views.py:333 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Edit Allowed Email" -msgstr "Ingresar IP permitida" +msgstr "Editar correo electrónico permitido" #: gatekeeper/views.py:336 templates/gatekeeper/gatekeeper_list.html:183 msgid "Add Allowed Email" -msgstr "" +msgstr "Añadir correo electrónico permitido" #: gatekeeper/views.py:344 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Allowed Email saved successfully." -msgstr "Clave de API guardada con éxito." +msgstr "Correo electrónico permitido guardado correctamente." #: gatekeeper/views.py:369 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "Allowed Email deleted successfully." -msgstr "Clave de API eliminada con éxito." +msgstr "Correo electrónico permitido eliminado correctamente." #: gatekeeper/views.py:374 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Delete Allowed Email" -msgstr "Ingresar IP permitida" +msgstr "Eliminar correo electrónico permitido" #: gatekeeper/views.py:376 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the allowed email \"%(email)s\"?" -msgstr "¿Está seguro de que desea eliminar el perfil \"%(name)s\"?" +msgstr "" +"¿Está seguro de que desea eliminar el correo electrónico permitido " +"\"%(email)s\"?" #: gatekeeper/views.py:390 -#, fuzzy -#| msgid "Add IP Address" msgid "Edit IP Address" -msgstr "Añadir IP" +msgstr "Editar dirección IP" #: gatekeeper/views.py:393 templates/gatekeeper/gatekeeper_list.html:247 #: templates/wireguard/wireguard_manage_peer.html:171 @@ -1227,28 +1202,21 @@ msgid "Add IP Address" msgstr "Añadir IP" #: gatekeeper/views.py:401 -#, fuzzy -#| msgid "API Key saved successfully." msgid "IP Address saved successfully." -msgstr "Clave de API guardada con éxito." +msgstr "Dirección IP guardada correctamente." #: gatekeeper/views.py:426 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "IP Address deleted successfully." -msgstr "Clave de API eliminada con éxito." +msgstr "Dirección IP eliminada correctamente." #: gatekeeper/views.py:431 -#, fuzzy -#| msgid "IP Address" msgid "Delete IP Address" -msgstr "Dirección IP" +msgstr "Eliminar dirección IP" #: gatekeeper/views.py:433 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the IP address \"%(address)s\"?" -msgstr "¿Está seguro de que desea eliminar la clave de API \"%(name)s\"?" +msgstr "¿Está seguro de que desea eliminar la dirección IP \"%(address)s\"?" #: intl_tools/forms.py:11 templates/accounts/login.html:36 msgid "Language" @@ -2195,25 +2163,30 @@ msgstr "" msgid "Create Port forwarding Rule" msgstr "Crear regla de reenvío de puerto" +#: templates/gatekeeper/gatekeeper_auth_method_form.html:63 +msgid "View QR Code" +msgstr "Ver código QR" + +#: templates/gatekeeper/gatekeeper_auth_method_form.html:74 +msgid "Please enter a TOTP Secret first to generate the QR code." +msgstr "" +"Por favor, introduzca primero un secreto TOTP para generar el código QR." + #: templates/gatekeeper/gatekeeper_list.html:12 msgid "Gatekeeper Users" -msgstr "" +msgstr "Usuarios de Gatekeeper" #: templates/gatekeeper/gatekeeper_list.html:18 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Methods" -msgstr "Autenticación" +msgstr "Métodos de autenticación" #: templates/gatekeeper/gatekeeper_list.html:24 msgid "Allowed Emails & Domains" -msgstr "" +msgstr "Correos electrónicos y dominios permitidos" #: templates/gatekeeper/gatekeeper_list.html:30 -#, fuzzy -#| msgid "IP Address" msgid "IP Addresses" -msgstr "Dirección IP" +msgstr "Direcciones IP" #: templates/gatekeeper/gatekeeper_list.html:40 #: templates/user_manager/peer_group_list.html:11 @@ -2221,10 +2194,8 @@ msgid "Users" msgstr "Usuarios" #: templates/gatekeeper/gatekeeper_list.html:43 -#, fuzzy -#| msgid "Peer Groups" msgid "Groups" -msgstr "Grupos de peers" +msgstr "Grupos" #: templates/gatekeeper/gatekeeper_list.html:51 #: templates/user_manager/list_buttons.html:2 user_manager/views.py:111 @@ -2242,55 +2213,45 @@ msgid "Actions" msgstr "Acciones" #: templates/gatekeeper/gatekeeper_list.html:88 -#, fuzzy -#| msgid "No time intervals found." msgid "No Gatekeeper Users found." -msgstr "No se encontraron intervalos de tiempo." +msgstr "No se han encontrado usuarios de Gatekeeper." #: templates/gatekeeper/gatekeeper_list.html:95 -#, fuzzy -#| msgid "Add Peer Group" msgid "Add Group" -msgstr "Añadir grupo de peers" +msgstr "Añadir grupo" #: templates/gatekeeper/gatekeeper_list.html:131 msgid "No Gatekeeper Groups found." -msgstr "" +msgstr "No se han encontrado grupos de Gatekeeper." #: templates/gatekeeper/gatekeeper_list.html:140 msgid "Add Auth Method" -msgstr "" +msgstr "Añadir método de autenticación" #: templates/gatekeeper/gatekeeper_list.html:176 -#, fuzzy -#| msgid "Authentication" msgid "No Authentication Methods found." -msgstr "Autenticación" +msgstr "No se han encontrado métodos de autenticación." #: templates/gatekeeper/gatekeeper_list.html:196 msgid "Identity" -msgstr "" +msgstr "Identidad" #: templates/gatekeeper/gatekeeper_list.html:197 #: templates/gatekeeper/gatekeeper_list.html:259 msgid "Auth Method" -msgstr "" +msgstr "Método de autenticación" #: templates/gatekeeper/gatekeeper_list.html:241 msgid "No Allowed Emails or Domains found." -msgstr "" +msgstr "No se han encontrado correos electrónicos o dominios permitidos." #: templates/gatekeeper/gatekeeper_list.html:260 -#, fuzzy -#| msgid "User Manager" msgid "Manage" -msgstr "Gestión de usuarios" +msgstr "Gestionar" #: templates/gatekeeper/gatekeeper_list.html:293 -#, fuzzy -#| msgid "IP Address" msgid "No IP Addresses found." -msgstr "Dirección IP" +msgstr "No se han encontrado direcciones IP." #: templates/generic_delete_confirmation.html:16 msgid "Confirm Delete" diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo index 1e970d76e6686b340ed0a609bacbddc874ed2766..9f094861198b86b3e962f0b1ce96c51bfd3493a4 100644 GIT binary patch delta 22560 zcmb802Y6J~_P5U@p|{XWD2Glc2_2+EsM0$Ylp&dfkx3ylp@=$26T94@*g^2Bpnw_# z8>mDD3xX($y>~&ydM)_9zq5BBK)m1mpXb@Ud#&BqUb_vj@8g8cg=M1e*GO3H@VyY{ zI1OP&9mjbr-fIB$?}?|F{% z91UD?f#WQKgD;|E=%1V6I3vnB&c}YonU22wEILEQ*IYt{@NGDhd{t*VPAc-`5RJoS zur+)LQrvk9R)-(LMzrr7Cz6CBG23y;|jBG^m0TVL5odm1jZ>-~?eMm0*2GW6vbxhhn}jbJU93{`PIsE&?<%$9Q= ztO)a`bHq901j`3!p|4f$GpzQ2AEDMsNdc z0iTA=;AgNoET88%O<{Yedd9%oFbirRmqQKUYUsk-^02?==1COe;iphN>^{egxDTv~ zJRWK;XTTotI@lLJ3kSfse5?Y~;1IYNc7yw%@}Gb`VfV1{m0XB>IUB>+e;bj%Q4E0F zB3J`{57p!51*QY3P$TIF)saas87_jFg3Yiddh2XEam;lc6dML(S6@LMEE?c1K)&f5zaB#3btKfIyfGx z1Jht*m<3zHk%{9kH*?n#sv~WoEYk>q3!w@wh3a4os^JGMpM#p)x1l=z1yuRJq3SJrrQq2$##Vc)34xo^CzYlA` z!$hqgdj`Z=g}-iZ=X!DCPr z{sy%!%Pui;Wy=OoQ_u#g!Tzuv9Ancjg{pW3l+WC0_4hyxY&+B$vCpQz24&IcJ4Doh zPoYM53~Ge&OHGe!!d}SjpiGzv8^d{UEL;QC@aIq+{1Xm_HJ6z!c^aIGycUj!-@%LF zz~xwx_MN+kXk8wKYPjrGW^U`iB;+no4UL8B;5sM^Y_}|ey^#+=Ia}2gW(#fr&qE#$ z%fb6$c~}T#i6>z#t^d75I-+>jCRDlF^tc`**~x=y_kAK!e;Oe=)$LA3-}R~^On7q=~M&FiL`^GU~@Ph%4=_j^5%`O6?_n?f;VAH_$O5U zX4jdi845MhsaC!iszZ6OB3uGh?+vh(kNW_ORzmUQ^=3KjgXNL;!!qy6RKnTZo>Wph#W+rIjg?X zczbhL4f!I=9HbKSP$LLHIZrlJ#!GGbbx;j%g0jqm&>JySM|Z(^SOm2Z?S-o6eW(F` zW9471oUled#r!7{k*R7z7xsYKc&0&}0TEaS-U!vvd!VMQ2rM`k4wEp96HW@oYnRY0Ysi#2AxgTnzv!SLa3~Ru}P!?JZ`@nml z8u}EfeBE12hnm59$iv_OI0M#&cfqK7_!tqH?f|R;UxPB;M^F_VgL1&!A84VxiH;YDx*)KvMR>rKO5 zVJ8$pC?~oN%7jltjqo|x1)hMiNawrE-1mptNXA2zn{V}ZK>5lxD9i1Jvh>SP136;T zqdyRl6FD1<$!kE(^>Ek@j)y9EIaI?}+w?V14XlHjlC4lq`WVzQea3Phlv5vo4d4f` z4*VT5#ZjmFMpMBss0t@o`k{8LJlGpv3Dv+ZoBo_le;sN>pTWlP1k?Z;-EB6WR?ouRRGJvjZky884ib!!}2hGliB$yLs_IP zRL8r)?r@;h&xfjK39JCGfy%cEHiYY~e%B`KuZs4fC<6~c$wy!l_z7$W<2RdzQ=xof zG*m?wK{d3{axpB2d^OY*u7qm%epmtSwDL1h7TLcU`*$Sr5ejV(HSRZaG#1Kqi=p<1 zy->?2?g8VZiBMD11Zq{Zfbxk>urC}2m%?RmF|4@7)OS660{IZs73_xSRHz zgkRt=IOIX|1H<)D8_P~O0{#Hiq23P}{ah&Ldl2@AZ@>Vo^RQXYm%$;(55uO5{(9o9!| z2Gw96s0PQv>M-5P1yJR#hN|~gsGW2hl#_k~z4w1IE~z=~2{nhqEVH0Gb`@*`?|=>9 z^EUk>sHyWkX)II*E<tDnI=wE+{O@?~D*w4!s=D$LxVf6#77V_N!$HCVR za--{}PDxO0w``$JVY3^s%p!6dj4wuWnAJ@}MOKLVQ}{|q$+^?otsqiu=QMlld- zZl^+J$cLJvrBH{;23Q9^W91`I9sU)ngJpj;a#g6Eu@TgiG=p;HEwC=!3040Ah_6MR zkBFq8@cm{obcFKm;g&O@mfvMC8E%B_;C?8l{10pkoBhXhbTm{$A*lUeDbxU0L799r z>f#d%)zHkE^ zjQk?(2dn*spTIG23w#vn7d0pIgsJEWn1menw^_H1q2yH96^?}6;Ud@&?t~iY>u?nO z7OKH>9G_>ID_~FLd!a1%A(T&5^!dDfqdJUggJ@wD-Jnc19FB$4pw{nwP?p#MHP@fR z)$kb9TrQ3CdCs{8D*bj?58e&sBfFrS?`5bCdgd(urd4@wuaGK z6@1?5)d#BJFw5z%8*&(G?lwW0^ktj=8Pxvp2b3l1SM+(SqXYCK=fU&fA(#Q%SMquL zz)C2my$#Zls8dKpb9o5Lgx{G2r(R{#a1W?CKOf3cb6^X&1ZqV0K^N|Wn$xeKcGMp% z|AMk$g({|eSEvpTg>AI{&$o&tmTRH*?E9fA+74^Lr=jNbHR!_Mp)8P8)%eaiP;);5 zsw1P8OjzZ0S_3CCSJHn_c7(qlmyAZ0PfaP4Mj$H+{BW{F!;iFK# z@(Yx2RIXu0oC@V^Jz#w}6v~1#EJLs|@_eZB%WAOxHNx9asNgQBxqcZAfuBG*U2;t` zhlAiH$k{Lj9zb|ePACiPvwRP#q2o|dEAk+X}g0kdc zC@1|E>g;eD8%tD$As?oP^0_5VyfY)}tRbR|x5Kht#;u!1zYc@3l7znep{_}~bM{h%ohMvh z)$t;n3crOK$>0`d?t^eTauimD??Fw;w=fNsYiT+@63V$Rg7TqTp?v6d7?p`Cv@&~r zQ&3C}Lixa6s14%~RL8!A+R46yvPji7#wWVKWaOz(JK>d39bX4! znH^C1U$y+DP1KAaDcNLb4%PF1FcnUKvdCf>4_82S;5y3~lm%{u+9@|cZCJaZeBezh ze{1D3ZB0E5U|Z4~M~P_pjestk3+2sgp(@-3wZ*;#<@J9;?F()@bKLfYD!&M7#9N>& z^%B%ve*{~>r1qwsL2v+a0BS0t_Yl!s?uJ@+2cb;<9@Lb42{jczK}}VB2UD;PoQRwP zZawqJL{1!}ri5*P?wV_7X4$4AlupP{Ua=zPP6RrO(MAYzpsEXf%>S5m7ogthcf*rsPyxpD#)<<0;uJ;#PV9Gqm zxbR@0ZTH~a(kfIa$|j^{#Ia0!&9qN|9=2X3>9{ZJ!$9m+%>Le23v zQ2CPjn+8Y2rpTF47FYpgnJsWEdT39t>+fEGfnqN`y~t^b>es7J3_ehkCN zKSFgRYoKW$3^lTwp&Gg$YI!{cwQ9-_G9#)ACXMNt3#(8(bp zXNy2Bqbp%YxD{$A`vB_jD3fMZg9~N4^P#5757po$P^%*XHMcRFejijv9)j|*T~JeU z7>?2UuQJ%@{cvz0JRkWMsFD2y)#JWHjD_MIg+1s2t!_94Z*a+7DOcHJ+G6o)pL*T%3O$V-m(jSD{IGT(!8_sm74Q3rw z`e8T+wisp7*T78VBak_E`j7TGd*OU|EgUe$=llR)9>e+{No4m}W73M_%m}N)cIfNE z4loVMq;sIWd^waQwn7(fhw_QTQ0x6Gs3}PtZ}K&OvX~3C!KJ`>*kydw=S(5e1I0vm z1C(=o3{}B#%Rix}qU;1Shqa-WV+W{?jfV1-nNS^A0o%ZBQ00z5`P3J%3#>QMIP<6| z5zXPnP$QcUHRAP91zv$#c7H>Su+t>ttV5tGo&e=^eyHWR2$q8zphmnIYCw-#c^|wD z`3%A^lLne+(M-1(-Nov;j)w|9h^+dZ&4 z+zVx)x1c)wCDii%16~B%oTo#H^>-B!R)upZp&y~-_YMj2k6Q@1%E|9F;+^7H^Jq2` z|A-JI-V@!s@CoF~#K+kZsc<2>3h3q#x)9g*uPB1P|Da&Gdfyf30ye(GrXMm%4!1Dp zal#jb3#_gf&k@l-<9?sCT*AZ1Pb2?I{9Jei{DJT&@ta|Dg7%-&zAY#Rputg{B_&dx zN7nbGnz%L& zZ9@7wqrZosZ>@p172k?(0HLo<`xoW(eGM-oEFkFT`r7ag$f%1(RJASOg(k^a4!^K* z59Iqq5oKIR#+|SaK}+UE61zfu9D?2!nn@mgKIA(I`fjtjb;w+bou-5r(CZ8ts0@7V zY@U1JUC5Uco+00l1bxwZB;16cC8P8H0pcGJ#-ZN`_rOC?AKSe144jLOBf(j3^*TL^ zzc4y2-?U-{ENk;!K|Dm+q3|A~i#m@gf>Pf$!f3)ubn^%u(GNl{g4&$66SU2;guVY% z5J3Mua$8tS_3(8d-jtxV-qY%0$ol?7{)AAT&;?z79QNO6(ww(YRv_s67G4cI!EMW~(c(d|%#uL)rbAr;+K@B#9!Ag)J?zH5mO zB2=?=Oh&gC`F!L?UJmB}B^3IeC)`M=Ac5~QLN_v2CEV_5%pX622I!i@V}xeJ_0^!B z3vFGO!WroABy1pCg|%=#-+A`Da4x-^tDCT6lTEd(B%>y zM_vX$LpKU?vvS%~eCEPPt???0fgx&;wbqUkRqwg)kBtk_i_qTcKz)e>7oaL7)!1n~Q z+V?(PiS+5O)4SV@v*2G;FbpmsJVJaudFm6dM*Mo>CkVd~iob7(G$Sk~Od{V!{H?oqPvkWilFZv!fL|X z$lc-9w)_m@0m6Lb;e@9MA@bCLZ=&z5@vlYk7>eI*W!dmW5{JOXRyPy*8saPAI`Wny zUYAgg_=N<0&%pA8T2{UY-awxHq!mDYN8xT*&&tD!_y2sW*y?5D8ikxf1#iGxt*$Ha zn{4G-#P1`lAT8IX7h|u@Be@2lEMYymfrKfPX`uwZ*9p;TUX(K(UQFUxGCd0;@OFZ} z4aoZ5wOn9C@6RX6Q$V`ur)UIn*UeNEz5*|_q}Le@9izG2GRwcw!a3C5tGkMMh_mcPv;W3*j9cH1gZYw-svU)$YB%{kiUP`!+u!`_LLEj9@ zm9cenFe?7V1XDnnQOIQojWzy6!c`=+gZoHa120G32Y)2EggoTpFP=RACM+jxLO%ia zCGiHrF5*|(ymwf>fxZ#?gI4|n9z-`EmVb{w8WLg;ZEah4sLQKOY78uh%nIa0g6aN9 zFgM4Yv>-1w@PeALTPIg)R}c>5huwL>P{{S4$`x=Uv+{EbvSz_x*v$?^X60tY9-r1O zIx08aA9Ba}!{K?k`5Apu!;$>loUDGm+{yn?Q9(GEljZu|aKxXJ;m^--)nbl6JK!R_ zdA1^wbMpfkZb;RK7Nodib3zN;+?;@$n`!zGS&$cS)2sM%+?g;x;Ex0{Vkze}iB1|j zX`I_;QZPHvVURye9b9VDLYWpe4=%n6V=lIvobKt4Up&y8RoIvdHI9msJr^K-N5 zV@b2*k}WSU#hnnCQxMD#gxzo;Qr|1$cZY>?XJQ$zHxmPNFyi%Y?1;f>Zkw@rft(S8 z-L%}CoIrZyANq5e{pSY#YCJHXzU5GFFhdgWd7=gvjQciV)5vjgtPz=HHpu77rW zcUW$2Rw&TkrIX%#hl2j(lwqg(I-qE8C-R z;ma9|ef36+bNv|^%u(2F*0PO_CWo8Fz7MoY^4l?FcwHz+@l703zX|3?X3Hmo+1Y`NAca^Qg{w1@eS@rh9dEKvF77kL(lZrL4VJBo zWlybpjmJ(K^N?I>O8CqI+D=YnwTOL_^~2;r3$&u$HhBdzL&5Z9CvC*w3Ak(^GdSN3 z1#+@*i#CCjtdw4E=dNxhuA17pYjTP^D&U_RaA$`6IkP=2+XaIT1>9M=;Ydp1JF~XM zomXmS`2XSB3EZJ9$9YVfJE0&HC{_+5Wp*Ht$71muuoS&^t-`glcO*oM-O0G2GdK_m zP;ar;^TdNmK>-EV~7WXI|c8r`;xFNq=+!(t{cJGi8%%c5q zBgVMJj-27nT;MLqEns^*)djOzYJ;8Y4+S%d{XOjMjVXnPBi-Y>ky2pJBn}g%>ElJK zI0EJoQ%Zof<AQ~{_KE>7A{&C@+FK4h9j{LFB=nU zwz^iV>E+$Zc~i|y(_ZCMb`FFKCtP09mozSQOdz5KZ(M>27-4sPCpKVXox(X+H1wr; z2MoqfaYp2LhBZfyF{>6&wm*{MjxGpCbWr+@@m-yaT{?5h<}-rACD9M!DxNyUW78M+ zjl~v!o-mWUK&)WN=93QRxqVniidhz68YsxgNO8vGx}~nik{L=E)HBaNq{;J2CSjLE zYbQ=v(_UfH(gVJzj?$ComgAkQr=43yRq~uOn#^Dzl)){=+9Z&j$2qFa=k&`=N#|uF zOgXb~if7SNrM;Ob;qaymSC*mvbZ#@TFPF8RdgfJxiwf73Was4d=D&8qo-J;=z4heg zWCpVexF^LbFHfp<+MR+s2IfhQwOqcmi-zW1q|O)-SB4V%Y%tT!$&GMM;StG&>y|$j zU%NvAb8(tK%?>PxO}b`ba*1n=n;Fc(?mv0C`H|u?!<;G?``Po83%|Z; zZhR8ajMS_W>(QEJxni|<&6z$c63Oe8n%b#jN~fMZ2`Qa>^y<>FW5>eHcUAFK zo)Qeqb8(Y2+@x^FhT*O2adTjaXS6OJbEbWv#I_u8)BJ9xzvy1(DI=GQYKV*lkzgno zX5%kl!w8os72pjLadl-*XOHICDB7e4OTc@vjK;|`0^Um_V3x(n=fIxzz5bVqi`KiL z)_&ZRt`_95YO)nM)fqQH3rfi@*_3_o^v=-RCVh6%rm$%}kj=$A#hskP>!Bc|uBCGe z)axcMP!Ms8He*^II7OR^HvOO9H>D0JBQV#qPuL#}2lHL}c}XCGUCnzZ(`9&h{`?3@ z8U$xXULJQh<82wOhnzV%Dejn}P3c^$gIGF*$?dLGT!8xRg7VgiS)BjFTd35∓oh z!MTv16AWWQb=zzmk)loZ!4z=Yq~~&DKJ9swsrQkaTVPHu?|F3EP+Idaax)4_R^6V7 z=iQcW9!pF!71+TUUFlDydW9!mc%=FiJXcpZELy;M5DXV>at23c`3oAbFuQ)}1P^VKg!eXyP{DRIadZF`x| z)+%pflQ--+xfxIR)PTZ;dGCMjOKR=+o>~Ey!~3-7)}HmTln>jUZHUv}Tx2@-L7OJ6 z&$LL%mzS5PZJXkiU5Z_lTfZytOf#+4G&VX@pWZlh+Tyiuv{OZoeb73#^1}wP?>|WL z<*%Jn%UA21J?s0sqgwlO(s?x7)uR=_D^BY-GdCw)KdkVo(>twbllM^bmU-dk4@dfD zjJEqxDZM`Vm@3};od1^jAJWzytnO=AKjoi_u02uR*SPhmYMk zzT-ymBTs?1)(W_X7j5D_7jV7DU7Nsstz4dSd3pfY_Z(YIIB+RjvUXnSy$PbalfdjCpRQDV`=${$@&ZbBea_pic5M;H3a z+4Wrb`>{5@C=+wmPBJ<-BdEJlX#+Zy_TR^IDqm^CIhmUBkE1!6h4b;`4p3P4`&RM6 zi8^gOCt&JzGt@cL-A$hr%*@nJXIVv?a*8%FojQEnxw$&^PCt3h-1v+md6yUsyLcy# zee`3k!m&RF5+;t#rw`0q(Izt4ccosGI@Hj}ee*&Eyea&_nJOO4%8?1Zbo;neca)`Q zQz$SOS1T<1^}K{cZ?7%khGuW|9yNiIYVDVGCYQJvoN`RB$Umj2T>TQ|SfC~9jaB%w zdGbW>4r}h_*||CFFd-gcTto`2Bbs+7Psw(FZuceX<>@VFGb`cPJAX}yJ$0ha+6E1M zm1C(V(kc!-IbX5+ziLp0pMh*v_VB_vCu;i|p30Frf!j;KUr_uWE!tGL?C+_*X}Zao zE(Oh7G?3y9^^}0g@9X#)XJ6db7A5#b z@2pV9*TGkAbRc^sezdb&S)b1rEj~>--OpMoE!jYo;xRafIrTK^MopvF%w@gjr*n+wF-bHrp z!V12cwNL+X-9CiZUSGktrE<(TJEVEcgeNjoriY&GaH$= zJ&vESwp%sd18@=uk+g6c}F$hwz!(59LYP+t>IgiFnWadt5Igqk0-D|L#>1S zZpB{f=SNbW*53ZaKr-~(8pomc#5T8gdzhDeXYYKajxQ~tMd?G2_!&pQKEMMz6O()m z;`&uqOb!nsR&w&t_PKX{HD`?US1 zl(Lc_PlYNi-Iu&of u+&KO0_z@o2-c9SD9@);?58C3X@3-}>@Ku|V%L3tyv!1n+{~Yv5!v6!aY}H@@ delta 13844 zcmZA737k*W|HturXJa-D)7Tk?84P2_zVGYUcanWe#!i;xYphwaePawFTah(iHK>Rf z{F3EgNhPv{q*9hr_`lxYbNv22{`c`Xp67h-x%Zy+e!ny3U0?9=D?y%%d4rZY94`ep zP7zGY=Qy5hQ^0kcll2|vB3^Ic zI8(XqNF&FYj*S~T&IHWHqMWbS#BnO)3r!toMzG^?7B_R8cY_@#y0zn+yj~==R0-CsAU~c4H_K-`FPaWm=xl?Iyg z^|27;HmHWYhLLX3h|EgZ;?*a!y#C7tLH%#}wjSP>Xa9 z2H{3jkG7y1`~l{}Nuk@H)^WVhcf=U(Gmi|xE$4!)z+=32ky7$ zzee5od(@QNMm^vU)D5FvVt%m%sv(V04eW+mBLh)WJ05G}0uPyZGRILZ{1w%J2UrY) zhdEAZEQN}vq8{7>^}v1@ilc4(71Wf>u;*7`IOWY)824a)JcGs2bCZk~NzOFW(h{g1 zCSgOYgBseYs0$ZkDcp=|*ypzV2Uek6U^ojA+gPVzNy~nc@i)>Tj}tM%w6HK1 z{n$mGQOs0&-57F{>g1IJnCVg%(is0M9C-RM)?jbEZhYR(vQp9L66d6g}1L9La& z*2CzDB5=}HxQM#(9n||Ec&vGG6h>W`gt}o3)NW~J%dM@?qo(3TR7X6Rhzsrc{iypM zM@`|yv5dcN_#=UQcn`xc=QvX#A8KR@qZ&{OqcI6{V`EfMWabd)fS0fjro8Mpt#AoycYKd}-~-gugiJ8oDGu9Fu8+~U z2-WkARv&7gA4aXEC)fkSCYlZo^pH^x(@;GhkGjz`OvYt4o{ilopGB>ivXe}`Em)lL z0n~Q9h9+Jww^~d>@upscQ90A`Gkz-EGKy_!u+TT ziKrgd!3Nj_)u36{WvKd_Q16d@SPY$MW~hr}JBlf&`=_I>UySAPEezut=W{Zeg7X-U zkFhA0N;fxZgt3%6V-Su<^=vX~SIj{5>~&1ROjHLxLv`Q+>cQ7gQ+W@y#tKYl{8h06 z8QriRY7sU^-LRvL_eRa#5E~zksy7LB zOvYaiEp2VZxjO9>0se!sdQ`A(oM?IhiCgVtq!?#e2>j(znUDW=6 zfSRJvIp(WeF;qQIGcp>Yv8dJSLA7uVR>jSz23$ln=r*b$f7y7@Yc!5>6eeJ*bqwkO zD^d47hIQ~q)Ck4R^^d&A=|H9yfe}~*x1erx5rZ*g9`9+4KsB@rswe%hCBBU6`6pNr zuc6jd^n89e!Rn}~T8_H^3Dhomf~BVoRY^Qae%7bEZ(>ecxr#^aBuDT{pF z#4DlpcM}Z9PUv3?Ha-z`{T$SYW@1h}je5s8=gH{8poQjvc~BLKqHY|IVOSM&U;_-n z7S?vCMb;Gy;b7D*NJl+z1?u`!mqo^+u=_|~~?&eI#X-oVTHpdz(`SzpwSQFpHmUsri9Qg4l!+a_zxP|ioKndPX(xE4#`r>GIQ zZp-&jQxNl(8Tulqk*b45FctNk!x=(GLp%zDa3Tict5^rqQ9V6?y1}2QDGFh)X$m4y z<@~6rEQZlo5w+NwU_tC`9f5@?zlI(?cmo*?)mGHvIg6UR3s@L$S%cS`ZBzmkZ-E+# zfvBDiM_oS_^Ws#@hf7e;*@SBFc2q~Q)-(QZlQ~L2izID>Y58dnVM+=}tI6KCN$8-Ib`si%FdBTx;Tf<Hn1$5=qz`0fc_4pa>NoNbna#+;&8oFDcT-}$*=;qzt) zC*l(7?Xl%%-V`|P0B%8Tr^8qhFWK_}7tGWZ#6rX?qJ};dHS{lFG421!WOTz!f535e zp&E1=)qsn({38ZYzKcAOJuaIU z+79%8{@*9lniC;c%&WK)YPGMx8h8lH;v>}5l)7rRT_S3G)wAVxsMX#d)u2(R5qt}m z;bznn)VpS;wEZ>4UlqC%&|LOL4gCZxiL+4;+=9Ar7pneYOu+x3M(%ekj{(=si>V?i z-U>CfJ+TOm!Bkv?$@uMck9k1&kEQ{6Q8!9N&0%*NpM(CMpk6qeQ4jbKgYYvfj%QFW zqTf&*3A$lMG9Q+pTnFQ^H>zQ?JY-aHwGC{=zLXE6dK`DtY@4d6hV?)-Y&Mp|_fd2G zgSE&lGw0n=^)js4sI_$;HD%#Hndf?nkWtGMu^6_(1bhj@a4G7-H?2ObO8Eq8ik_mT zuHcsJT9Y zn!|6fF#e5fZ72V)=7#rC`}_&20R?_DBT^o9|3;{x?}EDTVD#_*nPg%Ktj0L}7&R4_ zQA6w8H8&`TYI%9ggH^4~Pz~yadLN9%y7(Gu>atN&bpdnWQ_O`qerNpsZzeJt(qwBL zjG){Cb%QRbo)1G^_&RF!uEwV5LpAg-)KujC!z{kK)--HRd==^ibQROE#y!S=FquvF z`1ubb?wb#pSFkeW^QZ?!JTR*~4pS)i!O^$`%VOX|)AI_}MyLmML-lwY>i&CdIqpw0 zl8JvZ|6!b{LO?@T9~)q2)S_I5Lvbz6!O*|Vi)0C^fjh7!Uco9@(U9|Co_^4%1xfVqW5zkIk!f z8%9#zjUo66YD$lxI{YPeK+h#I4alTCF{^wG=BGRzOW{hafCn)d@8A$D_LTQK&PEOK zLsSEv+HzjU^*6i_DjtV1SPj*IHpqy3_#K|9kcQf39#oGPVPjl@TJ0Aw3h$s6<5TR0 zC0y6v&`GGpx(0jU9@JvZ8{qm!t_13Sbx;kOhPAc-y<{|pr%`hl8tD2*pdMDG+!cdy z0ct3hVm{17^=Lab#3QH%h6K6(5h;Kw$6^_*gu1RL7RHg7o98?8$!N$|p?c~=ZO0?1 zp*n-=$+xJvyM^lMJuHS{{FI`pDvMf6ZLutl!J@bt)zJN@HFOqL|7Y|l6BS}kR716} z16IUAsGcvwKwO0yfwk7RQFFf?)uZ>Z0G>tdrk`y2sVx`CVeV4_^+HO?;d=Zn?o2?R z&l9l`E<>&U^QayK=QKTzLrqmpjK{I48?D3!_%UiEpP+_5Ce-z>`ZB1ItBM-g23Q(f zhk8uQ#}H7@7NQo%GSp(+jJjYiYWo~PHS{dD!e6i!)(UgYkLwsjc^hhq-a|F$7^*{; zFcBld%~aR$kSR`}CF+4gu`^CW-QX0eLDx|G`5|g81V^}RAzoUTfc;V1bRKHz_M%4a zCbqzkNHcQnP*XJ*o1teD8TH_2Ou>X)X3l$Hd&+%K58j39$pP$(=TJSWp4(hM5Y>>i zH~^1fT};el9y}Cv{|#6Tzd}Ze|No0Ja~Fl0+m5J3xB#`f-$M25AgX6~P>ZZ+UNb_~ zP*c+ywHA7ycF`16PhZEzxCOPF?qFqnh!NWViTO+qYoIDLL*1agjrT*X@{!gFsI}rj zjmT`&VqAl9coa1?w@{0&dbDY1BUJtFwmb@3YX8qBqX(Qp?bGw95%?7~0)fw&{aO;W z7@MO$R63y+<8a)C^K86!jJZ!2)HX~*t)+B~#SGLNb}xD~w};4R5uV0!_^Y*0elyff zQFGfHwHRk(ZOp{#_!X+bk^CWuMy>>EgesxtyrwM=Lv>&bYGkGsVE=1Q=h}+j>u#VHvMU6yz)JXQm?l=LL z;u&0m1B$u+pM*U3$s8uopg1jbS!}Vc|GQe160Xyq_!Ml5m#`@&l{6zX4i*0xwa+8s z%%@-~R;9cEb^b7p#;8)}{0tmS`6x0)9;bY1*EvRD5YER6@vgq`I{UB{ZcQ*F^AOd; zCzyyqWz2ga88tG!QHyjes@^J$#dWB)a~R|C9BO1AqyGNL$x+t4vm-H(6M3;K#$YEL zj+)y;s0+_pze7#Ib=1DThuTFE6+9dYB zZm^SpR{5u>FC#x@NgGHXl6n&VgQSCRO#Y({|LQO1w57bH8^m|p zb2BOH-B5?5ouFelsR8w$9rdXDE9r*je=V6F_=&xNDlH;JF(n}XW^I#zH}uhp+fS~xRE&yFx2rcbZS z&jR=h^_vpEMSeYb-X+dYilib#o{AUchXy=y4**H7O@V!8FeftJtZCBS{-$* z|FHi4d(0&NDe0yEM)-l$-f$~1?PXqC&YyS?J0k1Wd6}ex#qUhB`8r(p4Y6~SyOY=N zj`xv&f%LtQchc*>aWd?qr64^|C&rQ8x-9rugBl8GAY>hupqIIDfgtT&w)O;3pnoJ(k3cCAn9m8dYizHcG z)5zy1EhHTzjU=8(`j-4@QW>r-j)C@`Z83n9ht!XHeCzW6+0~z@V-KG{{ttvu0s~2{ zbpa>(>MTc1Vk1byNJmY`sYr$Vl(&&q68i~X$E&F0HBt%PgyRmWr;WG64wOUeIi0`9 z=a2s=#>q9~^kv*UI03vBsae8PzzNYgd{^$FA<)go{j2XKQz07w1G3Djy^85&39R1$*%l@-0Xj zrX3hWYRUBj(ivLy-C$5|Bh=(Z<4=AnnjvSilbh4EXKKh_TFUwZ~p({WDQQ_ zBNk2SMgB0c?IayB_>k0+{5RO#ALYA%J--F#5$nKp=drOpFUFI8CJnW9H;{jYq{DND ze~$aJydbPYa2%EAlm50BHMXrz<=k*$Eo@nr?4^7U%aTSZz)_0xn~BdReMw3u=_rAf zIkz15YyNfIC6)B&_(d`&%946fE@NY&AhC6%w@AggL1|KF(gM!?LrNmA<44jvl6uXE zrP{d8)g&EJh9iXY{_zi@LI(;Z|5Y){f08c^#0Ha3r)n^1A^EPv0&pW`{nzU{tUyX8 z|A6?vkHP;cgpnUgozJNAJ!y%~ssDrQMcovz#|i7DX8|0-#pkfGt$)+{JAOnwmh(D% zHhzJ86se7kf2fn>n{d9Rt>Y;`pektq=SmXXtV$dMiRGdkh3{h#Vy(#Qs7T5nm8HCj zbN3bGs7|>w2<2(Ed-}jf;_cm^e&PXyv zNy~_rz|V0Y<|Yjw|DqE4J6MGDkbE{Nj(iAK<5{`M&m*1G{?A8X3McB}WIRc_P14bj z*a$pIX#i8ruu|NOs5ptC(G zdU3KAv5go>`4>_vQX|qA#A2{L=j&r8<;Nr)#fbg;c#Zg{1PYTrBaNY4-qs1Ce36vL zwSn>WCf>UZ%lY=#K3m+^p?CS*-rd7%`5p{Ua=qn7uJMf=HOcjs99zx1WNg0O;}YDk zK_kWu9nf#w(2*m&;V;K|ACAB4t2bdsfH!pVbG|l{cLaH7dfI0E5#h%8?s%eIZ_f1Z ze0`@^5AfZXStZcd@wGmIF@r`78q+V$X>N?|G-%wop(BR)ybID?Z}{pkZ^4B%yki!Y z@ntUzaeX%zrMSMqOTG&5roK_bJNJ!C-cifm_H9}Ind^OkMxO(O$+<+m(%eSzC%g!z_yP}%j}&kA>ak^7n__i$aV`J= diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 3bdd4f8..e3bd899 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-12 10:44-0300\n" +"POT-Creation-Date: 2026-03-12 11:09-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -58,6 +58,8 @@ msgid "" "Are you sure you want to regenerate the token? The old token will stop " "working immediately." msgstr "" +"Êtes-vous sûr de vouloir régénérer le jeton ? L'ancien jeton cessera de " +"fonctionner immédiatement." #: api_v2/forms.py:63 cluster/forms.py:67 cluster/forms.py:124 dns/forms.py:37 #: dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:40 @@ -193,32 +195,34 @@ msgstr "Documentation de l'API" #: app_gateway/models.py:12 msgid "Upstream address, e.g.: http://10.188.18.27:3000" -msgstr "" +msgstr "Adresse en amont, ex : http://10.188.18.27:3000" #: app_gateway/models.py:42 msgid "Bypass (public)" -msgstr "" +msgstr "Bypass (public)" #: app_gateway/models.py:43 msgid "One Factor" -msgstr "" +msgstr "Un facteur" #: app_gateway/models.py:44 msgid "Two Factor" -msgstr "" +msgstr "Deux facteurs" -#: app_gateway/models.py:45 gatekeeper/models.py:114 +#: app_gateway/models.py:45 gatekeeper/models.py:111 #: templates/gatekeeper/gatekeeper_list.html:272 msgid "Deny" -msgstr "" +msgstr "Refuser" #: app_gateway/models.py:84 msgid "Route identifier, used in export (e.g.: public_area)" msgstr "" +"Identifiant de l'itinéraire, utilisé dans l'exportation (ex : public_area)" #: app_gateway/models.py:87 msgid "Evaluation order — lower value means higher priority" msgstr "" +"Ordre d'évaluation — une valeur plus faible signifie une priorité plus élevée" #: cluster/forms.py:20 msgid "IP Lock" @@ -866,7 +870,7 @@ msgstr "Mot de passe" #: gatekeeper/forms.py:19 msgid "TOTP Secret" -msgstr "" +msgstr "Secret TOTP" #: gatekeeper/forms.py:41 gatekeeper/forms.py:75 gatekeeper/forms.py:137 #: gatekeeper/forms.py:224 gatekeeper/forms.py:254 gatekeeper/forms.py:285 @@ -876,108 +880,108 @@ msgid "Cancel" msgstr "Annuler" #: gatekeeper/forms.py:54 templates/gatekeeper/gatekeeper_list.html:104 -#, fuzzy -#| msgid "Profile Name" msgid "Group Name" -msgstr "Nom du Profil" +msgstr "Nom du groupe" #: gatekeeper/forms.py:55 templates/gatekeeper/gatekeeper_list.html:105 msgid "Members" -msgstr "" +msgstr "Membres" #: gatekeeper/forms.py:85 msgid "TOTP Validation PIN" -msgstr "" +msgstr "Code de validation TOTP" #: gatekeeper/forms.py:88 msgid "" "Enter a 6-digit PIN generated by your authenticator app to validate the " "secret." msgstr "" +"Saisissez un code à 6 chiffres généré par votre application " +"d'authentification pour valider le secret." #: gatekeeper/forms.py:99 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Type" -msgstr "Authentification" +msgstr "Type d'authentification" #: gatekeeper/forms.py:100 msgid "Global TOTP Secret" -msgstr "" +msgstr "Secret TOTP mondial" #: gatekeeper/forms.py:101 msgid "OIDC Provider URL" -msgstr "" +msgstr "URL du fournisseur OIDC" #: gatekeeper/forms.py:102 msgid "OIDC Client ID" -msgstr "" +msgstr "ID client OIDC" #: gatekeeper/forms.py:103 msgid "OIDC Client Secret" -msgstr "" +msgstr "Secret client OIDC" #: gatekeeper/forms.py:154 msgid "TOTP secret must be empty for Local Password authentication." msgstr "" +"Le secret TOTP doit être vide pour l'authentification par mot de passe local." #: gatekeeper/forms.py:156 msgid "TOTP validation PIN must be empty for Local Password authentication." msgstr "" +"Le code de validation TOTP doit être vide pour l'authentification par mot de " +"passe local." #: gatekeeper/forms.py:158 msgid "OIDC fields must be empty for Local Password authentication." msgstr "" +"Les champs OIDC doivent être vides pour l'authentification par mot de passe " +"local." #: gatekeeper/forms.py:164 msgid "Only one Local Password authentication method can be configured." msgstr "" +"Un seul système d'authentification par mot de passe local peut être " +"configuré." #: gatekeeper/forms.py:167 msgid "OIDC fields must be empty for TOTP authentication." -msgstr "" +msgstr "Les champs OIDC doivent être vides pour l'authentification TOTP." #: gatekeeper/forms.py:169 msgid "TOTP secret is required for TOTP authentication." -msgstr "" +msgstr "Le secret TOTP est requis pour l'authentification TOTP." #: gatekeeper/forms.py:173 -#, fuzzy -#| msgid "Please provide a valid IP address." msgid "Please provide a PIN to validate the TOTP secret." -msgstr "Veuillez fournir une adresse IP valide." +msgstr "Veuillez fournir un code pour valider le secret TOTP." #: gatekeeper/forms.py:178 msgid "Invalid TOTP PIN." -msgstr "" +msgstr "Code TOTP invalide." #: gatekeeper/forms.py:180 msgid "Invalid TOTP secret format. Must be a valid Base32 string." -msgstr "" +msgstr "Format du secret TOTP invalide. Doit être une chaîne Base32 valide." #: gatekeeper/forms.py:183 msgid "TOTP secret must be empty for OIDC authentication." -msgstr "" +msgstr "Le secret TOTP doit être vide pour l'authentification OIDC." #: gatekeeper/forms.py:185 msgid "TOTP validation PIN must be empty for OIDC authentication." msgstr "" +"Le code de validation TOTP doit être vide pour l'authentification OIDC." #: gatekeeper/forms.py:194 gatekeeper/forms.py:236 gatekeeper/forms.py:267 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Method" -msgstr "Authentification" +msgstr "Méthode d'authentification" #: gatekeeper/forms.py:195 -#, fuzzy -#| msgid "IP Address" msgid "IP/Network Address" -msgstr "Adresse IP" +msgstr "Adresse IP/Réseau" #: gatekeeper/forms.py:196 templates/gatekeeper/gatekeeper_list.html:257 msgid "Prefix Length" -msgstr "" +msgstr "Longueur du préfixe" #: gatekeeper/forms.py:197 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 @@ -987,131 +991,108 @@ msgstr "Action" #: gatekeeper/forms.py:237 templates/gatekeeper/gatekeeper_list.html:221 msgid "Domain" -msgstr "" +msgstr "Domaine" #: gatekeeper/models.py:10 -#, fuzzy -#| msgid "Default Password" msgid "Local Password" -msgstr "Mot de passe par défaut" +msgstr "Mot de passe local" #: gatekeeper/models.py:11 msgid "One-Time Password (TOTP)" -msgstr "" +msgstr "Mot de passe à usage unique (TOTP)" #: gatekeeper/models.py:12 msgid "OpenID Connect (OIDC)" -msgstr "" +msgstr "OpenID Connect (OIDC)" #: gatekeeper/models.py:13 -#, fuzzy -#| msgid "IP Address" msgid "IP Address List" -msgstr "Adresse IP" +msgstr "Liste d'adresses IP" -#: gatekeeper/models.py:71 +#: gatekeeper/models.py:17 +msgid "Shared/global TOTP secret key" +msgstr "Clé secrète TOTP partagée/globale" + +#: gatekeeper/models.py:68 msgid "Password for local authentication (leave blank if not using)" msgstr "" +"Mot de passe pour l'authentification locale (laissez vide si vous ne " +"l'utilisez pas)" -#: gatekeeper/models.py:72 +#: gatekeeper/models.py:69 msgid "Per-user TOTP secret key" -msgstr "" +msgstr "Clé secrète TOTP par utilisateur" -#: gatekeeper/models.py:112 +#: gatekeeper/models.py:109 msgid "CIDR prefix length (e.g.: 24 for /24). Leave blank for a single host." msgstr "" +"Longueur du préfixe CIDR (ex : 24 pour /24). Laissez vide pour un seul hôte." -#: gatekeeper/models.py:114 templates/gatekeeper/gatekeeper_list.html:270 -#, fuzzy -#| msgid "Allowed IPs" +#: gatekeeper/models.py:111 templates/gatekeeper/gatekeeper_list.html:270 msgid "Allow" -msgstr "IPs autorisées" +msgstr "Autoriser" #: gatekeeper/views.py:55 -#, fuzzy -#| msgid "Edit User" msgid "Edit Gatekeeper User" -msgstr "Modifier l’utilisateur" +msgstr "Modifier l'utilisateur Gatekeeper" #: gatekeeper/views.py:58 -#, fuzzy -#| msgid "Create Peer" msgid "Create Gatekeeper User" -msgstr "Créer un peer" +msgstr "Créer un utilisateur Gatekeeper" #: gatekeeper/views.py:66 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Gatekeeper User saved successfully." -msgstr "Clé d'API enregistrée avec succès." +msgstr "Utilisateur Gatekeeper enregistré avec succès." #: gatekeeper/views.py:91 -#, fuzzy -#| msgid "Peer deleted|Peer deleted successfully." msgid "Gatekeeper User deleted successfully." -msgstr "Peer supprimé | Peer supprimé avec succès." +msgstr "Utilisateur Gatekeeper supprimé avec succès." #: gatekeeper/views.py:96 -#, fuzzy -#| msgid "Delete Peer" msgid "Delete Gatekeeper User" -msgstr "Supprimer le peer" +msgstr "Supprimer l'utilisateur Gatekeeper" #: gatekeeper/views.py:98 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the user \"%(username)s\"?" -msgstr "Êtes-vous sûr de vouloir supprimer la clé d'API \"%(name)s\" ?" +msgstr "Êtes-vous sûr de vouloir supprimer l'utilisateur \"%(username)s\" ?" #: gatekeeper/views.py:112 -#, fuzzy -#| msgid "Edit Peer Group: " msgid "Edit Gatekeeper Group" -msgstr "Modifier le groupe de peers: " +msgstr "Modifier le groupe Gatekeeper" #: gatekeeper/views.py:115 msgid "Create Gatekeeper Group" -msgstr "" +msgstr "Créer un groupe Gatekeeper" #: gatekeeper/views.py:123 -#, fuzzy -#| msgid "Peer reactivated successfully." msgid "Gatekeeper Group saved successfully." -msgstr "Peer réactivé avec succès." +msgstr "Groupe Gatekeeper enregistré avec succès." #: gatekeeper/views.py:148 -#, fuzzy -#| msgid "Schedule Slot deleted successfully." msgid "Gatekeeper Group deleted successfully." -msgstr "Créneau de planification supprimé avec succès." +msgstr "Groupe Gatekeeper supprimé avec succès." #: gatekeeper/views.py:153 msgid "Delete Gatekeeper Group" -msgstr "" +msgstr "Supprimer le groupe Gatekeeper" #: gatekeeper/views.py:155 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the group \"%(name)s\"?" -msgstr "Êtes-vous sûr de vouloir supprimer le profil \"%(name)s\" ?" +msgstr "Êtes-vous sûr de vouloir supprimer le groupe \"%(name)s\" ?" #: gatekeeper/views.py:169 -#, fuzzy -#| msgid "Authentication" msgid "Edit Authentication Method" -msgstr "Authentification" +msgstr "Modifier la méthode d'authentification" #: gatekeeper/views.py:172 -#, fuzzy -#| msgid "Authentication" msgid "Create Authentication Method" -msgstr "Authentification" +msgstr "Créer une méthode d'authentification" #: gatekeeper/views.py:180 -#, fuzzy -#| msgid "Static DNS saved successfully" msgid "Authentication Method saved successfully." -msgstr "DNS statique enregistré avec succès" +msgstr "Méthode d'authentification enregistrée avec succès." #: gatekeeper/views.py:187 msgid "" @@ -1131,96 +1112,94 @@ msgid "" " \n" " " msgstr "" +"\n" +"
Types d'authentification
\n" +"

Sélectionnez la façon dont les utilisateurs s'authentifieront via " +"cette méthode.

\n" +"
    \n" +"
  • Mot de passe local : les utilisateurs " +"s'authentifieront à l'aide d'un nom d'utilisateur et d'un mot de passe " +"standard stockés localement. Un seul de ce type peut être créé.
  • \n" +"
  • TOTP (Time-Based One-Time Password) : les " +"utilisateurs devront saisir un jeton rotatif à partir d'une application " +"d'authentification. Nécessite la configuration d'un secret TOTP global.\n" +"
  • OIDC (OpenID Connect) : les utilisateurs " +"s'authentifieront via un fournisseur d'identité externe (comme Keycloak, " +"Google ou Authelia). Nécessite l'URL du fournisseur, l'ID client et le " +"secret client.
  • \n" +"
\n" +" " #: gatekeeper/views.py:219 -#, fuzzy -#| msgid "Static DNS deleted successfully" msgid "Authentication Method deleted successfully." -msgstr "Entrée DNS statique supprimée avec succès" +msgstr "Méthode d'authentification supprimée avec succès." #: gatekeeper/views.py:224 -#, fuzzy -#| msgid "Authentication" msgid "Delete Authentication Method" -msgstr "Authentification" +msgstr "Supprimer la méthode d'authentification" #: gatekeeper/views.py:226 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the authentication method \"%(name)s\"?" -msgstr "Êtes-vous sûr de vouloir supprimer la clé d'API \"%(name)s\" ?" +msgstr "" +"Êtes-vous sûr de vouloir supprimer la méthode d'authentification " +"\"%(name)s\" ?" #: gatekeeper/views.py:276 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Edit Allowed Domain" -msgstr "Saisir l’IP autorisée" +msgstr "Modifier le domaine autorisé" #: gatekeeper/views.py:279 templates/gatekeeper/gatekeeper_list.html:186 msgid "Add Allowed Domain" -msgstr "" +msgstr "Ajouter un domaine autorisé" #: gatekeeper/views.py:287 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Allowed Domain saved successfully." -msgstr "Clé d'API enregistrée avec succès." +msgstr "Domaine autorisé enregistré avec succès." #: gatekeeper/views.py:312 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "Allowed Domain deleted successfully." -msgstr "Clé d'API supprimée avec succès." +msgstr "Domaine autorisé supprimé avec succès." #: gatekeeper/views.py:317 msgid "Delete Allowed Domain" -msgstr "" +msgstr "Supprimer le domaine autorisé" #: gatekeeper/views.py:319 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?" -msgstr "Êtes-vous sûr de vouloir supprimer le profil \"%(name)s\" ?" +msgstr "" +"Êtes-vous sûr de vouloir supprimer le domaine autorisé \"%(domain)s\" ?" #: gatekeeper/views.py:333 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Edit Allowed Email" -msgstr "Saisir l’IP autorisée" +msgstr "Modifier l'e-mail autorisé" #: gatekeeper/views.py:336 templates/gatekeeper/gatekeeper_list.html:183 msgid "Add Allowed Email" -msgstr "" +msgstr "Ajouter un e-mail autorisé" #: gatekeeper/views.py:344 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Allowed Email saved successfully." -msgstr "Clé d'API enregistrée avec succès." +msgstr "E-mail autorisé enregistré avec succès." #: gatekeeper/views.py:369 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "Allowed Email deleted successfully." -msgstr "Clé d'API supprimée avec succès." +msgstr "E-mail autorisé supprimé avec succès." #: gatekeeper/views.py:374 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Delete Allowed Email" -msgstr "Saisir l’IP autorisée" +msgstr "Supprimer l'e-mail autorisé" #: gatekeeper/views.py:376 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the allowed email \"%(email)s\"?" -msgstr "Êtes-vous sûr de vouloir supprimer le profil \"%(name)s\" ?" +msgstr "Êtes-vous sûr de vouloir supprimer l'e-mail autorisé \"%(email)s\" ?" #: gatekeeper/views.py:390 -#, fuzzy -#| msgid "Add IP Address" msgid "Edit IP Address" -msgstr "Ajouter une adresse IP" +msgstr "Modifier l'adresse IP" #: gatekeeper/views.py:393 templates/gatekeeper/gatekeeper_list.html:247 #: templates/wireguard/wireguard_manage_peer.html:171 @@ -1228,28 +1207,21 @@ msgid "Add IP Address" msgstr "Ajouter une adresse IP" #: gatekeeper/views.py:401 -#, fuzzy -#| msgid "API Key saved successfully." msgid "IP Address saved successfully." -msgstr "Clé d'API enregistrée avec succès." +msgstr "Adresse IP enregistrée avec succès." #: gatekeeper/views.py:426 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "IP Address deleted successfully." -msgstr "Clé d'API supprimée avec succès." +msgstr "Adresse IP supprimée avec succès." #: gatekeeper/views.py:431 -#, fuzzy -#| msgid "IP Address" msgid "Delete IP Address" -msgstr "Adresse IP" +msgstr "Supprimer l'adresse IP" #: gatekeeper/views.py:433 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the IP address \"%(address)s\"?" -msgstr "Êtes-vous sûr de vouloir supprimer la clé d'API \"%(name)s\" ?" +msgstr "Êtes-vous sûr de vouloir supprimer l'adresse IP \"%(address)s\" ?" #: intl_tools/forms.py:11 templates/accounts/login.html:36 msgid "Language" @@ -2196,25 +2168,29 @@ msgstr "" msgid "Create Port forwarding Rule" msgstr "Créer une règle de redirection de port" +#: templates/gatekeeper/gatekeeper_auth_method_form.html:63 +msgid "View QR Code" +msgstr "Voir le code QR" + +#: templates/gatekeeper/gatekeeper_auth_method_form.html:74 +msgid "Please enter a TOTP Secret first to generate the QR code." +msgstr "Veuillez d'abord saisir un secret TOTP pour générer le code QR." + #: templates/gatekeeper/gatekeeper_list.html:12 msgid "Gatekeeper Users" -msgstr "" +msgstr "Utilisateurs de Gatekeeper" #: templates/gatekeeper/gatekeeper_list.html:18 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Methods" -msgstr "Authentification" +msgstr "Méthodes d'authentification" #: templates/gatekeeper/gatekeeper_list.html:24 msgid "Allowed Emails & Domains" -msgstr "" +msgstr "E-mails et domaines autorisés" #: templates/gatekeeper/gatekeeper_list.html:30 -#, fuzzy -#| msgid "IP Address" msgid "IP Addresses" -msgstr "Adresse IP" +msgstr "Adresses IP" #: templates/gatekeeper/gatekeeper_list.html:40 #: templates/user_manager/peer_group_list.html:11 @@ -2222,10 +2198,8 @@ msgid "Users" msgstr "Utilisateurs" #: templates/gatekeeper/gatekeeper_list.html:43 -#, fuzzy -#| msgid "Peer Groups" msgid "Groups" -msgstr "Groupes de peers" +msgstr "Groupes" #: templates/gatekeeper/gatekeeper_list.html:51 #: templates/user_manager/list_buttons.html:2 user_manager/views.py:111 @@ -2243,55 +2217,45 @@ msgid "Actions" msgstr "Actions" #: templates/gatekeeper/gatekeeper_list.html:88 -#, fuzzy -#| msgid "No time intervals found." msgid "No Gatekeeper Users found." -msgstr "Aucun intervalle de temps trouvé." +msgstr "Aucun utilisateur Gatekeeper trouvé." #: templates/gatekeeper/gatekeeper_list.html:95 -#, fuzzy -#| msgid "Add Peer Group" msgid "Add Group" -msgstr "Ajouter un groupe de peers" +msgstr "Ajouter un groupe" #: templates/gatekeeper/gatekeeper_list.html:131 msgid "No Gatekeeper Groups found." -msgstr "" +msgstr "Aucun groupe Gatekeeper trouvé." #: templates/gatekeeper/gatekeeper_list.html:140 msgid "Add Auth Method" -msgstr "" +msgstr "Ajouter une méthode d'authentification" #: templates/gatekeeper/gatekeeper_list.html:176 -#, fuzzy -#| msgid "Authentication" msgid "No Authentication Methods found." -msgstr "Authentification" +msgstr "Aucune méthode d'authentification trouvée." #: templates/gatekeeper/gatekeeper_list.html:196 msgid "Identity" -msgstr "" +msgstr "Identité" #: templates/gatekeeper/gatekeeper_list.html:197 #: templates/gatekeeper/gatekeeper_list.html:259 msgid "Auth Method" -msgstr "" +msgstr "Méthode d'authentification" #: templates/gatekeeper/gatekeeper_list.html:241 msgid "No Allowed Emails or Domains found." -msgstr "" +msgstr "Aucun e-mail ou domaine autorisé trouvé." #: templates/gatekeeper/gatekeeper_list.html:260 -#, fuzzy -#| msgid "User Manager" msgid "Manage" -msgstr "Gestion des utilisateurs" +msgstr "Gérer" #: templates/gatekeeper/gatekeeper_list.html:293 -#, fuzzy -#| msgid "IP Address" msgid "No IP Addresses found." -msgstr "Adresse IP" +msgstr "Aucune adresse IP trouvée." #: templates/generic_delete_confirmation.html:16 msgid "Confirm Delete" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index a5cc49e49eba9ccd7aec40475a77b4ec71f6d1f5..2c0d621fdcb55b3c55a2d9e939ffbc98fccdc71c 100644 GIT binary patch delta 22497 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 acVwL5Tj;Af1>YZX)IE1R)5(`s@&5pCj;gf) delta 13848 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 z z*c!}5`8U!lq=uw3#0uf7oUf0IC_f|Vh#~gRV;b>81d5VQkcLt&XX^w}zD&yN*uZdm z6Yt#yWqf;TpN{plexqC-@Ad(;e2)esIo>jZmiYz^9_@IG4XfszGc5o1^pZ}FUIWwn z_2`z~Z_q$*&Jo4EkB8s&)f>4rz?*$cL0^k8TZ6olJuQ9TddfK7(2NVdt`n;V_!g}tX1P4vxLye-h%e%VNG=<;^H z*~=>i_`Y1ZG|;zv?Vvzkxs3}PU*MKWIec?=COf`|SvehFuHEmI@_ll>T)4OHqgKA9 zk0vs@@gPqI^-$7dxMfak@KM4FjC9ftkY-oqU;hf}N18#1Lmg zaOS`;r(4!HVNN3_D?YcA&B;2L$GH)Z6_npO5SSGd;Y0^T`a9Za(7@jP`V1f1?a=x| zs|Uq3Q824el(X8&JQeM%%Um4e)Yuv8G)P@z|8r*=T*;Bro4=96+xk<7B?orPIpNlvAp%-1VBe`YRDc7|s) zsp1?6$cm}%ln=^!ueS3zFl%FdCnzARY$K<9SXQrA&Ppe%dTS@c$vWD`DIfel;yQT> diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index fbfb500..a8eab6b 100644 --- a/locale/pt_BR/LC_MESSAGES/django.po +++ b/locale/pt_BR/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-12 10:44-0300\n" +"POT-Creation-Date: 2026-03-12 11:09-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -58,6 +58,8 @@ msgid "" "Are you sure you want to regenerate the token? The old token will stop " "working immediately." msgstr "" +"Tem certeza de que deseja regenerar o token? O token antigo parará de " +"funcionar imediatamente." #: api_v2/forms.py:63 cluster/forms.py:67 cluster/forms.py:124 dns/forms.py:37 #: dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:40 @@ -193,32 +195,32 @@ msgstr "Documentação da API" #: app_gateway/models.py:12 msgid "Upstream address, e.g.: http://10.188.18.27:3000" -msgstr "" +msgstr "Endereço upstream, ex: http://10.188.18.27:3000" #: app_gateway/models.py:42 msgid "Bypass (public)" -msgstr "" +msgstr "Bypass (público)" #: app_gateway/models.py:43 msgid "One Factor" -msgstr "" +msgstr "Um Fator" #: app_gateway/models.py:44 msgid "Two Factor" -msgstr "" +msgstr "Dois Fatores" -#: app_gateway/models.py:45 gatekeeper/models.py:114 +#: app_gateway/models.py:45 gatekeeper/models.py:111 #: templates/gatekeeper/gatekeeper_list.html:272 msgid "Deny" -msgstr "" +msgstr "Negar" #: app_gateway/models.py:84 msgid "Route identifier, used in export (e.g.: public_area)" -msgstr "" +msgstr "Identificador da rota, usado na exportação (ex: public_area)" #: app_gateway/models.py:87 msgid "Evaluation order — lower value means higher priority" -msgstr "" +msgstr "Ordem de avaliação — valor menor significa prioridade maior" #: cluster/forms.py:20 msgid "IP Lock" @@ -866,7 +868,7 @@ msgstr "Senha" #: gatekeeper/forms.py:19 msgid "TOTP Secret" -msgstr "" +msgstr "Segredo TOTP" #: gatekeeper/forms.py:41 gatekeeper/forms.py:75 gatekeeper/forms.py:137 #: gatekeeper/forms.py:224 gatekeeper/forms.py:254 gatekeeper/forms.py:285 @@ -876,108 +878,101 @@ msgid "Cancel" msgstr "Cancelar" #: gatekeeper/forms.py:54 templates/gatekeeper/gatekeeper_list.html:104 -#, fuzzy -#| msgid "Profile Name" msgid "Group Name" -msgstr "Nome do Perfil" +msgstr "Nome do Grupo" #: gatekeeper/forms.py:55 templates/gatekeeper/gatekeeper_list.html:105 msgid "Members" -msgstr "" +msgstr "Membros" #: gatekeeper/forms.py:85 msgid "TOTP Validation PIN" -msgstr "" +msgstr "PIN de Validação TOTP" #: gatekeeper/forms.py:88 msgid "" "Enter a 6-digit PIN generated by your authenticator app to validate the " "secret." msgstr "" +"Insira um PIN de 6 dígitos gerado pelo seu aplicativo autenticador para " +"validar o segredo." #: gatekeeper/forms.py:99 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Type" -msgstr "Autenticação" +msgstr "Tipo de Autenticação" #: gatekeeper/forms.py:100 msgid "Global TOTP Secret" -msgstr "" +msgstr "Segredo TOTP Global" #: gatekeeper/forms.py:101 msgid "OIDC Provider URL" -msgstr "" +msgstr "URL do Provedor OIDC" #: gatekeeper/forms.py:102 msgid "OIDC Client ID" -msgstr "" +msgstr "ID do Cliente OIDC" #: gatekeeper/forms.py:103 msgid "OIDC Client Secret" -msgstr "" +msgstr "Segredo do Cliente OIDC" #: gatekeeper/forms.py:154 msgid "TOTP secret must be empty for Local Password authentication." -msgstr "" +msgstr "O segredo TOTP deve estar vazio para autenticação por Senha Local." #: gatekeeper/forms.py:156 msgid "TOTP validation PIN must be empty for Local Password authentication." msgstr "" +"O PIN de validação TOTP deve estar vazio para autenticação por Senha Local." #: gatekeeper/forms.py:158 msgid "OIDC fields must be empty for Local Password authentication." -msgstr "" +msgstr "Os campos OIDC devem estar vazios para autenticação por Senha Local." #: gatekeeper/forms.py:164 msgid "Only one Local Password authentication method can be configured." -msgstr "" +msgstr "Apenas um método de autenticação por Senha Local pode ser configurado." #: gatekeeper/forms.py:167 msgid "OIDC fields must be empty for TOTP authentication." -msgstr "" +msgstr "Os campos OIDC devem estar vazios para autenticação por TOTP." #: gatekeeper/forms.py:169 msgid "TOTP secret is required for TOTP authentication." -msgstr "" +msgstr "O segredo TOTP é obrigatório para autenticação por TOTP." #: gatekeeper/forms.py:173 -#, fuzzy -#| msgid "Please provide a valid IP address." msgid "Please provide a PIN to validate the TOTP secret." -msgstr "Por favor, forneça um endereço IP válido." +msgstr "Por favor, forneça um PIN para validar o segredo TOTP." #: gatekeeper/forms.py:178 msgid "Invalid TOTP PIN." -msgstr "" +msgstr "PIN TOTP inválido." #: gatekeeper/forms.py:180 msgid "Invalid TOTP secret format. Must be a valid Base32 string." -msgstr "" +msgstr "Formato de segredo TOTP inválido. Deve ser uma string Base32 válida." #: gatekeeper/forms.py:183 msgid "TOTP secret must be empty for OIDC authentication." -msgstr "" +msgstr "O segredo TOTP deve estar vazio para autenticação por OIDC." #: gatekeeper/forms.py:185 msgid "TOTP validation PIN must be empty for OIDC authentication." -msgstr "" +msgstr "O PIN de validação TOTP deve estar vazio para autenticação por OIDC." #: gatekeeper/forms.py:194 gatekeeper/forms.py:236 gatekeeper/forms.py:267 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Method" -msgstr "Autenticação" +msgstr "Método de Autenticação" #: gatekeeper/forms.py:195 -#, fuzzy -#| msgid "IP Address" msgid "IP/Network Address" -msgstr "Endereço IP" +msgstr "Endereço IP/Rede" #: gatekeeper/forms.py:196 templates/gatekeeper/gatekeeper_list.html:257 msgid "Prefix Length" -msgstr "" +msgstr "Comprimento do Prefixo" #: gatekeeper/forms.py:197 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 @@ -987,131 +982,107 @@ msgstr "Ação" #: gatekeeper/forms.py:237 templates/gatekeeper/gatekeeper_list.html:221 msgid "Domain" -msgstr "" +msgstr "Domínio" #: gatekeeper/models.py:10 -#, fuzzy -#| msgid "Default Password" msgid "Local Password" -msgstr "Senha Padrão" +msgstr "Senha Local" #: gatekeeper/models.py:11 msgid "One-Time Password (TOTP)" -msgstr "" +msgstr "Senha de Uso Único (TOTP)" #: gatekeeper/models.py:12 msgid "OpenID Connect (OIDC)" -msgstr "" +msgstr "OpenID Connect (OIDC)" #: gatekeeper/models.py:13 -#, fuzzy -#| msgid "IP Address" msgid "IP Address List" -msgstr "Endereço IP" +msgstr "Lista de Endereços IP" -#: gatekeeper/models.py:71 +#: gatekeeper/models.py:17 +msgid "Shared/global TOTP secret key" +msgstr "Chave secreta TOTP compartilhada/global" + +#: gatekeeper/models.py:68 msgid "Password for local authentication (leave blank if not using)" -msgstr "" +msgstr "Senha para autenticação local (deixe em branco se não estiver usando)" -#: gatekeeper/models.py:72 +#: gatekeeper/models.py:69 msgid "Per-user TOTP secret key" -msgstr "" +msgstr "Chave secreta TOTP por usuário" -#: gatekeeper/models.py:112 +#: gatekeeper/models.py:109 msgid "CIDR prefix length (e.g.: 24 for /24). Leave blank for a single host." msgstr "" +"Comprimento do prefixo CIDR (ex: 24 para /24). Deixe em branco para um único " +"host." -#: gatekeeper/models.py:114 templates/gatekeeper/gatekeeper_list.html:270 -#, fuzzy -#| msgid "Allowed IPs" +#: gatekeeper/models.py:111 templates/gatekeeper/gatekeeper_list.html:270 msgid "Allow" -msgstr "IPs Permitidos" +msgstr "Permitir" #: gatekeeper/views.py:55 -#, fuzzy -#| msgid "Edit User" msgid "Edit Gatekeeper User" -msgstr "Editar Usuário" +msgstr "Editar Usuário Gatekeeper" #: gatekeeper/views.py:58 -#, fuzzy -#| msgid "Create Peer" msgid "Create Gatekeeper User" -msgstr "Criar Peer" +msgstr "Criar Usuário Gatekeeper" #: gatekeeper/views.py:66 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Gatekeeper User saved successfully." -msgstr "Chave de API salva com sucesso." +msgstr "Usuário Gatekeeper salvo com sucesso." #: gatekeeper/views.py:91 -#, fuzzy -#| msgid "Peer deleted|Peer deleted successfully." msgid "Gatekeeper User deleted successfully." -msgstr "Peer excluído|Peer excluído com sucesso." +msgstr "Usuário Gatekeeper excluído com sucesso." #: gatekeeper/views.py:96 -#, fuzzy -#| msgid "Delete Peer" msgid "Delete Gatekeeper User" -msgstr "Excluir Peer" +msgstr "Excluir Usuário Gatekeeper" #: gatekeeper/views.py:98 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the user \"%(username)s\"?" -msgstr "Tem certeza de que deseja excluir a Chave de API \"%(name)s\"?" +msgstr "Tem certeza de que deseja excluir o usuário \"%(username)s\"?" #: gatekeeper/views.py:112 -#, fuzzy -#| msgid "Edit Peer Group: " msgid "Edit Gatekeeper Group" -msgstr "Editar Grupo de Peers: " +msgstr "Editar Grupo Gatekeeper" #: gatekeeper/views.py:115 msgid "Create Gatekeeper Group" -msgstr "" +msgstr "Criar Grupo Gatekeeper" #: gatekeeper/views.py:123 -#, fuzzy -#| msgid "Peer reactivated successfully." msgid "Gatekeeper Group saved successfully." -msgstr "Peer reativado com sucesso." +msgstr "Grupo Gatekeeper salvo com sucesso." #: gatekeeper/views.py:148 -#, fuzzy -#| msgid "Schedule Slot deleted successfully." msgid "Gatekeeper Group deleted successfully." -msgstr "Slot de agendamento excluído com sucesso." +msgstr "Grupo Gatekeeper excluído com sucesso." #: gatekeeper/views.py:153 msgid "Delete Gatekeeper Group" -msgstr "" +msgstr "Excluir Grupo Gatekeeper" #: gatekeeper/views.py:155 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the group \"%(name)s\"?" -msgstr "Tem certeza de que deseja excluir o perfil \"%(name)s\"?" +msgstr "Tem certeza de que deseja excluir o grupo \"%(name)s\"?" #: gatekeeper/views.py:169 -#, fuzzy -#| msgid "Authentication" msgid "Edit Authentication Method" -msgstr "Autenticação" +msgstr "Editar Método de Autenticação" #: gatekeeper/views.py:172 -#, fuzzy -#| msgid "Authentication" msgid "Create Authentication Method" -msgstr "Autenticação" +msgstr "Criar Método de Autenticação" #: gatekeeper/views.py:180 -#, fuzzy -#| msgid "Static DNS saved successfully" msgid "Authentication Method saved successfully." -msgstr "DNS Estático salvo com sucesso" +msgstr "Método de Autenticação salvo com sucesso." #: gatekeeper/views.py:187 msgid "" @@ -1131,96 +1102,91 @@ msgid "" " \n" " " msgstr "" +"\n" +"
Tipos de Autenticação
\n" +"

Selecione como os usuários irão se autenticar através deste " +"método.

\n" +"
    \n" +"
  • Senha Local: Os usuários se autenticarão " +"usando um nome de usuário e senha padrão armazenados localmente. Apenas um " +"deste tipo pode ser criado.
  • \n" +"
  • TOTP (Senha de Uso Único Baseada em Tempo): " +"Os usuários precisarão inserir um token rotativo de um aplicativo " +"autenticador. Requer a definição de um Segredo TOTP Global.
  • \n" +"
  • OIDC (OpenID Connect): Os usuários se " +"autenticarão por meio de um provedor de identidade externo (como Keycloak, " +"Google ou Authelia). Requer URL do Provedor, ID do Cliente e Segredo do " +"Cliente.
  • \n" +"
\n" +" " #: gatekeeper/views.py:219 -#, fuzzy -#| msgid "Static DNS deleted successfully" msgid "Authentication Method deleted successfully." -msgstr "DNS Estático excluído com sucesso" +msgstr "Método de Autenticação excluído com sucesso." #: gatekeeper/views.py:224 -#, fuzzy -#| msgid "Authentication" msgid "Delete Authentication Method" -msgstr "Autenticação" +msgstr "Excluir Método de Autenticação" #: gatekeeper/views.py:226 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the authentication method \"%(name)s\"?" -msgstr "Tem certeza de que deseja excluir a Chave de API \"%(name)s\"?" +msgstr "" +"Tem certeza de que deseja excluir o método de autenticação \"%(name)s\"?" #: gatekeeper/views.py:276 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Edit Allowed Domain" -msgstr "Inserir IP Permitido" +msgstr "Editar Domínio Permitido" #: gatekeeper/views.py:279 templates/gatekeeper/gatekeeper_list.html:186 msgid "Add Allowed Domain" -msgstr "" +msgstr "Adicionar Domínio Permitido" #: gatekeeper/views.py:287 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Allowed Domain saved successfully." -msgstr "Chave de API salva com sucesso." +msgstr "Domínio Permitido salvo com sucesso." #: gatekeeper/views.py:312 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "Allowed Domain deleted successfully." -msgstr "Chave de API excluída com sucesso." +msgstr "Domínio Permitido excluído com sucesso." #: gatekeeper/views.py:317 msgid "Delete Allowed Domain" -msgstr "" +msgstr "Excluir Domínio Permitido" #: gatekeeper/views.py:319 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?" -msgstr "Tem certeza de que deseja excluir o perfil \"%(name)s\"?" +msgstr "Tem certeza de que deseja excluir o domínio permitido \"%(domain)s\"?" #: gatekeeper/views.py:333 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Edit Allowed Email" -msgstr "Inserir IP Permitido" +msgstr "Editar E-mail Permitido" #: gatekeeper/views.py:336 templates/gatekeeper/gatekeeper_list.html:183 msgid "Add Allowed Email" -msgstr "" +msgstr "Adicionar E-mail Permitido" #: gatekeeper/views.py:344 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Allowed Email saved successfully." -msgstr "Chave de API salva com sucesso." +msgstr "E-mail Permitido salvo com sucesso." #: gatekeeper/views.py:369 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "Allowed Email deleted successfully." -msgstr "Chave de API excluída com sucesso." +msgstr "E-mail Permitido excluído com sucesso." #: gatekeeper/views.py:374 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Delete Allowed Email" -msgstr "Inserir IP Permitido" +msgstr "Excluir E-mail Permitido" #: gatekeeper/views.py:376 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the allowed email \"%(email)s\"?" -msgstr "Tem certeza de que deseja excluir o perfil \"%(name)s\"?" +msgstr "Tem certeza de que deseja excluir o e-mail permitido \"%(email)s\"?" #: gatekeeper/views.py:390 -#, fuzzy -#| msgid "Add IP Address" msgid "Edit IP Address" -msgstr "Adicionar IP" +msgstr "Editar Endereço IP" #: gatekeeper/views.py:393 templates/gatekeeper/gatekeeper_list.html:247 #: templates/wireguard/wireguard_manage_peer.html:171 @@ -1228,28 +1194,21 @@ msgid "Add IP Address" msgstr "Adicionar IP" #: gatekeeper/views.py:401 -#, fuzzy -#| msgid "API Key saved successfully." msgid "IP Address saved successfully." -msgstr "Chave de API salva com sucesso." +msgstr "Endereço IP salvo com sucesso." #: gatekeeper/views.py:426 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "IP Address deleted successfully." -msgstr "Chave de API excluída com sucesso." +msgstr "Endereço IP excluído com sucesso." #: gatekeeper/views.py:431 -#, fuzzy -#| msgid "IP Address" msgid "Delete IP Address" -msgstr "Endereço IP" +msgstr "Excluir Endereço IP" #: gatekeeper/views.py:433 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the IP address \"%(address)s\"?" -msgstr "Tem certeza de que deseja excluir a Chave de API \"%(name)s\"?" +msgstr "Tem certeza de que deseja excluir o endereço IP \"%(address)s\"?" #: intl_tools/forms.py:11 templates/accounts/login.html:36 msgid "Language" @@ -2206,25 +2165,29 @@ msgstr "" msgid "Create Port forwarding Rule" msgstr "Criar Regra de Encaminhamento de Porta" +#: templates/gatekeeper/gatekeeper_auth_method_form.html:63 +msgid "View QR Code" +msgstr "Ver Código QR" + +#: templates/gatekeeper/gatekeeper_auth_method_form.html:74 +msgid "Please enter a TOTP Secret first to generate the QR code." +msgstr "Por favor, insira um Segredo TOTP primeiro para gerar o código QR." + #: templates/gatekeeper/gatekeeper_list.html:12 msgid "Gatekeeper Users" -msgstr "" +msgstr "Usuários Gatekeeper" #: templates/gatekeeper/gatekeeper_list.html:18 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Methods" -msgstr "Autenticação" +msgstr "Métodos de Autenticação" #: templates/gatekeeper/gatekeeper_list.html:24 msgid "Allowed Emails & Domains" -msgstr "" +msgstr "E-mails e Domínios Permitidos" #: templates/gatekeeper/gatekeeper_list.html:30 -#, fuzzy -#| msgid "IP Address" msgid "IP Addresses" -msgstr "Endereço IP" +msgstr "Endereços IP" #: templates/gatekeeper/gatekeeper_list.html:40 #: templates/user_manager/peer_group_list.html:11 @@ -2232,10 +2195,8 @@ msgid "Users" msgstr "Usuários" #: templates/gatekeeper/gatekeeper_list.html:43 -#, fuzzy -#| msgid "Peer Groups" msgid "Groups" -msgstr "Grupos de Peers" +msgstr "Grupos" #: templates/gatekeeper/gatekeeper_list.html:51 #: templates/user_manager/list_buttons.html:2 user_manager/views.py:111 @@ -2253,55 +2214,45 @@ msgid "Actions" msgstr "Ações" #: templates/gatekeeper/gatekeeper_list.html:88 -#, fuzzy -#| msgid "No time intervals found." msgid "No Gatekeeper Users found." -msgstr "Nenhum intervalo de horário encontrado." +msgstr "Nenhum Usuário Gatekeeper encontrado." #: templates/gatekeeper/gatekeeper_list.html:95 -#, fuzzy -#| msgid "Add Peer Group" msgid "Add Group" -msgstr "Adicionar Grupo de Peers" +msgstr "Adicionar Grupo" #: templates/gatekeeper/gatekeeper_list.html:131 msgid "No Gatekeeper Groups found." -msgstr "" +msgstr "Nenhum Grupo Gatekeeper encontrado." #: templates/gatekeeper/gatekeeper_list.html:140 msgid "Add Auth Method" -msgstr "" +msgstr "Adicionar Método de Autenticação" #: templates/gatekeeper/gatekeeper_list.html:176 -#, fuzzy -#| msgid "Authentication" msgid "No Authentication Methods found." -msgstr "Autenticação" +msgstr "Nenhum Método de Autenticação encontrado." #: templates/gatekeeper/gatekeeper_list.html:196 msgid "Identity" -msgstr "" +msgstr "Identidade" #: templates/gatekeeper/gatekeeper_list.html:197 #: templates/gatekeeper/gatekeeper_list.html:259 msgid "Auth Method" -msgstr "" +msgstr "Método de Autenticação" #: templates/gatekeeper/gatekeeper_list.html:241 msgid "No Allowed Emails or Domains found." -msgstr "" +msgstr "Nenhum E-mail ou Domínio Permitido encontrado." #: templates/gatekeeper/gatekeeper_list.html:260 -#, fuzzy -#| msgid "User Manager" msgid "Manage" -msgstr "Configurar Usuários" +msgstr "Gerenciar" #: templates/gatekeeper/gatekeeper_list.html:293 -#, fuzzy -#| msgid "IP Address" msgid "No IP Addresses found." -msgstr "Endereço IP" +msgstr "Nenhum Endereço IP encontrado." #: templates/generic_delete_confirmation.html:16 msgid "Confirm Delete" diff --git a/locale/sk/LC_MESSAGES/django.mo b/locale/sk/LC_MESSAGES/django.mo index bcebd69a2d70a2ae305e737f613c103e353e92c3..a9a66c0e2a4e5d416565dc39c31deb5a1618ebcb 100644 GIT binary patch delta 22691 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 delta 13869 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 w\n" "Language-Team: LANGUAGE \n" @@ -59,6 +59,7 @@ msgid "" "Are you sure you want to regenerate the token? The old token will stop " "working immediately." msgstr "" +"Naozaj chcete regenerovať token? Starý token okamžite prestane fungovať." #: api_v2/forms.py:63 cluster/forms.py:67 cluster/forms.py:124 dns/forms.py:37 #: dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:40 @@ -194,32 +195,32 @@ msgstr "Dokumentácia API" #: app_gateway/models.py:12 msgid "Upstream address, e.g.: http://10.188.18.27:3000" -msgstr "" +msgstr "Upstream adresa, napr.: http://10.188.18.27:3000" #: app_gateway/models.py:42 msgid "Bypass (public)" -msgstr "" +msgstr "Bypass (verejné)" #: app_gateway/models.py:43 msgid "One Factor" -msgstr "" +msgstr "Jeden faktor" #: app_gateway/models.py:44 msgid "Two Factor" -msgstr "" +msgstr "Dva faktory" -#: app_gateway/models.py:45 gatekeeper/models.py:114 +#: app_gateway/models.py:45 gatekeeper/models.py:111 #: templates/gatekeeper/gatekeeper_list.html:272 msgid "Deny" -msgstr "" +msgstr "Odmietnuť" #: app_gateway/models.py:84 msgid "Route identifier, used in export (e.g.: public_area)" -msgstr "" +msgstr "Identifikátor trasy používaný pri exporte (napr.: public_area)" #: app_gateway/models.py:87 msgid "Evaluation order — lower value means higher priority" -msgstr "" +msgstr "Poradie vyhodnocovania — nižšia hodnota znamená vyššiu prioritu" #: cluster/forms.py:20 msgid "IP Lock" @@ -859,7 +860,7 @@ msgstr "Heslo" #: gatekeeper/forms.py:19 msgid "TOTP Secret" -msgstr "" +msgstr "TOTP tajomstvo" #: gatekeeper/forms.py:41 gatekeeper/forms.py:75 gatekeeper/forms.py:137 #: gatekeeper/forms.py:224 gatekeeper/forms.py:254 gatekeeper/forms.py:285 @@ -869,108 +870,102 @@ msgid "Cancel" msgstr "Zrušiť" #: gatekeeper/forms.py:54 templates/gatekeeper/gatekeeper_list.html:104 -#, fuzzy -#| msgid "Profile Name" msgid "Group Name" -msgstr "Názov profilu" +msgstr "Názov skupiny" #: gatekeeper/forms.py:55 templates/gatekeeper/gatekeeper_list.html:105 msgid "Members" -msgstr "" +msgstr "Členovia" #: gatekeeper/forms.py:85 msgid "TOTP Validation PIN" -msgstr "" +msgstr "Validačný PIN TOTP" #: gatekeeper/forms.py:88 msgid "" "Enter a 6-digit PIN generated by your authenticator app to validate the " "secret." msgstr "" +"Zadajte 6-miestny PIN vygenerovaný vašou autentifikačnou aplikáciou na " +"overenie tajomstva." #: gatekeeper/forms.py:99 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Type" -msgstr "Autentifikácia" +msgstr "Typ autentifikácie" #: gatekeeper/forms.py:100 msgid "Global TOTP Secret" -msgstr "" +msgstr "Globálne TOTP tajomstvo" #: gatekeeper/forms.py:101 msgid "OIDC Provider URL" -msgstr "" +msgstr "URL poskytovateľa OIDC" #: gatekeeper/forms.py:102 msgid "OIDC Client ID" -msgstr "" +msgstr "ID klienta OIDC" #: gatekeeper/forms.py:103 msgid "OIDC Client Secret" -msgstr "" +msgstr "Secret klienta OIDC" #: gatekeeper/forms.py:154 msgid "TOTP secret must be empty for Local Password authentication." -msgstr "" +msgstr "TOTP tajomstvo musí byť prázdne pre autentifikáciu miestnym heslom." #: gatekeeper/forms.py:156 msgid "TOTP validation PIN must be empty for Local Password authentication." msgstr "" +"Validačný PIN TOTP musí byť prázdny pre autentifikáciu miestnym heslom." #: gatekeeper/forms.py:158 msgid "OIDC fields must be empty for Local Password authentication." -msgstr "" +msgstr "Polia OIDC musia byť prázdne pre autentifikáciu miestnym heslom." #: gatekeeper/forms.py:164 msgid "Only one Local Password authentication method can be configured." msgstr "" +"Je možné nakonfigurovať iba jednu metódu autentifikácie miestnym heslom." #: gatekeeper/forms.py:167 msgid "OIDC fields must be empty for TOTP authentication." -msgstr "" +msgstr "Polia OIDC musia byť prázdne pre autentifikáciu TOTP." #: gatekeeper/forms.py:169 msgid "TOTP secret is required for TOTP authentication." -msgstr "" +msgstr "TOTP tajomstvo je povinné pre autentifikáciu TOTP." #: gatekeeper/forms.py:173 -#, fuzzy -#| msgid "Please provide a valid IP address." msgid "Please provide a PIN to validate the TOTP secret." -msgstr "Prosím zadajte platnú IP adresu." +msgstr "Na overenie tajomstva TOTP zadajte PIN." #: gatekeeper/forms.py:178 msgid "Invalid TOTP PIN." -msgstr "" +msgstr "Neplatný PIN TOTP." #: gatekeeper/forms.py:180 msgid "Invalid TOTP secret format. Must be a valid Base32 string." -msgstr "" +msgstr "Neplatný formát tajomstva TOTP. Musí to byť platný reťazec Base32." #: gatekeeper/forms.py:183 msgid "TOTP secret must be empty for OIDC authentication." -msgstr "" +msgstr "TOTP tajomstvo musí byť prázdne pre autentifikáciu OIDC." #: gatekeeper/forms.py:185 msgid "TOTP validation PIN must be empty for OIDC authentication." -msgstr "" +msgstr "Validačný PIN TOTP musí byť prázdny pre autentifikáciu OIDC." #: gatekeeper/forms.py:194 gatekeeper/forms.py:236 gatekeeper/forms.py:267 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Method" -msgstr "Autentifikácia" +msgstr "Metóda autentifikácie" #: gatekeeper/forms.py:195 -#, fuzzy -#| msgid "IP Address" msgid "IP/Network Address" -msgstr "IP adresa" +msgstr "IP/Adresa siete" #: gatekeeper/forms.py:196 templates/gatekeeper/gatekeeper_list.html:257 msgid "Prefix Length" -msgstr "" +msgstr "Dĺžka prefixu" #: gatekeeper/forms.py:197 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 @@ -980,131 +975,107 @@ msgstr "Akcia" #: gatekeeper/forms.py:237 templates/gatekeeper/gatekeeper_list.html:221 msgid "Domain" -msgstr "" +msgstr "Doména" #: gatekeeper/models.py:10 -#, fuzzy -#| msgid "Default Password" msgid "Local Password" -msgstr "Predvolené heslo" +msgstr "Miestne heslo" #: gatekeeper/models.py:11 msgid "One-Time Password (TOTP)" -msgstr "" +msgstr "Jednorazové heslo (TOTP)" #: gatekeeper/models.py:12 msgid "OpenID Connect (OIDC)" -msgstr "" +msgstr "OpenID Connect (OIDC)" #: gatekeeper/models.py:13 -#, fuzzy -#| msgid "IP Address" msgid "IP Address List" -msgstr "IP adresa" +msgstr "Zoznam IP adries" -#: gatekeeper/models.py:71 +#: gatekeeper/models.py:17 +msgid "Shared/global TOTP secret key" +msgstr "Zdieľaný/globálny tajný kľúč TOTP" + +#: gatekeeper/models.py:68 msgid "Password for local authentication (leave blank if not using)" -msgstr "" +msgstr "Heslo pre miestnu autentifikáciu (ak nepoužívate, nechajte prázdne)" -#: gatekeeper/models.py:72 +#: gatekeeper/models.py:69 msgid "Per-user TOTP secret key" -msgstr "" +msgstr "Tajný kľúč TOTP pre jednotlivých používateľov" -#: gatekeeper/models.py:112 +#: gatekeeper/models.py:109 msgid "CIDR prefix length (e.g.: 24 for /24). Leave blank for a single host." msgstr "" +"Dĺžka prefixu CIDR (napr.: 24 pre /24). Ak ide o jedného hostiteľa, nechajte " +"prázdne." -#: gatekeeper/models.py:114 templates/gatekeeper/gatekeeper_list.html:270 -#, fuzzy -#| msgid "Allowed IPs" +#: gatekeeper/models.py:111 templates/gatekeeper/gatekeeper_list.html:270 msgid "Allow" -msgstr "Povolené IP adresy" +msgstr "Povoliť" #: gatekeeper/views.py:55 -#, fuzzy -#| msgid "Edit User" msgid "Edit Gatekeeper User" -msgstr "Upraviť používateľa" +msgstr "Upraviť používateľa Gatekeeper" #: gatekeeper/views.py:58 -#, fuzzy -#| msgid "Create Peer" msgid "Create Gatekeeper User" -msgstr "Vytvoriť peer" +msgstr "Vytvoriť používateľa Gatekeeper" #: gatekeeper/views.py:66 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Gatekeeper User saved successfully." -msgstr "Kľúč API bol úspešne uložený." +msgstr "Používateľ Gatekeeper bol úspešne uložený." #: gatekeeper/views.py:91 -#, fuzzy -#| msgid "Peer deleted|Peer deleted successfully." msgid "Gatekeeper User deleted successfully." -msgstr "Peer vymazaný|Peer bol úspešne vymazaný." +msgstr "Používateľ Gatekeeper bol úspešne odstránený." #: gatekeeper/views.py:96 -#, fuzzy -#| msgid "Delete Peer" msgid "Delete Gatekeeper User" -msgstr "Vymazať peer" +msgstr "Odstrániť používateľa Gatekeeper" #: gatekeeper/views.py:98 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the user \"%(username)s\"?" -msgstr "Ste si istí, že chcete odstrániť kľúč API \"%(name)s\"?" +msgstr "Naozaj chcete odstrániť používateľa \"%(username)s\"?" #: gatekeeper/views.py:112 -#, fuzzy -#| msgid "Edit Peer Group: " msgid "Edit Gatekeeper Group" -msgstr "Upraviť peer skupinu: " +msgstr "Upraviť skupinu Gatekeeper" #: gatekeeper/views.py:115 msgid "Create Gatekeeper Group" -msgstr "" +msgstr "Vytvoriť skupinu Gatekeeper" #: gatekeeper/views.py:123 -#, fuzzy -#| msgid "Peer reactivated successfully." msgid "Gatekeeper Group saved successfully." -msgstr "Peer úspešne reaktivovaný." +msgstr "Skupina Gatekeeper bola úspešne uložená." #: gatekeeper/views.py:148 -#, fuzzy -#| msgid "Schedule Slot deleted successfully." msgid "Gatekeeper Group deleted successfully." -msgstr "Slot plánovania bol úspešne vymazaný." +msgstr "Skupina Gatekeeper bola úspešne odstránená." #: gatekeeper/views.py:153 msgid "Delete Gatekeeper Group" -msgstr "" +msgstr "Odstrániť skupinu Gatekeeper" #: gatekeeper/views.py:155 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the group \"%(name)s\"?" -msgstr "Ste si istí, že chcete odstrániť profil \"%(name)s\"?" +msgstr "Naozaj chcete odstrániť skupinu \"%(name)s\"?" #: gatekeeper/views.py:169 -#, fuzzy -#| msgid "Authentication" msgid "Edit Authentication Method" -msgstr "Autentifikácia" +msgstr "Upraviť metódu autentifikácie" #: gatekeeper/views.py:172 -#, fuzzy -#| msgid "Authentication" msgid "Create Authentication Method" -msgstr "Autentifikácia" +msgstr "Vytvoriť metódu autentifikácie" #: gatekeeper/views.py:180 -#, fuzzy -#| msgid "Static DNS saved successfully" msgid "Authentication Method saved successfully." -msgstr "Statický DNS bol úspešne uložený" +msgstr "Metóda autentifikácie bola úspešne uložená." #: gatekeeper/views.py:187 msgid "" @@ -1124,96 +1095,90 @@ msgid "" " \n" " " msgstr "" +"\n" +"
Typy autentifikácie
\n" +"

Vyberte, ako sa budú používatelia autentifikovať prostredníctvom " +"tejto metódy.

\n" +"
    \n" +"
  • Miestne heslo: Používatelia sa budú " +"autentifikovať pomocou štandardného používateľského mena a hesla uloženého " +"lokálne. Je možné vytvoriť iba jeden tento typ.
  • \n" +"
  • TOTP (časovo založené jednorazové heslo): " +"Používatelia budú musieť zadať rotujúci token z autentifikačnej aplikácie. " +"Vyžaduje nastavenie globálneho tajomstva TOTP.
  • \n" +"
  • OIDC (OpenID Connect): Používatelia sa budú " +"autentifikovať prostredníctvom externého poskytovateľa identity (ako " +"Keycloak, Google alebo Authelia). Vyžaduje URL poskytovateľa, ID klienta a " +"Secret klienta.
  • \n" +"
\n" +" " #: gatekeeper/views.py:219 -#, fuzzy -#| msgid "Static DNS deleted successfully" msgid "Authentication Method deleted successfully." -msgstr "Statický DNS bol úspešne vymazaný" +msgstr "Metóda autentifikácie bola úspešne odstránená." #: gatekeeper/views.py:224 -#, fuzzy -#| msgid "Authentication" msgid "Delete Authentication Method" -msgstr "Autentifikácia" +msgstr "Odstrániť metódu autentifikácie" #: gatekeeper/views.py:226 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the authentication method \"%(name)s\"?" -msgstr "Ste si istí, že chcete odstrániť kľúč API \"%(name)s\"?" +msgstr "Naozaj chcete odstrániť metódu autentifikácie \"%(name)s\"?" #: gatekeeper/views.py:276 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Edit Allowed Domain" -msgstr "Zadajte povolenú IP" +msgstr "Upraviť povolenú doménu" #: gatekeeper/views.py:279 templates/gatekeeper/gatekeeper_list.html:186 msgid "Add Allowed Domain" -msgstr "" +msgstr "Pridať povolenú doménu" #: gatekeeper/views.py:287 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Allowed Domain saved successfully." -msgstr "Kľúč API bol úspešne uložený." +msgstr "Povolená doména bola úspešne uložená." #: gatekeeper/views.py:312 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "Allowed Domain deleted successfully." -msgstr "Kľúč API bol úspešne vymazaný." +msgstr "Povolená doména bola úspešne odstránená." #: gatekeeper/views.py:317 msgid "Delete Allowed Domain" -msgstr "" +msgstr "Odstrániť povolenú doménu" #: gatekeeper/views.py:319 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?" -msgstr "Ste si istí, že chcete odstrániť profil \"%(name)s\"?" +msgstr "Naozaj chcete odstrániť povolenú doménu \"%(domain)s\"?" #: gatekeeper/views.py:333 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Edit Allowed Email" -msgstr "Zadajte povolenú IP" +msgstr "Upraviť povolený e-mail" #: gatekeeper/views.py:336 templates/gatekeeper/gatekeeper_list.html:183 msgid "Add Allowed Email" -msgstr "" +msgstr "Pridať povolený e-mail" #: gatekeeper/views.py:344 -#, fuzzy -#| msgid "API Key saved successfully." msgid "Allowed Email saved successfully." -msgstr "Kľúč API bol úspešne uložený." +msgstr "Povolený e-mail bol úspešne uložený." #: gatekeeper/views.py:369 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "Allowed Email deleted successfully." -msgstr "Kľúč API bol úspešne vymazaný." +msgstr "Povolený e-mail bol úspešne odstránený." #: gatekeeper/views.py:374 -#, fuzzy -#| msgid "Enter Allowed IP" msgid "Delete Allowed Email" -msgstr "Zadajte povolenú IP" +msgstr "Odstrániť povolený e-mail" #: gatekeeper/views.py:376 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the profile \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the allowed email \"%(email)s\"?" -msgstr "Ste si istí, že chcete odstrániť profil \"%(name)s\"?" +msgstr "Naozaj chcete odstrániť povolený e-mail \"%(email)s\"?" #: gatekeeper/views.py:390 -#, fuzzy -#| msgid "Add IP Address" msgid "Edit IP Address" -msgstr "Pridať IP adresu" +msgstr "Upraviť IP adresu" #: gatekeeper/views.py:393 templates/gatekeeper/gatekeeper_list.html:247 #: templates/wireguard/wireguard_manage_peer.html:171 @@ -1221,28 +1186,21 @@ msgid "Add IP Address" msgstr "Pridať IP adresu" #: gatekeeper/views.py:401 -#, fuzzy -#| msgid "API Key saved successfully." msgid "IP Address saved successfully." -msgstr "Kľúč API bol úspešne uložený." +msgstr "IP adresa bola úspešne uložená." #: gatekeeper/views.py:426 -#, fuzzy -#| msgid "API Key deleted successfully." msgid "IP Address deleted successfully." -msgstr "Kľúč API bol úspešne vymazaný." +msgstr "IP adresa bola úspešne odstránená." #: gatekeeper/views.py:431 -#, fuzzy -#| msgid "IP Address" msgid "Delete IP Address" -msgstr "IP adresa" +msgstr "Odstrániť IP adresu" #: gatekeeper/views.py:433 -#, fuzzy, python-format -#| msgid "Are you sure you want to delete the API Key \"%(name)s\"?" +#, python-format msgid "Are you sure you want to delete the IP address \"%(address)s\"?" -msgstr "Ste si istí, že chcete odstrániť kľúč API \"%(name)s\"?" +msgstr "Naozaj chcete odstrániť IP adresu \"%(address)s\"?" #: intl_tools/forms.py:11 templates/accounts/login.html:36 msgid "Language" @@ -2181,25 +2139,29 @@ msgstr "" msgid "Create Port forwarding Rule" msgstr "Vytvoriť pravidlo presmerovania portov" +#: templates/gatekeeper/gatekeeper_auth_method_form.html:63 +msgid "View QR Code" +msgstr "Zobraziť QR kód" + +#: templates/gatekeeper/gatekeeper_auth_method_form.html:74 +msgid "Please enter a TOTP Secret first to generate the QR code." +msgstr "Najprv zadajte TOTP tajomstvo, aby ste vygenerovali QR kód." + #: templates/gatekeeper/gatekeeper_list.html:12 msgid "Gatekeeper Users" -msgstr "" +msgstr "Používatelia Gatekeeper" #: templates/gatekeeper/gatekeeper_list.html:18 -#, fuzzy -#| msgid "Authentication" msgid "Authentication Methods" -msgstr "Autentifikácia" +msgstr "Metódy autentifikácie" #: templates/gatekeeper/gatekeeper_list.html:24 msgid "Allowed Emails & Domains" -msgstr "" +msgstr "Povolené e-maily a domény" #: templates/gatekeeper/gatekeeper_list.html:30 -#, fuzzy -#| msgid "IP Address" msgid "IP Addresses" -msgstr "IP adresa" +msgstr "IP adresy" #: templates/gatekeeper/gatekeeper_list.html:40 #: templates/user_manager/peer_group_list.html:11 @@ -2207,10 +2169,8 @@ msgid "Users" msgstr "Používatelia" #: templates/gatekeeper/gatekeeper_list.html:43 -#, fuzzy -#| msgid "Peer Groups" msgid "Groups" -msgstr "Peer skupiny" +msgstr "Skupiny" #: templates/gatekeeper/gatekeeper_list.html:51 #: templates/user_manager/list_buttons.html:2 user_manager/views.py:111 @@ -2228,55 +2188,45 @@ msgid "Actions" msgstr "Akcie" #: templates/gatekeeper/gatekeeper_list.html:88 -#, fuzzy -#| msgid "No time intervals found." msgid "No Gatekeeper Users found." -msgstr "Nenašli sa žiadne časové intervaly." +msgstr "Nenašli sa žiadni používatelia Gatekeeper." #: templates/gatekeeper/gatekeeper_list.html:95 -#, fuzzy -#| msgid "Add Peer Group" msgid "Add Group" -msgstr "Pridať peer skupinu" +msgstr "Pridať skupinu" #: templates/gatekeeper/gatekeeper_list.html:131 msgid "No Gatekeeper Groups found." -msgstr "" +msgstr "Nenašli sa žiadne skupiny Gatekeeper." #: templates/gatekeeper/gatekeeper_list.html:140 msgid "Add Auth Method" -msgstr "" +msgstr "Pridať metódu autentifikácie" #: templates/gatekeeper/gatekeeper_list.html:176 -#, fuzzy -#| msgid "Authentication" msgid "No Authentication Methods found." -msgstr "Autentifikácia" +msgstr "Nenašli sa žiadne metódy autentifikácie." #: templates/gatekeeper/gatekeeper_list.html:196 msgid "Identity" -msgstr "" +msgstr "Identita" #: templates/gatekeeper/gatekeeper_list.html:197 #: templates/gatekeeper/gatekeeper_list.html:259 msgid "Auth Method" -msgstr "" +msgstr "Metóda autentifikácie" #: templates/gatekeeper/gatekeeper_list.html:241 msgid "No Allowed Emails or Domains found." -msgstr "" +msgstr "Nenašli sa žiadne povolené e-maily ani domény." #: templates/gatekeeper/gatekeeper_list.html:260 -#, fuzzy -#| msgid "User Manager" msgid "Manage" -msgstr "Správa používateľov" +msgstr "Spravovať" #: templates/gatekeeper/gatekeeper_list.html:293 -#, fuzzy -#| msgid "IP Address" msgid "No IP Addresses found." -msgstr "IP adresa" +msgstr "Nenašli sa žiadne IP adresy." #: templates/generic_delete_confirmation.html:16 msgid "Confirm Delete" diff --git a/templates/gatekeeper/gatekeeper_auth_method_form.html b/templates/gatekeeper/gatekeeper_auth_method_form.html index f58c739..b653cee 100644 --- a/templates/gatekeeper/gatekeeper_auth_method_form.html +++ b/templates/gatekeeper/gatekeeper_auth_method_form.html @@ -1,5 +1,6 @@ {% extends 'base.html' %} {% load crispy_forms_tags %} +{% load i18n %} {% block content %}
@@ -59,7 +60,7 @@ toggleFields(); var qrContainer = $(''); - var btnShowQr = $(''); + var btnShowQr = $(''); $('#div_id_totp_secret').append(btnShowQr); $('#div_id_totp_secret').append(qrContainer); @@ -70,7 +71,7 @@ var name = $('#id_name').val() || 'Gatekeeper'; if (!secret) { - alert("Please enter a TOTP Secret first to generate the QR code."); + alert("{% trans 'Please enter a TOTP Secret first to generate the QR code.' %}"); return; }