From 9a5696d855790b556d7f2f72e33a01c83f12a9a2 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Wed, 18 Mar 2026 10:58:51 -0300 Subject: [PATCH] update translations --- locale/de/LC_MESSAGES/django.mo | Bin 104543 -> 102286 bytes locale/de/LC_MESSAGES/django.po | 809 ++++++++++++++++++----------- locale/es/LC_MESSAGES/django.mo | Bin 102589 -> 100315 bytes locale/es/LC_MESSAGES/django.po | 801 +++++++++++++++++----------- locale/fr/LC_MESSAGES/django.mo | Bin 105437 -> 103096 bytes locale/fr/LC_MESSAGES/django.po | 780 ++++++++++++++++----------- locale/pt_BR/LC_MESSAGES/django.mo | Bin 104191 -> 101947 bytes locale/pt_BR/LC_MESSAGES/django.po | 775 ++++++++++++++++----------- locale/sk/LC_MESSAGES/django.mo | Bin 103619 -> 101421 bytes locale/sk/LC_MESSAGES/django.po | 780 ++++++++++++++++----------- 10 files changed, 2425 insertions(+), 1520 deletions(-) diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 06f0c8415e5afac533e2db2e49c3c017593d9740..5cc0640f975a13131571a5ab9a7367923427571f 100644 GIT binary patch delta 17230 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 delta 19167 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 diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 91003d0..fbb42e7 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-15 17:20-0300\n" +"POT-Creation-Date: 2026-03-18 10:58-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,17 +33,17 @@ msgstr "Zurück" #: api_v2/forms.py:30 cluster/forms.py:28 dns/forms.py:69 dns/forms.py:129 #: routing_templates/forms.py:37 -#: templates/app_gateway/app_gateway_list.html:158 -#: templates/app_gateway/application_details.html:75 -#: templates/app_gateway/application_details.html:125 +#: templates/app_gateway/app_gateway_list.html:166 +#: templates/app_gateway/application_details.html:103 +#: templates/app_gateway/application_details.html:154 #: templates/firewall/manage_firewall_rule.html:382 #: templates/firewall/manage_redirect_rule.html:86 -#: templates/gatekeeper/gatekeeper_list.html:93 -#: templates/gatekeeper/gatekeeper_list.html:136 -#: templates/gatekeeper/gatekeeper_list.html:181 -#: templates/gatekeeper/gatekeeper_list.html:229 -#: templates/gatekeeper/gatekeeper_list.html:246 -#: templates/gatekeeper/gatekeeper_list.html:298 +#: templates/gatekeeper/gatekeeper_list.html:94 +#: templates/gatekeeper/gatekeeper_list.html:137 +#: templates/gatekeeper/gatekeeper_list.html:182 +#: templates/gatekeeper/gatekeeper_list.html:230 +#: templates/gatekeeper/gatekeeper_list.html:247 +#: templates/gatekeeper/gatekeeper_list.html:299 #: templates/scheduler/scheduleprofile_form.html:127 #: templates/scheduler/scheduleprofile_list.html:29 #: templates/wireguard/peer_list/peer_preview_modal.html:109 @@ -64,12 +64,12 @@ msgstr "" "Sind Sie sicher, dass Sie das Token neu generieren möchten? Das alte Token " "wird sofort ungültig." -#: api_v2/forms.py:63 app_gateway/forms.py:40 app_gateway/forms.py:92 -#: app_gateway/forms.py:136 app_gateway/forms.py:154 app_gateway/forms.py:237 -#: app_gateway/forms.py:278 cluster/forms.py:67 cluster/forms.py:124 -#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:70 -#: gatekeeper/forms.py:150 gatekeeper/forms.py:212 gatekeeper/forms.py:299 -#: gatekeeper/forms.py:329 gatekeeper/forms.py:360 +#: api_v2/forms.py:63 app_gateway/forms.py:41 app_gateway/forms.py:99 +#: app_gateway/forms.py:144 app_gateway/forms.py:162 app_gateway/forms.py:241 +#: app_gateway/forms.py:283 cluster/forms.py:67 cluster/forms.py:124 +#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:71 +#: gatekeeper/forms.py:152 gatekeeper/forms.py:239 gatekeeper/forms.py:362 +#: gatekeeper/forms.py:392 gatekeeper/forms.py:423 #: routing_templates/forms.py:71 scheduler/forms.py:102 #: templates/firewall/manage_firewall_rule.html:379 #: templates/firewall/manage_firewall_settings.html:59 @@ -82,14 +82,14 @@ msgstr "" msgid "Save" msgstr "Speichern" -#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:106 -#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:174 +#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:113 +#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:188 #: routing_templates/forms.py:28 templates/api_v2/api_documentation.html:47 -#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:58 -#: templates/app_gateway/app_gateway_list.html:138 -#: templates/app_gateway/application_details.html:26 +#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:66 +#: templates/app_gateway/app_gateway_list.html:146 +#: templates/app_gateway/application_details.html:35 #: templates/cluster/workers_list.html:8 templates/dns/static_host_list.html:68 -#: templates/gatekeeper/gatekeeper_list.html:165 +#: templates/gatekeeper/gatekeeper_list.html:166 #: templates/routing_templates/list.html:8 #: templates/scheduler/scheduleprofile_list.html:13 #: templates/user_manager/peer_group_list.html:8 @@ -127,16 +127,16 @@ msgid "Enabled" msgstr "Aktiviert" #: api_v2/views.py:17 api_v2/views.py:27 api_v2/views.py:82 api_v2/views.py:106 -#: app_gateway/views.py:26 app_gateway/views.py:48 app_gateway/views.py:68 -#: app_gateway/views.py:112 app_gateway/views.py:135 app_gateway/views.py:170 -#: app_gateway/views.py:194 app_gateway/views.py:205 app_gateway/views.py:267 -#: app_gateway/views.py:293 app_gateway/views.py:328 app_gateway/views.py:354 -#: app_gateway/views.py:404 app_gateway/views.py:432 cluster/views.py:18 -#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:23 -#: gatekeeper/views.py:48 gatekeeper/views.py:98 gatekeeper/views.py:121 -#: gatekeeper/views.py:151 gatekeeper/views.py:174 gatekeeper/views.py:222 -#: gatekeeper/views.py:281 gatekeeper/views.py:311 gatekeeper/views.py:334 -#: gatekeeper/views.py:364 gatekeeper/views.py:387 gatekeeper/views.py:436 +#: app_gateway/views.py:28 app_gateway/views.py:52 app_gateway/views.py:83 +#: app_gateway/views.py:130 app_gateway/views.py:157 app_gateway/views.py:196 +#: app_gateway/views.py:224 app_gateway/views.py:235 app_gateway/views.py:297 +#: app_gateway/views.py:323 app_gateway/views.py:358 app_gateway/views.py:384 +#: app_gateway/views.py:434 app_gateway/views.py:462 cluster/views.py:18 +#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:25 +#: gatekeeper/views.py:52 gatekeeper/views.py:102 gatekeeper/views.py:125 +#: gatekeeper/views.py:155 gatekeeper/views.py:178 gatekeeper/views.py:226 +#: gatekeeper/views.py:297 gatekeeper/views.py:327 gatekeeper/views.py:350 +#: gatekeeper/views.py:380 gatekeeper/views.py:403 gatekeeper/views.py:452 #: templates/access_denied.html:9 msgid "Access Denied" msgstr "Zugriff verweigert" @@ -207,20 +207,19 @@ msgstr "" msgid "API Documentation" msgstr "API-Dokumentation" -#: app_gateway/forms.py:19 templates/app_gateway/application_details.html:27 -#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15 -msgid "Display Name" -msgstr "Anzeigename" - -#: app_gateway/forms.py:20 templates/app_gateway/app_gateway_list.html:59 -#: templates/app_gateway/application_details.html:28 +#: app_gateway/forms.py:19 templates/app_gateway/app_gateway_list.html:67 +#: templates/app_gateway/application_details.html:36 msgid "Upstream" msgstr "Upstream" -#: app_gateway/forms.py:41 app_gateway/forms.py:93 app_gateway/forms.py:137 -#: app_gateway/forms.py:155 app_gateway/forms.py:238 app_gateway/forms.py:279 -#: gatekeeper/forms.py:71 gatekeeper/forms.py:151 gatekeeper/forms.py:213 -#: gatekeeper/forms.py:300 gatekeeper/forms.py:330 gatekeeper/forms.py:361 +#: app_gateway/forms.py:20 +msgid "Allow invalid/self-signed certificate" +msgstr "" + +#: app_gateway/forms.py:42 app_gateway/forms.py:100 app_gateway/forms.py:145 +#: app_gateway/forms.py:163 app_gateway/forms.py:242 app_gateway/forms.py:284 +#: gatekeeper/forms.py:72 gatekeeper/forms.py:153 gatekeeper/forms.py:240 +#: gatekeeper/forms.py:363 gatekeeper/forms.py:393 gatekeeper/forms.py:424 #: scheduler/forms.py:103 #: templates/app_gateway/access_policy_type_select.html:50 #: templates/generic_delete_confirmation.html:19 @@ -228,62 +227,69 @@ msgstr "Upstream" msgid "Cancel" msgstr "Abbrechen" -#: app_gateway/forms.py:54 -msgid "This is a reserved system name." -msgstr "Dies ist ein reservierter Systemname." - -#: app_gateway/forms.py:58 +#: app_gateway/forms.py:55 msgid "This upstream is reserved by the system." msgstr "Dieser Upstream ist vom System reserviert." -#: app_gateway/forms.py:61 +#: app_gateway/forms.py:58 msgid "Upstream URL cannot contain spaces." msgstr "Upstream-URL darf keine Leerzeichen enthalten." -#: app_gateway/forms.py:67 +#: app_gateway/forms.py:64 msgid "Enter a valid upstream URL starting with http:// or https://" msgstr "" "Geben Sie eine gültige Upstream-URL ein, die mit http:// oder https:// " "beginnt." -#: app_gateway/forms.py:77 cluster/forms.py:24 dns/forms.py:65 -#: templates/app_gateway/app_gateway_list.html:101 -#: templates/app_gateway/application_details.html:61 +#: app_gateway/forms.py:66 +msgid "" +"Upstream must be a bare host address with no path, query or fragment. Use " +"http://host or http://host:port" +msgstr "" + +#: app_gateway/forms.py:76 cluster/forms.py:24 dns/forms.py:65 +#: templates/app_gateway/app_gateway_list.html:109 +#: templates/app_gateway/application_details.html:75 #: templates/dns/static_host_list.html:17 #: templates/wireguard/server_detail.html:39 msgid "Hostname" msgstr "Hostname" -#: app_gateway/forms.py:107 templates/app_gateway/app_gateway_list.html:139 +#: app_gateway/forms.py:84 +msgid "Hostname contains invalid characters." +msgstr "" + +#: app_gateway/forms.py:114 templates/app_gateway/app_gateway_list.html:147 msgid "Policy Type" msgstr "Richtlinientyp" -#: app_gateway/forms.py:108 +#: app_gateway/forms.py:115 msgid "Allowed Groups" msgstr "Erlaubte Gruppen" -#: app_gateway/forms.py:109 templates/gatekeeper/gatekeeper_list.html:12 +#: app_gateway/forms.py:116 templates/gatekeeper/gatekeeper_list.html:13 msgid "Authentication Methods" msgstr "Authentifizierungsmethoden" -#: app_gateway/forms.py:188 +#: app_gateway/forms.py:196 msgid "Cannot select more than one Local Password authentication method." msgstr "" "Es kann nicht mehr als eine lokale Passwort-Authentifizierungsmethode " "ausgewählt werden." -#: app_gateway/forms.py:192 +#: app_gateway/forms.py:200 msgid "" "Cannot select more than one OpenID Connect (OIDC) authentication method." msgstr "" "Es kann nicht mehr als eine OpenID Connect (OIDC)-Authentifizierungsmethode " "ausgewählt werden." -#: app_gateway/forms.py:196 +#: app_gateway/forms.py:204 msgid "Cannot select more than one TOTP authentication method." -msgstr "Es kann nicht mehr als eine TOTP-Authentifizierungsmethode ausgewählt werden." +msgstr "" +"Es kann nicht mehr als eine TOTP-Authentifizierungsmethode ausgewählt werden." -#: app_gateway/forms.py:200 +#: app_gateway/forms.py:208 msgid "" "Cannot select both Local Password and OpenID Connect (OIDC) authentication " "methods." @@ -291,15 +297,7 @@ msgstr "" "Die Authentifizierungsmethoden \"Lokales Passwort\" und OpenID Connect " "(OIDC) können nicht gleichzeitig ausgewählt werden." -#: app_gateway/forms.py:204 -msgid "" -"TOTP must be combined with a Local Password or OpenID Connect authentication " -"method." -msgstr "" -"TOTP muss mit einer lokalen Passwort- oder OpenID Connect-" -"Authentifizierungsmethode kombiniert werden." - -#: app_gateway/forms.py:208 +#: app_gateway/forms.py:212 msgid "" "At least one user group must be selected when using Local Password " "authentication." @@ -307,75 +305,102 @@ msgstr "" "Bei Verwendung der lokalen Passwort-Authentifizierung muss mindestens eine " "Benutzergruppe ausgewählt werden." -#: app_gateway/forms.py:212 +#: app_gateway/forms.py:216 msgid "User groups can only be used with Local Password authentication." msgstr "" "Benutzergruppen können nur mit der lokalen Passwort-Authentifizierung " "verwendet werden." -#: app_gateway/forms.py:222 templates/app_gateway/app_gateway_list.html:62 -#: templates/app_gateway/application_details.html:31 +#: app_gateway/forms.py:226 templates/app_gateway/app_gateway_list.html:70 +#: templates/app_gateway/application_details.html:39 #: templates/firewall/firewall_nav_tabs.html:15 msgid "Default Policy" msgstr "Standard‑Richtlinie" -#: app_gateway/forms.py:251 templates/app_gateway/application_details.html:105 +#: app_gateway/forms.py:255 templates/app_gateway/application_details.html:134 msgid "Route Name" msgstr "Routenname" -#: app_gateway/forms.py:252 templates/app_gateway/application_details.html:106 +#: app_gateway/forms.py:256 templates/app_gateway/application_details.html:135 msgid "Path Prefix" msgstr "Pfadpräfix" -#: app_gateway/forms.py:253 templates/app_gateway/application_details.html:107 +#: app_gateway/forms.py:257 templates/app_gateway/application_details.html:136 msgid "Policy" msgstr "Richtlinie" -#: app_gateway/forms.py:254 templates/app_gateway/application_details.html:108 +#: app_gateway/forms.py:258 templates/app_gateway/application_details.html:137 msgid "Order" msgstr "Reihenfolge" -#: app_gateway/models.py:12 +#: app_gateway/forms.py:299 +#, fuzzy +#| msgid "Invite URL must start with 'https://'." +msgid "Path prefix must start with /." +msgstr "Die Einladungs‑URL muss mit 'https://' beginnen." + +#: app_gateway/forms.py:301 +#, fuzzy +#| msgid "Upstream URL cannot contain spaces." +msgid "Path prefix cannot contain spaces." +msgstr "Upstream-URL darf keine Leerzeichen enthalten." + +#: app_gateway/forms.py:303 +msgid "Path prefix contains invalid characters." +msgstr "" + +#: app_gateway/forms.py:308 +#, fuzzy +#| msgid "This upstream is reserved by the system." +msgid "This path prefix is reserved by the system." +msgstr "Dieser Upstream ist vom System reserviert." + +#: app_gateway/models.py:14 msgid "Upstream address, e.g.: http://10.188.18.27:3000" msgstr "Upstream-Adresse, z. B.: http://10.188.18.27:3000" -#: app_gateway/models.py:45 +#: app_gateway/models.py:15 +msgid "Allow invalid or self-signed TLS certificates from the upstream" +msgstr "" + +#: app_gateway/models.py:53 #: templates/app_gateway/access_policy_type_select.html:19 msgid "Public" msgstr "Öffentlich" -#: app_gateway/models.py:45 +#: app_gateway/models.py:53 #: templates/app_gateway/access_policy_type_select.html:30 msgid "Protected" msgstr "Geschützt" -#: app_gateway/models.py:45 gatekeeper/models.py:108 +#: app_gateway/models.py:53 gatekeeper/models.py:142 #: templates/app_gateway/access_policy_type_select.html:41 -#: templates/gatekeeper/gatekeeper_list.html:288 +#: templates/gatekeeper/gatekeeper_list.html:289 msgid "Deny" msgstr "Verweigern" -#: app_gateway/models.py:80 -msgid "Route identifier, used in export (e.g.: public_area)" -msgstr "Routen-Identifikator, verwendet im Export (z.B.: public_area)" - -#: app_gateway/views.py:60 +#: app_gateway/views.py:75 msgid "Application Details" msgstr "Anwendungsdetails" -#: app_gateway/views.py:74 templates/app_gateway/application_details.html:15 +#: app_gateway/views.py:90 app_gateway/views.py:174 app_gateway/views.py:204 +msgid "The WireGuard WebAdmin application cannot be modified." +msgstr "" + +#: app_gateway/views.py:92 templates/app_gateway/application_details.html:16 +#: templates/app_gateway/application_details.html:23 msgid "Edit Application" msgstr "Anwendung bearbeiten" -#: app_gateway/views.py:77 +#: app_gateway/views.py:95 msgid "Create Application" msgstr "Anwendung erstellen" -#: app_gateway/views.py:84 +#: app_gateway/views.py:102 msgid "Application saved successfully." msgstr "Anwendung erfolgreich gespeichert." -#: app_gateway/views.py:89 +#: app_gateway/views.py:107 msgid "" "\n" "
Application
\n" @@ -409,62 +434,67 @@ msgstr "" " \n" " " -#: app_gateway/views.py:120 +#: app_gateway/views.py:137 +msgid "The WireGuard WebAdmin application cannot be deleted." +msgstr "" + +#: app_gateway/views.py:142 msgid "Application deleted successfully." msgstr "Anwendung erfolgreich gelöscht." -#: app_gateway/views.py:125 templates/app_gateway/application_details.html:18 +#: app_gateway/views.py:147 templates/app_gateway/application_details.html:19 +#: templates/app_gateway/application_details.html:26 msgid "Delete Application" msgstr "Anwendung löschen" -#: app_gateway/views.py:127 +#: app_gateway/views.py:149 #, python-format msgid "Are you sure you want to delete the application \"%(name)s\"?" msgstr "Sind Sie sicher, dass Sie die Anwendung \"%(name)s\" löschen möchten?" -#: app_gateway/views.py:143 +#: app_gateway/views.py:165 msgid "Edit Application Host" msgstr "Anwendungshost bearbeiten" -#: app_gateway/views.py:147 +#: app_gateway/views.py:169 msgid "Add Application Host" msgstr "Anwendungshost hinzufügen" -#: app_gateway/views.py:156 +#: app_gateway/views.py:182 msgid "Application Host saved successfully." msgstr "Anwendungshost erfolgreich gespeichert." -#: app_gateway/views.py:179 +#: app_gateway/views.py:209 msgid "Application Host deleted successfully." msgstr "Anwendungshost erfolgreich gelöscht." -#: app_gateway/views.py:184 +#: app_gateway/views.py:214 msgid "Delete Application Host" msgstr "Anwendungshost löschen" -#: app_gateway/views.py:186 +#: app_gateway/views.py:216 #, python-format msgid "Are you sure you want to delete the host \"%(hostname)s\"?" msgstr "Sind Sie sicher, dass Sie den Host \"%(hostname)s\" löschen möchten?" -#: app_gateway/views.py:197 +#: app_gateway/views.py:227 #: templates/app_gateway/access_policy_type_select.html:9 msgid "Select Access Policy Type" msgstr "Zugriffsrichtlinientyp auswählen" -#: app_gateway/views.py:212 +#: app_gateway/views.py:242 msgid "Edit Access Policy" msgstr "Zugriffsrichtlinie bearbeiten" -#: app_gateway/views.py:216 +#: app_gateway/views.py:246 msgid "Create Access Policy" msgstr "Zugriffsrichtlinie erstellen" -#: app_gateway/views.py:223 +#: app_gateway/views.py:253 msgid "Access Policy saved successfully." msgstr "Zugriffsrichtlinie erfolgreich gespeichert." -#: app_gateway/views.py:229 +#: app_gateway/views.py:259 msgid "" "\n" "
Public Policy
\n" @@ -478,7 +508,7 @@ msgstr "" "Anwendung, ohne eine Authentifizierung zu erfordern.

\n" " " -#: app_gateway/views.py:237 +#: app_gateway/views.py:267 msgid "" "\n" "
Deny Policy
\n" @@ -491,7 +521,7 @@ msgstr "" "übereinstimmenden Routen.

\n" " " -#: app_gateway/views.py:245 +#: app_gateway/views.py:275 msgid "" "\n" "
Protected Policy
\n" @@ -522,11 +552,11 @@ msgstr "" " \n" " " -#: app_gateway/views.py:276 +#: app_gateway/views.py:306 msgid "Access Policy deleted successfully." msgstr "Zugriffsrichtlinie erfolgreich gelöscht." -#: app_gateway/views.py:278 +#: app_gateway/views.py:308 msgid "" "Cannot delete this Access Policy because it is currently in use by an " "Application Route or Application Default Policy." @@ -534,57 +564,57 @@ msgstr "" "Diese Zugriffsrichtlinie kann nicht gelöscht werden, da sie derzeit von " "einer Anwendungsroute oder einer Standardanwendungsrichtlinie verwendet wird." -#: app_gateway/views.py:283 +#: app_gateway/views.py:313 msgid "Delete Access Policy" msgstr "Zugriffsrichtlinie löschen" -#: app_gateway/views.py:285 +#: app_gateway/views.py:315 #, python-format msgid "Are you sure you want to delete the access policy \"%(name)s\"?" msgstr "" "Sind Sie sicher, dass Sie die Zugriffsrichtlinie \"%(name)s\" löschen " "möchten?" -#: app_gateway/views.py:301 +#: app_gateway/views.py:331 msgid "Edit Application Default Policy" msgstr "Standardrichtlinie der Anwendung bearbeiten" -#: app_gateway/views.py:305 +#: app_gateway/views.py:335 msgid "Set Application Default Policy" msgstr "Standardrichtlinie der Anwendung festlegen" -#: app_gateway/views.py:314 +#: app_gateway/views.py:344 msgid "Application Default Policy saved successfully." msgstr "Standardrichtlinie der Anwendung erfolgreich gespeichert." -#: app_gateway/views.py:337 +#: app_gateway/views.py:367 msgid "Application Default Policy deleted successfully." msgstr "Standardrichtlinie der Anwendung erfolgreich gelöscht." -#: app_gateway/views.py:342 +#: app_gateway/views.py:372 msgid "Delete Application Default Policy" msgstr "Standardrichtlinie der Anwendung löschen" -#: app_gateway/views.py:344 +#: app_gateway/views.py:374 #, python-format msgid "Are you sure you want to remove the default policy for \"%(name)s\"?" msgstr "" "Sind Sie sicher, dass Sie die Standardrichtlinie für \"%(name)s\" entfernen " "möchten?" -#: app_gateway/views.py:362 +#: app_gateway/views.py:392 msgid "Edit Application Route" msgstr "Anwendungsroute bearbeiten" -#: app_gateway/views.py:366 +#: app_gateway/views.py:396 msgid "Add Application Route" msgstr "Anwendungsroute hinzufügen" -#: app_gateway/views.py:375 +#: app_gateway/views.py:405 msgid "Application Route saved successfully." msgstr "Anwendungsroute erfolgreich gespeichert." -#: app_gateway/views.py:380 +#: app_gateway/views.py:410 msgid "" "\n" "
Application Route
\n" @@ -625,43 +655,42 @@ msgstr "" " \n" " " -#: app_gateway/views.py:413 +#: app_gateway/views.py:443 msgid "Application Route deleted successfully." msgstr "Anwendungsroute erfolgreich gelöscht." -#: app_gateway/views.py:418 +#: app_gateway/views.py:448 msgid "Delete Application Route" msgstr "Anwendungsroute löschen" -#: app_gateway/views.py:420 +#: app_gateway/views.py:450 #, python-format msgid "Are you sure you want to delete the route \"%(name)s\" (%(path)s)?" msgstr "" "Sind Sie sicher, dass Sie die Route \"%(name)s\" (%(path)s) löschen möchten?" -#: app_gateway/views.py:443 +#: app_gateway/views.py:468 +msgid "" +"Configuration export is not available because Caddy is not enabled. To use " +"App Gateway and Gatekeeper, start the application using docker-compose-" +"caddy.yml." +msgstr "" + +#: app_gateway/views.py:478 msgid "Configuration exported successfully." msgstr "Konfiguration erfolgreich exportiert." -#: app_gateway/views.py:445 -msgid "" -"Caddy is not active. Configuration files were exported for debugging " -"purposes." -msgstr "" -"Caddy ist nicht aktiv. Konfigurationsdateien wurden zu Debugging-Zwecken " -"exportiert." - #: cluster/forms.py:20 msgid "IP Lock" msgstr "IP-Sperre" -#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:271 +#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:315 #: templates/cluster/workers_list.html:10 #: templates/dns/static_host_list.html:18 #: templates/firewall/manage_redirect_rule.html:43 #: templates/firewall/manage_redirect_rule.html:67 #: templates/firewall/manage_redirect_rule.html:68 -#: templates/gatekeeper/gatekeeper_list.html:272 +#: templates/gatekeeper/gatekeeper_list.html:273 #: templates/wireguard/wireguard_status.html:45 msgid "IP Address" msgstr "IP‑Adresse" @@ -938,7 +967,7 @@ msgstr "Statischer DNS" msgid "Invalid hostname." msgstr "Ungültiger Hostname." -#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:274 +#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:318 #: templates/api_v2/api_documentation.html:51 #: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 @@ -1273,13 +1302,13 @@ msgstr "Firewall‑Einstellungen verwalten" msgid "Firewall settings saved successfully" msgstr "Firewall‑Einstellungen erfolgreich gespeichert" -#: gatekeeper/forms.py:17 templates/accounts/login.html:23 +#: gatekeeper/forms.py:18 templates/accounts/login.html:23 #: templates/vpn_invite/invite_settings.html:19 user_manager/forms.py:14 #: vpn_invite/forms.py:282 msgid "Password" msgstr "Passwort" -#: gatekeeper/forms.py:20 +#: gatekeeper/forms.py:21 msgid "" "Minimum 8 characters, with at least one uppercase letter, one lowercase " "letter, and one number." @@ -1287,15 +1316,15 @@ msgstr "" "Mindestens 8 Zeichen, mit mindestens einem Großbuchstaben, einem " "Kleinbuchstaben und einer Zahl." -#: gatekeeper/forms.py:23 +#: gatekeeper/forms.py:24 msgid "Confirm Password" msgstr "Passwort bestätigen" -#: gatekeeper/forms.py:28 gatekeeper/forms.py:161 +#: gatekeeper/forms.py:29 gatekeeper/forms.py:163 msgid "TOTP Validation PIN" msgstr "TOTP-Validierungs-PIN" -#: gatekeeper/forms.py:31 gatekeeper/forms.py:164 +#: gatekeeper/forms.py:32 gatekeeper/forms.py:166 msgid "" "Enter a 6-digit PIN generated by your authenticator app to validate the " "secret." @@ -1303,193 +1332,227 @@ msgstr "" "Geben Sie eine 6-stellige PIN ein, die von Ihrer Authenticator-App generiert " "wurde, um das Geheimnis zu validieren." -#: gatekeeper/forms.py:38 templates/accounts/login.html:14 -#: templates/gatekeeper/gatekeeper_list.html:61 +#: gatekeeper/forms.py:39 templates/accounts/login.html:14 +#: templates/gatekeeper/gatekeeper_list.html:62 #: templates/user_manager/list.html:8 user_manager/forms.py:13 #: vpn_invite/forms.py:281 msgid "Username" msgstr "Benutzername" -#: gatekeeper/forms.py:39 gatekeeper/forms.py:344 -#: templates/gatekeeper/gatekeeper_list.html:62 -#: templates/gatekeeper/gatekeeper_list.html:220 +#: gatekeeper/forms.py:40 gatekeeper/forms.py:407 +#: templates/gatekeeper/gatekeeper_list.html:63 +#: templates/gatekeeper/gatekeeper_list.html:221 #: templates/wireguard/peer_list/peer_preview_modal.html:103 msgid "Email" msgstr "E‑Mail" -#: gatekeeper/forms.py:40 +#: gatekeeper/forms.py:41 msgid "TOTP Secret" msgstr "TOTP-Geheimnis" -#: gatekeeper/forms.py:87 +#: gatekeeper/forms.py:88 msgid "Password is required." msgstr "Passwort ist erforderlich." -#: gatekeeper/forms.py:90 user_manager/forms.py:127 +#: gatekeeper/forms.py:91 user_manager/forms.py:127 msgid "Password must be at least 8 characters long." msgstr "Das Passwort muss mindestens 8 Zeichen lang sein." -#: gatekeeper/forms.py:92 +#: gatekeeper/forms.py:93 msgid "Password must contain at least one lowercase letter." msgstr "Das Passwort muss mindestens einen Kleinbuchstaben enthalten." -#: gatekeeper/forms.py:94 +#: gatekeeper/forms.py:95 msgid "Password must contain at least one uppercase letter." msgstr "Das Passwort muss mindestens einen Großbuchstaben enthalten." -#: gatekeeper/forms.py:96 +#: gatekeeper/forms.py:97 msgid "Password must contain at least one number." msgstr "Das Passwort muss mindestens eine Zahl enthalten." -#: gatekeeper/forms.py:98 +#: gatekeeper/forms.py:99 msgid "Passwords do not match." msgstr "Passwörter stimmen nicht überein." -#: gatekeeper/forms.py:103 gatekeeper/forms.py:249 +#: gatekeeper/forms.py:104 gatekeeper/forms.py:276 msgid "Please provide a PIN to validate the TOTP secret." msgstr "Bitte geben Sie eine PIN an, um das TOTP-Geheimnis zu validieren." -#: gatekeeper/forms.py:108 gatekeeper/forms.py:254 +#: gatekeeper/forms.py:109 gatekeeper/forms.py:281 msgid "Invalid TOTP PIN." msgstr "Ungültige TOTP-PIN." -#: gatekeeper/forms.py:110 gatekeeper/forms.py:256 +#: gatekeeper/forms.py:111 gatekeeper/forms.py:283 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:130 templates/gatekeeper/gatekeeper_list.html:120 +#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121 msgid "Group Name" msgstr "Gruppenname" -#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121 +#: gatekeeper/forms.py:132 templates/gatekeeper/gatekeeper_list.html:122 msgid "Members" msgstr "Mitglieder" +#: gatekeeper/forms.py:169 +#, fuzzy +#| msgid "Expiration" +msgid "Session Expiration" +msgstr "Ablauf" + #: gatekeeper/forms.py:175 +msgid "Unit" +msgstr "" + +#: gatekeeper/forms.py:176 +msgid "Hour(s)" +msgstr "" + +#: gatekeeper/forms.py:176 +msgid "Day(s)" +msgstr "" + +#: gatekeeper/forms.py:189 msgid "Authentication Type" msgstr "Authentifizierungstyp" -#: gatekeeper/forms.py:176 +#: gatekeeper/forms.py:190 msgid "Global TOTP Secret" msgstr "Globales TOTP-Geheimnis" -#: gatekeeper/forms.py:177 +#: gatekeeper/forms.py:191 msgid "OIDC Provider URL" msgstr "OIDC-Anbieter-URL" -#: gatekeeper/forms.py:178 +#: gatekeeper/forms.py:192 msgid "OIDC Client ID" msgstr "OIDC-Client-ID" -#: gatekeeper/forms.py:179 +#: gatekeeper/forms.py:193 msgid "OIDC Client Secret" msgstr "OIDC-Client-Geheimnis" -#: gatekeeper/forms.py:230 +#: gatekeeper/forms.py:257 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:232 +#: gatekeeper/forms.py:259 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:234 +#: gatekeeper/forms.py:261 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:240 +#: gatekeeper/forms.py:267 msgid "Only one Local Password authentication method can be configured." msgstr "" "Es kann nur eine Authentifizierungsmethode mit lokalem Passwort konfiguriert " "werden." -#: gatekeeper/forms.py:243 +#: gatekeeper/forms.py:270 msgid "OIDC fields must be empty for TOTP authentication." msgstr "OIDC-Felder müssen für die TOTP-Authentifizierung leer sein." -#: gatekeeper/forms.py:245 +#: gatekeeper/forms.py:272 msgid "TOTP secret is required for TOTP authentication." msgstr "Das TOTP-Geheimnis ist für die TOTP-Authentifizierung erforderlich." -#: gatekeeper/forms.py:259 +#: gatekeeper/forms.py:285 +msgid "" +"OIDC authentication is temporarily unavailable and will be available soon." +msgstr "" + +#: gatekeeper/forms.py:287 msgid "TOTP secret must be empty for OIDC authentication." msgstr "Das TOTP-Geheimnis muss für die OIDC-Authentifizierung leer sein." -#: gatekeeper/forms.py:261 +#: gatekeeper/forms.py:289 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:270 gatekeeper/forms.py:312 gatekeeper/forms.py:343 +#: gatekeeper/forms.py:314 gatekeeper/forms.py:375 gatekeeper/forms.py:406 msgid "Authentication Method" msgstr "Authentifizierungsmethode" -#: gatekeeper/forms.py:272 templates/gatekeeper/gatekeeper_list.html:273 +#: gatekeeper/forms.py:316 templates/gatekeeper/gatekeeper_list.html:274 msgid "Prefix Length" msgstr "Präfixlänge" -#: gatekeeper/forms.py:273 templates/firewall/firewall_rule_list.html:47 +#: gatekeeper/forms.py:317 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 -#: templates/gatekeeper/gatekeeper_list.html:274 +#: templates/gatekeeper/gatekeeper_list.html:275 msgid "Action" msgstr "Aktion" -#: gatekeeper/forms.py:313 templates/gatekeeper/gatekeeper_list.html:237 +#: gatekeeper/forms.py:332 +#, python-format +msgid "Prefix length for IPv%(version)d must be between 0 and %(max)d." +msgstr "" + +#: gatekeeper/forms.py:376 templates/gatekeeper/gatekeeper_list.html:238 msgid "Domain" msgstr "Domäne" -#: gatekeeper/models.py:10 +#: gatekeeper/models.py:27 msgid "Local Password" msgstr "Lokales Passwort" -#: gatekeeper/models.py:11 +#: gatekeeper/models.py:28 msgid "One-Time Password (TOTP)" msgstr "Einmalpasswort (TOTP)" -#: gatekeeper/models.py:12 +#: gatekeeper/models.py:29 msgid "OpenID Connect (OIDC)" msgstr "OpenID Connect (OIDC)" -#: gatekeeper/models.py:13 +#: gatekeeper/models.py:30 msgid "IP Address List" msgstr "IP-Adressliste" -#: gatekeeper/models.py:17 +#: gatekeeper/models.py:34 msgid "Shared/global TOTP secret key" msgstr "Gemeinsamer/globaler TOTP-Geheimschlüssel" -#: gatekeeper/models.py:68 +#: gatekeeper/models.py:39 +#, fuzzy +#| msgid "Expiration (minutes)" +msgid "Session expiration time in minutes" +msgstr "Ablauf (Minuten)" + +#: gatekeeper/models.py:96 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:69 +#: gatekeeper/models.py:97 msgid "Per-user TOTP secret key" msgstr "Benutzerspezifischer TOTP-Geheimschlüssel" -#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:286 +#: gatekeeper/models.py:142 templates/gatekeeper/gatekeeper_list.html:287 msgid "Allow" msgstr "Zulassen" -#: gatekeeper/views.py:54 +#: gatekeeper/views.py:58 msgid "Edit Gatekeeper User" msgstr "Gatekeeper-Benutzer bearbeiten" -#: gatekeeper/views.py:57 +#: gatekeeper/views.py:61 msgid "Create Gatekeeper User" msgstr "Gatekeeper-Benutzer erstellen" -#: gatekeeper/views.py:64 +#: gatekeeper/views.py:68 msgid "Gatekeeper User saved successfully." msgstr "Gatekeeper-Benutzer erfolgreich gespeichert." -#: gatekeeper/views.py:69 +#: gatekeeper/views.py:73 msgid "" "\n" "

Gatekeeper User

\n" @@ -1513,76 +1576,101 @@ msgid "" msgstr "" "\n" "

Gatekeeper-Benutzer

\n" -"

Gatekeeper-Benutzer werden zur Authentifizierung gegenüber geschützten " -"Anwendungen verwendet, die von diesem Gateway verwaltet werden.

\n" +"

Gatekeeper-Benutzer werden zur Authentifizierung gegenüber " +"geschützten Anwendungen verwendet, die von diesem Gateway verwaltet werden.\n" "\n" "

Passwort
\n" -"

Erforderlich beim Erstellen eines Benutzers. Lassen Sie beim Bearbeiten beide Passwortfelder " -"leer, um das aktuelle Passwort beizubehalten.\n" -" Passwörter werden mit Argon2id-Hashing gespeichert.

\n" +"

Erforderlich beim Erstellen eines Benutzers. Lassen Sie beim " +"Bearbeiten beide Passwortfelder leer, um das aktuelle Passwort " +"beizubehalten.\n" +" Passwörter werden mit Argon2id-Hashing gespeichert." +"

\n" "\n" "
TOTP-Geheimnis
\n" -"

Optionales benutzerspezifisches TOTP-Geheimnis. Wenn festgelegt, authentifiziert sich dieser Benutzer " -"mit seinem eigenen Geheimnis anstelle des\n" -" globalen TOTP-Geheimnisses, das in der Authentifizierungsmethode konfiguriert ist. Verwenden Sie die " -"Schaltflächen unter dem Feld, um ein\n" -" zufälliges Geheimnis zu generieren und den QR-Code mit Ihrer Authentifizierungs-App zu scannen. " -"Validieren Sie das Geheimnis durch Eingabe der aktuellen\n" +"

Optionales benutzerspezifisches TOTP-Geheimnis. Wenn festgelegt, " +"authentifiziert sich dieser Benutzer mit seinem eigenen Geheimnis anstelle " +"des\n" +" globalen TOTP-Geheimnisses, das in der Authentifizierungsmethode " +"konfiguriert ist. Verwenden Sie die Schaltflächen unter dem Feld, um ein\n" +" zufälliges Geheimnis zu generieren und den QR-Code mit Ihrer " +"Authentifizierungs-App zu scannen. Validieren Sie das Geheimnis durch " +"Eingabe der aktuellen\n" " 6-stelligen PIN vor dem Speichern.

\n" " " -#: gatekeeper/views.py:106 +#: gatekeeper/views.py:110 msgid "Gatekeeper User deleted successfully." msgstr "Gatekeeper-Benutzer erfolgreich gelöscht." -#: gatekeeper/views.py:111 +#: gatekeeper/views.py:115 msgid "Delete Gatekeeper User" msgstr "Gatekeeper-Benutzer löschen" -#: gatekeeper/views.py:113 +#: gatekeeper/views.py:117 #, python-format msgid "Are you sure you want to delete the user \"%(username)s\"?" msgstr "" "Sind Sie sicher, dass Sie den Benutzer \"%(username)s\" löschen möchten?" -#: gatekeeper/views.py:127 +#: gatekeeper/views.py:131 msgid "Edit Gatekeeper Group" msgstr "Gatekeeper-Gruppe bearbeiten" -#: gatekeeper/views.py:130 +#: gatekeeper/views.py:134 msgid "Create Gatekeeper Group" msgstr "Gatekeeper-Gruppe erstellen" -#: gatekeeper/views.py:137 +#: gatekeeper/views.py:141 msgid "Gatekeeper Group saved successfully." msgstr "Gatekeeper-Gruppe erfolgreich gespeichert." -#: gatekeeper/views.py:159 +#: gatekeeper/views.py:163 msgid "Gatekeeper Group deleted successfully." msgstr "Gatekeeper-Gruppe erfolgreich gelöscht." -#: gatekeeper/views.py:164 +#: gatekeeper/views.py:168 msgid "Delete Gatekeeper Group" msgstr "Gatekeeper-Gruppe löschen" -#: gatekeeper/views.py:166 +#: gatekeeper/views.py:170 #, python-format msgid "Are you sure you want to delete the group \"%(name)s\"?" msgstr "Sind Sie sicher, dass Sie die Gruppe \"%(name)s\" löschen möchten?" -#: gatekeeper/views.py:180 +#: gatekeeper/views.py:184 msgid "Edit Authentication Method" msgstr "Authentifizierungsmethode bearbeiten" -#: gatekeeper/views.py:183 +#: gatekeeper/views.py:187 msgid "Create Authentication Method" msgstr "Authentifizierungsmethode erstellen" -#: gatekeeper/views.py:190 +#: gatekeeper/views.py:194 msgid "Authentication Method saved successfully." msgstr "Authentifizierungsmethode erfolgreich gespeichert." -#: gatekeeper/views.py:195 +#: gatekeeper/views.py:199 +#, fuzzy +#| msgid "" +#| "\n" +#| "

Authentication Types

\n" +#| "

Select how users will authenticate through this method.

\n" +#| " \n" +#| "
Local Password
\n" +#| "

Users will authenticate using a standard username and password " +#| "stored locally. Only one of this type can be created.

\n" +#| " \n" +#| "
OIDC (OpenID Connect)
\n" +#| "

Users will authenticate via an external identity provider " +#| "(like Keycloak, Google, or Authelia). Requires Provider URL, Client ID, " +#| "and Client Secret.

\n" +#| " \n" +#| "
TOTP (Time-Based One-Time Password)
\n" +#| "

Users will need to enter a rotating token from an " +#| "authenticator app. If a user does not have a personal TOTP configured, " +#| "the Global TOTP Secret will be used instead.

\n" +#| " " msgid "" "\n" "

Authentication Types

\n" @@ -1594,8 +1682,8 @@ msgid "" " \n" "
OIDC (OpenID Connect)
\n" "

Users will authenticate via an external identity provider (like " -"Keycloak, Google, or Authelia). Requires Provider URL, Client ID, and Client " -"Secret.

\n" +"Keycloak or Google). Requires Provider URL, Client ID, and Client Secret.\n" " \n" "
TOTP (Time-Based One-Time Password)
\n" "

Users will need to enter a rotating token from an authenticator " @@ -1605,103 +1693,115 @@ msgid "" msgstr "" "\n" "

Authentifizierungstypen

\n" -"

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

\n" +"

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

\n" "\n" "
Lokales Passwort
\n" -"

Benutzer authentifizieren sich mit einem standardmäßigen Benutzernamen und Passwort, " -"das lokal gespeichert ist. Es kann nur eine davon erstellt werden.

\n" +"

Benutzer authentifizieren sich mit einem standardmäßigen " +"Benutzernamen und Passwort, das lokal gespeichert ist. Es kann nur eine " +"davon erstellt werden.

\n" "\n" "
OIDC (OpenID Connect)
\n" -"

Benutzer authentifizieren sich über einen externen Identitätsanbieter " -"(wie Keycloak, Google oder Authelia). Erfordert Provider-URL, Client-ID und Client-Secret.

\n" +"

Benutzer authentifizieren sich über einen externen " +"Identitätsanbieter (wie Keycloak, Google oder Authelia). Erfordert Provider-" +"URL, Client-ID und Client-Secret.

\n" "\n" "
TOTP (Zeitbasiertes Einmalpasswort)
\n" -"

Benutzer müssen ein rotierendes Token aus einer Authentifizierungs-App eingeben. " -"Wenn ein Benutzer kein persönliches TOTP konfiguriert hat, wird stattdessen das globale TOTP-Geheimnis verwendet.

\n" +"

Benutzer müssen ein rotierendes Token aus einer " +"Authentifizierungs-App eingeben. Wenn ein Benutzer kein persönliches TOTP " +"konfiguriert hat, wird stattdessen das globale TOTP-Geheimnis verwendet.

\n" " " -#: gatekeeper/views.py:230 +#: gatekeeper/views.py:237 +#, python-format +msgid "" +"Cannot delete authentication method \"%(method)s\" because it is used by the " +"following policies: %(policies)s." +msgstr "" + +#: gatekeeper/views.py:243 msgid "Authentication Method deleted successfully." msgstr "Authentifizierungsmethode erfolgreich gelöscht." -#: gatekeeper/views.py:235 +#: gatekeeper/views.py:248 msgid "Delete Authentication Method" msgstr "Authentifizierungsmethode löschen" -#: gatekeeper/views.py:237 +#: gatekeeper/views.py:250 #, python-format msgid "Are you sure you want to delete the authentication method \"%(name)s\"?" msgstr "" "Sind Sie sicher, dass Sie die Authentifizierungsmethode \"%(name)s\" löschen " "möchten?" -#: gatekeeper/views.py:287 +#: gatekeeper/views.py:303 msgid "Edit Allowed Domain" msgstr "Zulässige Domäne bearbeiten" -#: gatekeeper/views.py:290 templates/gatekeeper/gatekeeper_list.html:202 +#: gatekeeper/views.py:306 templates/gatekeeper/gatekeeper_list.html:203 msgid "Add Allowed Domain" msgstr "Zulässige Domäne hinzufügen" -#: gatekeeper/views.py:297 +#: gatekeeper/views.py:313 msgid "Allowed Domain saved successfully." msgstr "Zulässige Domäne erfolgreich gespeichert." -#: gatekeeper/views.py:319 +#: gatekeeper/views.py:335 msgid "Allowed Domain deleted successfully." msgstr "Zulässige Domäne erfolgreich gelöscht." -#: gatekeeper/views.py:324 +#: gatekeeper/views.py:340 msgid "Delete Allowed Domain" msgstr "Zulässige Domäne löschen" -#: gatekeeper/views.py:326 +#: gatekeeper/views.py:342 #, python-format msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?" msgstr "" "Sind Sie sicher, dass Sie die zulässige Domäne \"%(domain)s\" löschen " "möchten?" -#: gatekeeper/views.py:340 +#: gatekeeper/views.py:356 msgid "Edit Allowed Email" msgstr "Zulässige E-Mail bearbeiten" -#: gatekeeper/views.py:343 templates/gatekeeper/gatekeeper_list.html:199 +#: gatekeeper/views.py:359 templates/gatekeeper/gatekeeper_list.html:200 msgid "Add Allowed Email" msgstr "Zulässige E-Mail hinzufügen" -#: gatekeeper/views.py:350 +#: gatekeeper/views.py:366 msgid "Allowed Email saved successfully." msgstr "Zulässige E-Mail erfolgreich gespeichert." -#: gatekeeper/views.py:372 +#: gatekeeper/views.py:388 msgid "Allowed Email deleted successfully." msgstr "Zulässige E-Mail erfolgreich gelöscht." -#: gatekeeper/views.py:377 +#: gatekeeper/views.py:393 msgid "Delete Allowed Email" msgstr "Zulässige E-Mail löschen" -#: gatekeeper/views.py:379 +#: gatekeeper/views.py:395 #, python-format msgid "Are you sure you want to delete the allowed email \"%(email)s\"?" msgstr "" "Sind Sie sicher, dass Sie die zulässige E-Mail \"%(email)s\" löschen möchten?" -#: gatekeeper/views.py:393 +#: gatekeeper/views.py:409 msgid "Edit IP Address" msgstr "IP-Adresse bearbeiten" -#: gatekeeper/views.py:396 templates/gatekeeper/gatekeeper_list.html:263 +#: gatekeeper/views.py:412 templates/gatekeeper/gatekeeper_list.html:264 #: templates/wireguard/wireguard_manage_peer.html:171 msgid "Add IP Address" msgstr "IP‑Adresse hinzufügen" -#: gatekeeper/views.py:403 +#: gatekeeper/views.py:419 msgid "IP Address saved successfully." msgstr "IP-Adresse erfolgreich gespeichert." -#: gatekeeper/views.py:408 +#: gatekeeper/views.py:424 msgid "" "\n" "
IP Address List
\n" @@ -1748,25 +1848,26 @@ msgstr "" "„Büronetzwerk“, „Blockierter Angreifer“).

\n" " " -#: gatekeeper/views.py:444 +#: gatekeeper/views.py:460 msgid "IP Address deleted successfully." msgstr "IP-Adresse erfolgreich gelöscht." -#: gatekeeper/views.py:449 +#: gatekeeper/views.py:465 msgid "Delete IP Address" msgstr "IP-Adresse löschen" -#: gatekeeper/views.py:451 +#: gatekeeper/views.py:467 #, python-format msgid "Are you sure you want to delete the IP address \"%(address)s\"?" msgstr "" "Sind Sie sicher, dass Sie die IP-Adresse \"%(address)s\" löschen möchten?" -#: intl_tools/forms.py:11 templates/accounts/login.html:36 +#: intl_tools/forms.py:11 msgid "Language" msgstr "Sprache" -#: intl_tools/forms.py:24 templates/template_parts/base_navbar.html:14 +#: intl_tools/forms.py:24 templates/accounts/login.html:35 +#: templates/template_parts/base_navbar.html:19 msgid "Change Language" msgstr "Sprache ändern" @@ -2102,6 +2203,11 @@ msgstr "" msgid "Login" msgstr "Anmelden" +#: templates/accounts/login.html:40 +#: templates/template_parts/base_navbar.html:14 +msgid "Toggle Dark Mode" +msgstr "" + #: templates/accounts/logout.html:11 msgid "You have been successfully logged out." msgstr "Sie wurden erfolgreich abgemeldet." @@ -2124,8 +2230,8 @@ msgid "In" msgstr "Eingehend" #: templates/api_v2/api_documentation.html:49 -#: templates/gatekeeper/gatekeeper_list.html:166 -#: templates/gatekeeper/gatekeeper_list.html:211 +#: templates/gatekeeper/gatekeeper_list.html:167 +#: templates/gatekeeper/gatekeeper_list.html:212 #: templates/wireguard/apply_route_template.html:27 msgid "Type" msgstr "Typ" @@ -2135,13 +2241,13 @@ msgid "Required" msgstr "Erforderlich" #: templates/api_v2/api_documentation.html:62 -#: templates/gatekeeper/gatekeeper_list.html:75 +#: templates/gatekeeper/gatekeeper_list.html:76 #: templates/scheduler/scheduleprofile_form.html:175 msgid "Yes" msgstr "Ja" #: templates/api_v2/api_documentation.html:64 -#: templates/gatekeeper/gatekeeper_list.html:77 +#: templates/gatekeeper/gatekeeper_list.html:78 #: templates/scheduler/scheduleprofile_form.html:177 msgid "No" msgstr "Nein" @@ -2180,17 +2286,17 @@ msgid "Disabled" msgstr "Deaktiviert" #: templates/api_v2/list.html:68 -#: templates/app_gateway/app_gateway_list.html:154 -#: templates/app_gateway/application_details.html:71 -#: templates/app_gateway/application_details.html:121 +#: templates/app_gateway/app_gateway_list.html:162 +#: templates/app_gateway/application_details.html:99 +#: templates/app_gateway/application_details.html:150 #: templates/cluster/workers_list.html:77 #: templates/dns/static_host_list.html:74 -#: templates/gatekeeper/gatekeeper_list.html:89 -#: templates/gatekeeper/gatekeeper_list.html:132 -#: templates/gatekeeper/gatekeeper_list.html:177 -#: templates/gatekeeper/gatekeeper_list.html:225 -#: templates/gatekeeper/gatekeeper_list.html:242 -#: templates/gatekeeper/gatekeeper_list.html:294 +#: templates/gatekeeper/gatekeeper_list.html:90 +#: templates/gatekeeper/gatekeeper_list.html:133 +#: templates/gatekeeper/gatekeeper_list.html:178 +#: templates/gatekeeper/gatekeeper_list.html:226 +#: templates/gatekeeper/gatekeeper_list.html:243 +#: templates/gatekeeper/gatekeeper_list.html:295 #: templates/routing_templates/list.html:29 #: templates/scheduler/scheduleprofile_form.html:123 #: templates/scheduler/scheduleprofile_list.html:25 @@ -2223,78 +2329,83 @@ msgstr "Authentifizierung mit bestimmten Methoden oder Gruppen anfordern." msgid "Deny all access." msgstr "Gesamten Zugriff verweigern." -#: templates/app_gateway/app_gateway_list.html:12 -#: templates/app_gateway/app_gateway_list.html:30 +#: templates/app_gateway/app_gateway_list.html:13 +#: templates/app_gateway/app_gateway_list.html:31 msgid "Applications" msgstr "Anwendungen" -#: templates/app_gateway/app_gateway_list.html:18 +#: templates/app_gateway/app_gateway_list.html:19 msgid "Access Policies" msgstr "Zugriffsrichtlinien" -#: templates/app_gateway/app_gateway_list.html:34 -#: templates/app_gateway/app_gateway_list.html:60 +#: templates/app_gateway/app_gateway_list.html:35 +#: templates/app_gateway/app_gateway_list.html:68 #: templates/dns/static_host_list.html:70 msgid "Hosts" msgstr "Hosts" -#: templates/app_gateway/app_gateway_list.html:42 +#: templates/app_gateway/app_gateway_list.html:44 +#: templates/app_gateway/app_gateway_list.html:50 msgid "Export Configuration" msgstr "Konfiguration exportieren" -#: templates/app_gateway/app_gateway_list.html:46 +#: templates/app_gateway/app_gateway_list.html:49 +msgid "Export is not available because Caddy is not enabled." +msgstr "" + +#: templates/app_gateway/app_gateway_list.html:54 msgid "Add Application" msgstr "Anwendung hinzufügen" -#: templates/app_gateway/app_gateway_list.html:61 +#: templates/app_gateway/app_gateway_list.html:69 msgid "Routes" msgstr "Routen" -#: templates/app_gateway/app_gateway_list.html:80 -#: templates/app_gateway/application_details.html:39 +#: templates/app_gateway/app_gateway_list.html:88 +#: templates/app_gateway/application_details.html:47 msgid "Default (Deny)" msgstr "Standard (Verweigern)" -#: templates/app_gateway/app_gateway_list.html:90 +#: templates/app_gateway/app_gateway_list.html:98 msgid "No Applications found." msgstr "Keine Anwendungen gefunden." -#: templates/app_gateway/app_gateway_list.html:102 +#: templates/app_gateway/app_gateway_list.html:110 msgid "Application" msgstr "Anwendung" -#: templates/app_gateway/app_gateway_list.html:121 +#: templates/app_gateway/app_gateway_list.html:129 msgid "No Hosts found." msgstr "Keine Hosts gefunden." -#: templates/app_gateway/app_gateway_list.html:129 +#: templates/app_gateway/app_gateway_list.html:137 msgid "Add Access Policy" msgstr "Zugriffsrichtlinie hinzufügen" -#: templates/app_gateway/app_gateway_list.html:140 -#: templates/gatekeeper/gatekeeper_list.html:43 -#: templates/gatekeeper/gatekeeper_list.html:64 +#: templates/app_gateway/app_gateway_list.html:148 +#: templates/gatekeeper/gatekeeper_list.html:44 +#: templates/gatekeeper/gatekeeper_list.html:65 msgid "Groups" msgstr "Gruppen" -#: templates/app_gateway/app_gateway_list.html:141 +#: templates/app_gateway/app_gateway_list.html:149 msgid "Auth Methods" msgstr "Authentifizierungsmethoden" -#: templates/app_gateway/app_gateway_list.html:142 -#: templates/app_gateway/application_details.html:62 -#: templates/app_gateway/application_details.html:109 -#: templates/gatekeeper/gatekeeper_list.html:65 -#: templates/gatekeeper/gatekeeper_list.html:122 -#: templates/gatekeeper/gatekeeper_list.html:167 -#: templates/gatekeeper/gatekeeper_list.html:214 +#: templates/app_gateway/app_gateway_list.html:150 +#: templates/app_gateway/application_details.html:76 +#: templates/app_gateway/application_details.html:138 +#: templates/gatekeeper/gatekeeper_list.html:66 +#: templates/gatekeeper/gatekeeper_list.html:123 +#: templates/gatekeeper/gatekeeper_list.html:168 +#: templates/gatekeeper/gatekeeper_list.html:215 #: templates/scheduler/scheduleprofile_form.html:111 #: templates/scheduler/scheduleprofile_list.html:15 #: templates/wireguard/apply_route_template.html:28 msgid "Actions" msgstr "Aktionen" -#: templates/app_gateway/app_gateway_list.html:169 +#: templates/app_gateway/app_gateway_list.html:177 msgid "No Access Policies found." msgstr "Keine Zugriffsrichtlinien gefunden." @@ -2303,34 +2414,79 @@ msgstr "Keine Zugriffsrichtlinien gefunden." msgid "Back to List" msgstr "Zurück zur Liste" -#: templates/app_gateway/application_details.html:41 +#: templates/app_gateway/application_details.html:15 +#: templates/app_gateway/application_details.html:59 +#: templates/app_gateway/application_details.html:91 +#: templates/app_gateway/application_details.html:94 +msgid "This application cannot be modified" +msgstr "" + +#: templates/app_gateway/application_details.html:18 +#, fuzzy +#| msgid "Application Route deleted successfully." +msgid "This application cannot be deleted" +msgstr "Anwendungsroute erfolgreich gelöscht." + +#: templates/app_gateway/application_details.html:49 msgid "Set Policy" msgstr "Richtlinie festlegen" -#: templates/app_gateway/application_details.html:48 +#: templates/app_gateway/application_details.html:56 msgid "Application Hosts" msgstr "Anwendungshosts" -#: templates/app_gateway/application_details.html:52 +#: templates/app_gateway/application_details.html:60 +#: templates/app_gateway/application_details.html:65 msgid "Add Host" msgstr "Host hinzufügen" -#: templates/app_gateway/application_details.html:86 +#: templates/app_gateway/application_details.html:115 msgid "No Hosts configured for this application." msgstr "Keine Hosts für diese Anwendung konfiguriert." -#: templates/app_gateway/application_details.html:92 +#: templates/app_gateway/application_details.html:121 msgid "Application Routes" msgstr "Anwendungsrouten" -#: templates/app_gateway/application_details.html:96 +#: templates/app_gateway/application_details.html:125 msgid "Add Route" msgstr "Route hinzufügen" -#: templates/app_gateway/application_details.html:136 +#: templates/app_gateway/application_details.html:165 msgid "No Routes configured for this application." msgstr "Keine Routen für diese Anwendung konfiguriert." +#: templates/app_gateway/caddy_disabled_alert.html:5 +#, fuzzy +#| msgid "Cluster is not enabled" +msgid "Caddy is not enabled" +msgstr "Cluster ist nicht aktiviert" + +#: templates/app_gateway/caddy_disabled_alert.html:6 +msgid "" +"The App Gateway and Gatekeeper modules require Caddy and the auth-gateway " +"container to be running. Please start the application using docker-" +"compose-caddy.yml." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:7 +msgid "" +"Depending on your custom firewall or proxy rules, the way you access " +"wireguard_webadmin may change slightly after enabling Caddy." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:8 +msgid "" +"Switching to Caddy is simple, but it may require a bit of time and attention " +"to review your current setup." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:9 +#, fuzzy +#| msgid "For more information, please visit:" +msgid "For more information, see the discussion:" +msgstr "Für weitere Informationen besuchen Sie bitte:" + #: templates/cluster/workers_list.html:9 templates/dns/static_host_list.html:72 #: templates/scheduler/scheduleprofile_form.html:82 #: templates/template_parts/base_sidebar.html:13 vpn_invite/forms.py:78 @@ -2841,86 +2997,93 @@ msgstr "" msgid "Create Port forwarding Rule" msgstr "Port‑Weiterleitungsregel erstellen" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:63 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:67 #: templates/gatekeeper/gatekeeper_user_form.html:43 msgid "View QR Code" msgstr "QR-Code anzeigen" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:64 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:68 #: templates/gatekeeper/gatekeeper_user_form.html:44 msgid "Generate TOTP Secret" msgstr "TOTP-Geheimnis generieren" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:93 -#: templates/gatekeeper/gatekeeper_user_form.html:73 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:105 +#: templates/gatekeeper/gatekeeper_user_form.html:81 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:18 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:127 +#: templates/gatekeeper/gatekeeper_user_form.html:103 +#, fuzzy +#| msgid "Error creating invite." +msgid "Error generating QR code." +msgstr "Fehler beim Erstellen der Einladung." + +#: templates/gatekeeper/gatekeeper_list.html:19 msgid "Gatekeeper Users" msgstr "Gatekeeper-Benutzer" -#: templates/gatekeeper/gatekeeper_list.html:24 +#: templates/gatekeeper/gatekeeper_list.html:25 msgid "Allowed Emails & Domains" msgstr "Zulässige E-Mails und Domänen" -#: templates/gatekeeper/gatekeeper_list.html:30 +#: templates/gatekeeper/gatekeeper_list.html:31 msgid "IP Addresses" msgstr "IP-Adressen" -#: templates/gatekeeper/gatekeeper_list.html:40 +#: templates/gatekeeper/gatekeeper_list.html:41 #: templates/user_manager/peer_group_list.html:11 msgid "Users" msgstr "Benutzer" -#: templates/gatekeeper/gatekeeper_list.html:51 +#: templates/gatekeeper/gatekeeper_list.html:52 #: templates/user_manager/list_buttons.html:2 user_manager/views.py:111 msgid "Add User" msgstr "Benutzer hinzufügen" -#: templates/gatekeeper/gatekeeper_list.html:63 +#: templates/gatekeeper/gatekeeper_list.html:64 msgid "TOTP" msgstr "TOTP" -#: templates/gatekeeper/gatekeeper_list.html:104 +#: templates/gatekeeper/gatekeeper_list.html:105 msgid "No Gatekeeper Users found." msgstr "Keine Gatekeeper-Benutzer gefunden." -#: templates/gatekeeper/gatekeeper_list.html:111 +#: templates/gatekeeper/gatekeeper_list.html:112 msgid "Add Group" msgstr "Gruppe hinzufügen" -#: templates/gatekeeper/gatekeeper_list.html:147 +#: templates/gatekeeper/gatekeeper_list.html:148 msgid "No Gatekeeper Groups found." msgstr "Keine Gatekeeper-Gruppen gefunden." -#: templates/gatekeeper/gatekeeper_list.html:156 +#: templates/gatekeeper/gatekeeper_list.html:157 msgid "Add Auth Method" msgstr "Authentifizierungsmethode hinzufügen" -#: templates/gatekeeper/gatekeeper_list.html:192 +#: templates/gatekeeper/gatekeeper_list.html:193 msgid "No Authentication Methods found." msgstr "Keine Authentifizierungsmethoden gefunden." -#: templates/gatekeeper/gatekeeper_list.html:212 +#: templates/gatekeeper/gatekeeper_list.html:213 msgid "Identity" msgstr "Identität" -#: templates/gatekeeper/gatekeeper_list.html:213 -#: templates/gatekeeper/gatekeeper_list.html:275 +#: templates/gatekeeper/gatekeeper_list.html:214 +#: templates/gatekeeper/gatekeeper_list.html:276 msgid "Auth Method" msgstr "Authentifizierungsmethode" -#: templates/gatekeeper/gatekeeper_list.html:257 +#: templates/gatekeeper/gatekeeper_list.html:258 msgid "No Allowed Emails or Domains found." msgstr "Keine zulässigen E-Mails oder Domänen gefunden." -#: templates/gatekeeper/gatekeeper_list.html:276 +#: templates/gatekeeper/gatekeeper_list.html:277 msgid "Manage" msgstr "Verwalten" -#: templates/gatekeeper/gatekeeper_list.html:309 +#: templates/gatekeeper/gatekeeper_list.html:310 msgid "No IP Addresses found." msgstr "Keine IP-Adressen gefunden." @@ -3543,6 +3706,10 @@ msgstr "Peer löschen" msgid "Please type \\\"delete\\\" to remove peer configuration." msgstr "Geben Sie \\\"delete\\\" ein, um die Peer‑Konfiguration zu entfernen." +#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15 +msgid "Display Name" +msgstr "Anzeigename" + #: templates/wireguard/wireguard_manage_server.html:27 msgid "" "\n" @@ -4542,5 +4709,25 @@ msgstr "" "Keine Schnittstellen gefunden|Es wurden keine WireGuard‑Schnittstellen " "gefunden." +#~ msgid "This is a reserved system name." +#~ msgstr "Dies ist ein reservierter Systemname." + +#~ msgid "" +#~ "TOTP must be combined with a Local Password or OpenID Connect " +#~ "authentication method." +#~ msgstr "" +#~ "TOTP muss mit einer lokalen Passwort- oder OpenID Connect-" +#~ "Authentifizierungsmethode kombiniert werden." + +#~ msgid "Route identifier, used in export (e.g.: public_area)" +#~ msgstr "Routen-Identifikator, verwendet im Export (z.B.: public_area)" + +#~ msgid "" +#~ "Caddy is not active. Configuration files were exported for debugging " +#~ "purposes." +#~ msgstr "" +#~ "Caddy ist nicht aktiv. Konfigurationsdateien wurden zu Debugging-Zwecken " +#~ "exportiert." + #~ msgid "Global TOTP Before Authentication" #~ msgstr "Globales TOTP vor der Authentifizierung" diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo index 145e5d1410be4305d9c29c036d15c941d5106996..578a10f083f7fd4069a61683c3450d2ae73868c0 100644 GIT binary patch delta 17225 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 delta 19235 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 diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po index 25b85eb..62324d6 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-15 17:20-0300\n" +"POT-Creation-Date: 2026-03-18 10:58-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,17 +33,17 @@ msgstr "Volver" #: api_v2/forms.py:30 cluster/forms.py:28 dns/forms.py:69 dns/forms.py:129 #: routing_templates/forms.py:37 -#: templates/app_gateway/app_gateway_list.html:158 -#: templates/app_gateway/application_details.html:75 -#: templates/app_gateway/application_details.html:125 +#: templates/app_gateway/app_gateway_list.html:166 +#: templates/app_gateway/application_details.html:103 +#: templates/app_gateway/application_details.html:154 #: templates/firewall/manage_firewall_rule.html:382 #: templates/firewall/manage_redirect_rule.html:86 -#: templates/gatekeeper/gatekeeper_list.html:93 -#: templates/gatekeeper/gatekeeper_list.html:136 -#: templates/gatekeeper/gatekeeper_list.html:181 -#: templates/gatekeeper/gatekeeper_list.html:229 -#: templates/gatekeeper/gatekeeper_list.html:246 -#: templates/gatekeeper/gatekeeper_list.html:298 +#: templates/gatekeeper/gatekeeper_list.html:94 +#: templates/gatekeeper/gatekeeper_list.html:137 +#: templates/gatekeeper/gatekeeper_list.html:182 +#: templates/gatekeeper/gatekeeper_list.html:230 +#: templates/gatekeeper/gatekeeper_list.html:247 +#: templates/gatekeeper/gatekeeper_list.html:299 #: templates/scheduler/scheduleprofile_form.html:127 #: templates/scheduler/scheduleprofile_list.html:29 #: templates/wireguard/peer_list/peer_preview_modal.html:109 @@ -64,12 +64,12 @@ msgstr "" "¿Está seguro de que desea regenerar el token? El antiguo token dejará de " "funcionar inmediatamente." -#: api_v2/forms.py:63 app_gateway/forms.py:40 app_gateway/forms.py:92 -#: app_gateway/forms.py:136 app_gateway/forms.py:154 app_gateway/forms.py:237 -#: app_gateway/forms.py:278 cluster/forms.py:67 cluster/forms.py:124 -#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:70 -#: gatekeeper/forms.py:150 gatekeeper/forms.py:212 gatekeeper/forms.py:299 -#: gatekeeper/forms.py:329 gatekeeper/forms.py:360 +#: api_v2/forms.py:63 app_gateway/forms.py:41 app_gateway/forms.py:99 +#: app_gateway/forms.py:144 app_gateway/forms.py:162 app_gateway/forms.py:241 +#: app_gateway/forms.py:283 cluster/forms.py:67 cluster/forms.py:124 +#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:71 +#: gatekeeper/forms.py:152 gatekeeper/forms.py:239 gatekeeper/forms.py:362 +#: gatekeeper/forms.py:392 gatekeeper/forms.py:423 #: routing_templates/forms.py:71 scheduler/forms.py:102 #: templates/firewall/manage_firewall_rule.html:379 #: templates/firewall/manage_firewall_settings.html:59 @@ -82,14 +82,14 @@ msgstr "" msgid "Save" msgstr "Guardar" -#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:106 -#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:174 +#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:113 +#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:188 #: routing_templates/forms.py:28 templates/api_v2/api_documentation.html:47 -#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:58 -#: templates/app_gateway/app_gateway_list.html:138 -#: templates/app_gateway/application_details.html:26 +#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:66 +#: templates/app_gateway/app_gateway_list.html:146 +#: templates/app_gateway/application_details.html:35 #: templates/cluster/workers_list.html:8 templates/dns/static_host_list.html:68 -#: templates/gatekeeper/gatekeeper_list.html:165 +#: templates/gatekeeper/gatekeeper_list.html:166 #: templates/routing_templates/list.html:8 #: templates/scheduler/scheduleprofile_list.html:13 #: templates/user_manager/peer_group_list.html:8 @@ -127,16 +127,16 @@ msgid "Enabled" msgstr "Habilitado" #: api_v2/views.py:17 api_v2/views.py:27 api_v2/views.py:82 api_v2/views.py:106 -#: app_gateway/views.py:26 app_gateway/views.py:48 app_gateway/views.py:68 -#: app_gateway/views.py:112 app_gateway/views.py:135 app_gateway/views.py:170 -#: app_gateway/views.py:194 app_gateway/views.py:205 app_gateway/views.py:267 -#: app_gateway/views.py:293 app_gateway/views.py:328 app_gateway/views.py:354 -#: app_gateway/views.py:404 app_gateway/views.py:432 cluster/views.py:18 -#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:23 -#: gatekeeper/views.py:48 gatekeeper/views.py:98 gatekeeper/views.py:121 -#: gatekeeper/views.py:151 gatekeeper/views.py:174 gatekeeper/views.py:222 -#: gatekeeper/views.py:281 gatekeeper/views.py:311 gatekeeper/views.py:334 -#: gatekeeper/views.py:364 gatekeeper/views.py:387 gatekeeper/views.py:436 +#: app_gateway/views.py:28 app_gateway/views.py:52 app_gateway/views.py:83 +#: app_gateway/views.py:130 app_gateway/views.py:157 app_gateway/views.py:196 +#: app_gateway/views.py:224 app_gateway/views.py:235 app_gateway/views.py:297 +#: app_gateway/views.py:323 app_gateway/views.py:358 app_gateway/views.py:384 +#: app_gateway/views.py:434 app_gateway/views.py:462 cluster/views.py:18 +#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:25 +#: gatekeeper/views.py:52 gatekeeper/views.py:102 gatekeeper/views.py:125 +#: gatekeeper/views.py:155 gatekeeper/views.py:178 gatekeeper/views.py:226 +#: gatekeeper/views.py:297 gatekeeper/views.py:327 gatekeeper/views.py:350 +#: gatekeeper/views.py:380 gatekeeper/views.py:403 gatekeeper/views.py:452 #: templates/access_denied.html:9 msgid "Access Denied" msgstr "Acceso denegado" @@ -206,20 +206,19 @@ msgstr "¿Está seguro de que desea eliminar la clave de API \"%(name)s\"?" msgid "API Documentation" msgstr "Documentación de la API" -#: app_gateway/forms.py:19 templates/app_gateway/application_details.html:27 -#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15 -msgid "Display Name" -msgstr "Nombre para mostrar" - -#: app_gateway/forms.py:20 templates/app_gateway/app_gateway_list.html:59 -#: templates/app_gateway/application_details.html:28 +#: app_gateway/forms.py:19 templates/app_gateway/app_gateway_list.html:67 +#: templates/app_gateway/application_details.html:36 msgid "Upstream" msgstr "Upstream" -#: app_gateway/forms.py:41 app_gateway/forms.py:93 app_gateway/forms.py:137 -#: app_gateway/forms.py:155 app_gateway/forms.py:238 app_gateway/forms.py:279 -#: gatekeeper/forms.py:71 gatekeeper/forms.py:151 gatekeeper/forms.py:213 -#: gatekeeper/forms.py:300 gatekeeper/forms.py:330 gatekeeper/forms.py:361 +#: app_gateway/forms.py:20 +msgid "Allow invalid/self-signed certificate" +msgstr "" + +#: app_gateway/forms.py:42 app_gateway/forms.py:100 app_gateway/forms.py:145 +#: app_gateway/forms.py:163 app_gateway/forms.py:242 app_gateway/forms.py:284 +#: gatekeeper/forms.py:72 gatekeeper/forms.py:153 gatekeeper/forms.py:240 +#: gatekeeper/forms.py:363 gatekeeper/forms.py:393 gatekeeper/forms.py:424 #: scheduler/forms.py:103 #: templates/app_gateway/access_policy_type_select.html:50 #: templates/generic_delete_confirmation.html:19 @@ -227,61 +226,67 @@ msgstr "Upstream" msgid "Cancel" msgstr "Cancelar" -#: app_gateway/forms.py:54 -msgid "This is a reserved system name." -msgstr "Este es un nombre de sistema reservado." - -#: app_gateway/forms.py:58 +#: app_gateway/forms.py:55 msgid "This upstream is reserved by the system." msgstr "Este upstream está reservado por el sistema." -#: app_gateway/forms.py:61 +#: app_gateway/forms.py:58 msgid "Upstream URL cannot contain spaces." msgstr "La URL de upstream no puede contener espacios." -#: app_gateway/forms.py:67 +#: app_gateway/forms.py:64 msgid "Enter a valid upstream URL starting with http:// or https://" msgstr "" "Introduzca una URL de upstream válida que empiece por http:// o https://" -#: app_gateway/forms.py:77 cluster/forms.py:24 dns/forms.py:65 -#: templates/app_gateway/app_gateway_list.html:101 -#: templates/app_gateway/application_details.html:61 +#: app_gateway/forms.py:66 +msgid "" +"Upstream must be a bare host address with no path, query or fragment. Use " +"http://host or http://host:port" +msgstr "" + +#: app_gateway/forms.py:76 cluster/forms.py:24 dns/forms.py:65 +#: templates/app_gateway/app_gateway_list.html:109 +#: templates/app_gateway/application_details.html:75 #: templates/dns/static_host_list.html:17 #: templates/wireguard/server_detail.html:39 msgid "Hostname" msgstr "Nombre de host" -#: app_gateway/forms.py:107 templates/app_gateway/app_gateway_list.html:139 +#: app_gateway/forms.py:84 +msgid "Hostname contains invalid characters." +msgstr "" + +#: app_gateway/forms.py:114 templates/app_gateway/app_gateway_list.html:147 msgid "Policy Type" msgstr "Tipo de política" -#: app_gateway/forms.py:108 +#: app_gateway/forms.py:115 msgid "Allowed Groups" msgstr "Grupos permitidos" -#: app_gateway/forms.py:109 templates/gatekeeper/gatekeeper_list.html:12 +#: app_gateway/forms.py:116 templates/gatekeeper/gatekeeper_list.html:13 msgid "Authentication Methods" msgstr "Métodos de autenticación" -#: app_gateway/forms.py:188 +#: app_gateway/forms.py:196 msgid "Cannot select more than one Local Password authentication method." msgstr "" "No se puede seleccionar más de un método de autenticación de Contraseña " "Local." -#: app_gateway/forms.py:192 +#: app_gateway/forms.py:200 msgid "" "Cannot select more than one OpenID Connect (OIDC) authentication method." msgstr "" "No se puede seleccionar más de un método de autenticação OpenID Connect " "(OIDC)." -#: app_gateway/forms.py:196 +#: app_gateway/forms.py:204 msgid "Cannot select more than one TOTP authentication method." msgstr "No se puede seleccionar más de un método de autenticación TOTP." -#: app_gateway/forms.py:200 +#: app_gateway/forms.py:208 msgid "" "Cannot select both Local Password and OpenID Connect (OIDC) authentication " "methods." @@ -289,15 +294,7 @@ msgstr "" "No se pueden seleccionar simultáneamente los métodos de autenticación de " "Contraseña Local y OpenID Connect (OIDC)." -#: app_gateway/forms.py:204 -msgid "" -"TOTP must be combined with a Local Password or OpenID Connect authentication " -"method." -msgstr "" -"TOTP debe combinarse con un método de autenticación de Contraseña Local o " -"OpenID Connect." - -#: app_gateway/forms.py:208 +#: app_gateway/forms.py:212 msgid "" "At least one user group must be selected when using Local Password " "authentication." @@ -305,75 +302,102 @@ msgstr "" "Se debe seleccionar al menos um grupo de usuarios al usar la autenticación " "de Contraseña Local." -#: app_gateway/forms.py:212 +#: app_gateway/forms.py:216 msgid "User groups can only be used with Local Password authentication." msgstr "" "Los grupos de usuarios solo se pueden usar con la autenticación de " "Contraseña Local." -#: app_gateway/forms.py:222 templates/app_gateway/app_gateway_list.html:62 -#: templates/app_gateway/application_details.html:31 +#: app_gateway/forms.py:226 templates/app_gateway/app_gateway_list.html:70 +#: templates/app_gateway/application_details.html:39 #: templates/firewall/firewall_nav_tabs.html:15 msgid "Default Policy" msgstr "Política predeterminada" -#: app_gateway/forms.py:251 templates/app_gateway/application_details.html:105 +#: app_gateway/forms.py:255 templates/app_gateway/application_details.html:134 msgid "Route Name" msgstr "Nombre de la ruta" -#: app_gateway/forms.py:252 templates/app_gateway/application_details.html:106 +#: app_gateway/forms.py:256 templates/app_gateway/application_details.html:135 msgid "Path Prefix" msgstr "Prefijo de ruta" -#: app_gateway/forms.py:253 templates/app_gateway/application_details.html:107 +#: app_gateway/forms.py:257 templates/app_gateway/application_details.html:136 msgid "Policy" msgstr "Política" -#: app_gateway/forms.py:254 templates/app_gateway/application_details.html:108 +#: app_gateway/forms.py:258 templates/app_gateway/application_details.html:137 msgid "Order" msgstr "Orden" -#: app_gateway/models.py:12 +#: app_gateway/forms.py:299 +#, fuzzy +#| msgid "Invite URL must start with 'https://'." +msgid "Path prefix must start with /." +msgstr "La URL debe empezar con 'https://'." + +#: app_gateway/forms.py:301 +#, fuzzy +#| msgid "Upstream URL cannot contain spaces." +msgid "Path prefix cannot contain spaces." +msgstr "La URL de upstream no puede contener espacios." + +#: app_gateway/forms.py:303 +msgid "Path prefix contains invalid characters." +msgstr "" + +#: app_gateway/forms.py:308 +#, fuzzy +#| msgid "This upstream is reserved by the system." +msgid "This path prefix is reserved by the system." +msgstr "Este upstream está reservado por el sistema." + +#: app_gateway/models.py:14 msgid "Upstream address, e.g.: http://10.188.18.27:3000" msgstr "Dirección de origen (upstream), ej.: http://10.188.18.27:3000" -#: app_gateway/models.py:45 +#: app_gateway/models.py:15 +msgid "Allow invalid or self-signed TLS certificates from the upstream" +msgstr "" + +#: app_gateway/models.py:53 #: templates/app_gateway/access_policy_type_select.html:19 msgid "Public" msgstr "Público" -#: app_gateway/models.py:45 +#: app_gateway/models.py:53 #: templates/app_gateway/access_policy_type_select.html:30 msgid "Protected" msgstr "Protegido" -#: app_gateway/models.py:45 gatekeeper/models.py:108 +#: app_gateway/models.py:53 gatekeeper/models.py:142 #: templates/app_gateway/access_policy_type_select.html:41 -#: templates/gatekeeper/gatekeeper_list.html:288 +#: templates/gatekeeper/gatekeeper_list.html:289 msgid "Deny" msgstr "Denegar" -#: app_gateway/models.py:80 -msgid "Route identifier, used in export (e.g.: public_area)" -msgstr "Identificador de ruta, usado en la exportación (ej.: public_area)" - -#: app_gateway/views.py:60 +#: app_gateway/views.py:75 msgid "Application Details" msgstr "Detalles de la aplicación" -#: app_gateway/views.py:74 templates/app_gateway/application_details.html:15 +#: app_gateway/views.py:90 app_gateway/views.py:174 app_gateway/views.py:204 +msgid "The WireGuard WebAdmin application cannot be modified." +msgstr "" + +#: app_gateway/views.py:92 templates/app_gateway/application_details.html:16 +#: templates/app_gateway/application_details.html:23 msgid "Edit Application" msgstr "Editar aplicación" -#: app_gateway/views.py:77 +#: app_gateway/views.py:95 msgid "Create Application" msgstr "Crear aplicación" -#: app_gateway/views.py:84 +#: app_gateway/views.py:102 msgid "Application saved successfully." msgstr "Aplicación guardada correctamente." -#: app_gateway/views.py:89 +#: app_gateway/views.py:107 msgid "" "\n" "
Application
\n" @@ -407,62 +431,67 @@ msgstr "" " \n" " " -#: app_gateway/views.py:120 +#: app_gateway/views.py:137 +msgid "The WireGuard WebAdmin application cannot be deleted." +msgstr "" + +#: app_gateway/views.py:142 msgid "Application deleted successfully." msgstr "Aplicación eliminada correctamente." -#: app_gateway/views.py:125 templates/app_gateway/application_details.html:18 +#: app_gateway/views.py:147 templates/app_gateway/application_details.html:19 +#: templates/app_gateway/application_details.html:26 msgid "Delete Application" msgstr "Eliminar aplicación" -#: app_gateway/views.py:127 +#: app_gateway/views.py:149 #, python-format msgid "Are you sure you want to delete the application \"%(name)s\"?" msgstr "¿Está seguro de que desea eliminar la aplicación \"%(name)s\"?" -#: app_gateway/views.py:143 +#: app_gateway/views.py:165 msgid "Edit Application Host" msgstr "Editar host de aplicación" -#: app_gateway/views.py:147 +#: app_gateway/views.py:169 msgid "Add Application Host" msgstr "Añadir host de aplicación" -#: app_gateway/views.py:156 +#: app_gateway/views.py:182 msgid "Application Host saved successfully." msgstr "Host de aplicación guardado correctamente." -#: app_gateway/views.py:179 +#: app_gateway/views.py:209 msgid "Application Host deleted successfully." msgstr "Host de aplicación eliminado correctamente." -#: app_gateway/views.py:184 +#: app_gateway/views.py:214 msgid "Delete Application Host" msgstr "Eliminar host de aplicación" -#: app_gateway/views.py:186 +#: app_gateway/views.py:216 #, python-format msgid "Are you sure you want to delete the host \"%(hostname)s\"?" msgstr "¿Está seguro de que desea eliminar el host \"%(hostname)s\"?" -#: app_gateway/views.py:197 +#: app_gateway/views.py:227 #: templates/app_gateway/access_policy_type_select.html:9 msgid "Select Access Policy Type" msgstr "Seleccionar tipo de política de acceso" -#: app_gateway/views.py:212 +#: app_gateway/views.py:242 msgid "Edit Access Policy" msgstr "Editar política de acceso" -#: app_gateway/views.py:216 +#: app_gateway/views.py:246 msgid "Create Access Policy" msgstr "Crear política de acceso" -#: app_gateway/views.py:223 +#: app_gateway/views.py:253 msgid "Access Policy saved successfully." msgstr "Política de acceso guardada correctamente." -#: app_gateway/views.py:229 +#: app_gateway/views.py:259 msgid "" "\n" "
Public Policy
\n" @@ -476,7 +505,7 @@ msgstr "" "requerir ninguna autenticación.

\n" " " -#: app_gateway/views.py:237 +#: app_gateway/views.py:267 msgid "" "\n" "
Deny Policy
\n" @@ -489,7 +518,7 @@ msgstr "" "coincidentes.

\n" " " -#: app_gateway/views.py:245 +#: app_gateway/views.py:275 msgid "" "\n" "
Protected Policy
\n" @@ -519,11 +548,11 @@ msgstr "" " \n" " " -#: app_gateway/views.py:276 +#: app_gateway/views.py:306 msgid "Access Policy deleted successfully." msgstr "Política de acceso eliminada correctamente." -#: app_gateway/views.py:278 +#: app_gateway/views.py:308 msgid "" "Cannot delete this Access Policy because it is currently in use by an " "Application Route or Application Default Policy." @@ -531,55 +560,55 @@ msgstr "" "No se puede eliminar esta política de acceso porque está actualmente en uso " "por una ruta de aplicación o una política predeterminada de aplicación." -#: app_gateway/views.py:283 +#: app_gateway/views.py:313 msgid "Delete Access Policy" msgstr "Eliminar política de acceso" -#: app_gateway/views.py:285 +#: app_gateway/views.py:315 #, python-format msgid "Are you sure you want to delete the access policy \"%(name)s\"?" msgstr "¿Está seguro de que desea eliminar la política de acceso \"%(name)s\"?" -#: app_gateway/views.py:301 +#: app_gateway/views.py:331 msgid "Edit Application Default Policy" msgstr "Editar política predeterminada de la aplicación" -#: app_gateway/views.py:305 +#: app_gateway/views.py:335 msgid "Set Application Default Policy" msgstr "Establecer política predeterminada de la aplicación" -#: app_gateway/views.py:314 +#: app_gateway/views.py:344 msgid "Application Default Policy saved successfully." msgstr "Política predeterminada de la aplicación guardada correctamente." -#: app_gateway/views.py:337 +#: app_gateway/views.py:367 msgid "Application Default Policy deleted successfully." msgstr "Política predeterminada de la aplicación eliminada correctamente." -#: app_gateway/views.py:342 +#: app_gateway/views.py:372 msgid "Delete Application Default Policy" msgstr "Eliminar política predeterminada de la aplicación" -#: app_gateway/views.py:344 +#: app_gateway/views.py:374 #, python-format msgid "Are you sure you want to remove the default policy for \"%(name)s\"?" msgstr "" "¿Está seguro de que desea eliminar la política predeterminada para " "\"%(name)s\"?" -#: app_gateway/views.py:362 +#: app_gateway/views.py:392 msgid "Edit Application Route" msgstr "Editar ruta de la aplicación" -#: app_gateway/views.py:366 +#: app_gateway/views.py:396 msgid "Add Application Route" msgstr "Añadir ruta de la aplicación" -#: app_gateway/views.py:375 +#: app_gateway/views.py:405 msgid "Application Route saved successfully." msgstr "Ruta de la aplicación guardada correctamente." -#: app_gateway/views.py:380 +#: app_gateway/views.py:410 msgid "" "\n" "
Application Route
\n" @@ -619,42 +648,41 @@ msgstr "" " \n" " " -#: app_gateway/views.py:413 +#: app_gateway/views.py:443 msgid "Application Route deleted successfully." msgstr "Ruta de la aplicación eliminada correctamente." -#: app_gateway/views.py:418 +#: app_gateway/views.py:448 msgid "Delete Application Route" msgstr "Eliminar ruta de la aplicación" -#: app_gateway/views.py:420 +#: app_gateway/views.py:450 #, python-format msgid "Are you sure you want to delete the route \"%(name)s\" (%(path)s)?" msgstr "¿Está seguro de que desea eliminar la ruta \"%(name)s\" (%(path)s)?" -#: app_gateway/views.py:443 +#: app_gateway/views.py:468 +msgid "" +"Configuration export is not available because Caddy is not enabled. To use " +"App Gateway and Gatekeeper, start the application using docker-compose-" +"caddy.yml." +msgstr "" + +#: app_gateway/views.py:478 msgid "Configuration exported successfully." msgstr "Configuración exportada con éxito." -#: app_gateway/views.py:445 -msgid "" -"Caddy is not active. Configuration files were exported for debugging " -"purposes." -msgstr "" -"Caddy no está activo. Los archivos de configuração se exportaron con fines " -"de depuración." - #: cluster/forms.py:20 msgid "IP Lock" msgstr "Bloqueo de IP" -#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:271 +#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:315 #: templates/cluster/workers_list.html:10 #: templates/dns/static_host_list.html:18 #: templates/firewall/manage_redirect_rule.html:43 #: templates/firewall/manage_redirect_rule.html:67 #: templates/firewall/manage_redirect_rule.html:68 -#: templates/gatekeeper/gatekeeper_list.html:272 +#: templates/gatekeeper/gatekeeper_list.html:273 #: templates/wireguard/wireguard_status.html:45 msgid "IP Address" msgstr "Dirección IP" @@ -931,7 +959,7 @@ msgstr "DNS estático" msgid "Invalid hostname." msgstr "Nombre de host inválido." -#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:274 +#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:318 #: templates/api_v2/api_documentation.html:51 #: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 @@ -1263,13 +1291,13 @@ msgstr "Gestionar configuración de firewall" msgid "Firewall settings saved successfully" msgstr "Configuración de firewall guardada correctamente" -#: gatekeeper/forms.py:17 templates/accounts/login.html:23 +#: gatekeeper/forms.py:18 templates/accounts/login.html:23 #: templates/vpn_invite/invite_settings.html:19 user_manager/forms.py:14 #: vpn_invite/forms.py:282 msgid "Password" msgstr "Contraseña" -#: gatekeeper/forms.py:20 +#: gatekeeper/forms.py:21 msgid "" "Minimum 8 characters, with at least one uppercase letter, one lowercase " "letter, and one number." @@ -1277,15 +1305,15 @@ msgstr "" "Mínimo de 8 caracteres, con al menos una letra mayúscula, una letra " "minúscula y un número." -#: gatekeeper/forms.py:23 +#: gatekeeper/forms.py:24 msgid "Confirm Password" msgstr "Confirmar Contraseña" -#: gatekeeper/forms.py:28 gatekeeper/forms.py:161 +#: gatekeeper/forms.py:29 gatekeeper/forms.py:163 msgid "TOTP Validation PIN" msgstr "PIN de validación TOTP" -#: gatekeeper/forms.py:31 gatekeeper/forms.py:164 +#: gatekeeper/forms.py:32 gatekeeper/forms.py:166 msgid "" "Enter a 6-digit PIN generated by your authenticator app to validate the " "secret." @@ -1293,189 +1321,223 @@ msgstr "" "Introduzca un PIN de 6 dígitos generado por su aplicación de autenticación " "para validar el secreto." -#: gatekeeper/forms.py:38 templates/accounts/login.html:14 -#: templates/gatekeeper/gatekeeper_list.html:61 +#: gatekeeper/forms.py:39 templates/accounts/login.html:14 +#: templates/gatekeeper/gatekeeper_list.html:62 #: templates/user_manager/list.html:8 user_manager/forms.py:13 #: vpn_invite/forms.py:281 msgid "Username" msgstr "Usuario" -#: gatekeeper/forms.py:39 gatekeeper/forms.py:344 -#: templates/gatekeeper/gatekeeper_list.html:62 -#: templates/gatekeeper/gatekeeper_list.html:220 +#: gatekeeper/forms.py:40 gatekeeper/forms.py:407 +#: templates/gatekeeper/gatekeeper_list.html:63 +#: templates/gatekeeper/gatekeeper_list.html:221 #: templates/wireguard/peer_list/peer_preview_modal.html:103 msgid "Email" msgstr "Email" -#: gatekeeper/forms.py:40 +#: gatekeeper/forms.py:41 msgid "TOTP Secret" msgstr "Secreto TOTP" -#: gatekeeper/forms.py:87 +#: gatekeeper/forms.py:88 msgid "Password is required." msgstr "La contraseña es obligatoria." -#: gatekeeper/forms.py:90 user_manager/forms.py:127 +#: gatekeeper/forms.py:91 user_manager/forms.py:127 msgid "Password must be at least 8 characters long." msgstr "La contraseña debe tener al menos 8 caracteres." -#: gatekeeper/forms.py:92 +#: gatekeeper/forms.py:93 msgid "Password must contain at least one lowercase letter." msgstr "La contraseña debe contener al menos una letra minúscula." -#: gatekeeper/forms.py:94 +#: gatekeeper/forms.py:95 msgid "Password must contain at least one uppercase letter." msgstr "La contraseña debe contener al menos una letra mayúscula." -#: gatekeeper/forms.py:96 +#: gatekeeper/forms.py:97 msgid "Password must contain at least one number." msgstr "La contraseña debe contener al menos un número." -#: gatekeeper/forms.py:98 +#: gatekeeper/forms.py:99 msgid "Passwords do not match." msgstr "Las contraseñas no coinciden." -#: gatekeeper/forms.py:103 gatekeeper/forms.py:249 +#: gatekeeper/forms.py:104 gatekeeper/forms.py:276 msgid "Please provide a PIN to validate the TOTP secret." msgstr "Proporcione un PIN para validar el secreto TOTP." -#: gatekeeper/forms.py:108 gatekeeper/forms.py:254 +#: gatekeeper/forms.py:109 gatekeeper/forms.py:281 msgid "Invalid TOTP PIN." msgstr "PIN TOTP no válido." -#: gatekeeper/forms.py:110 gatekeeper/forms.py:256 +#: gatekeeper/forms.py:111 gatekeeper/forms.py:283 msgid "Invalid TOTP secret format. Must be a valid Base32 string." msgstr "Formato de secreto TOTP no válido. Debe ser una cadena Base32 válida." -#: gatekeeper/forms.py:130 templates/gatekeeper/gatekeeper_list.html:120 +#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121 msgid "Group Name" msgstr "Nombre del grupo" -#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121 +#: gatekeeper/forms.py:132 templates/gatekeeper/gatekeeper_list.html:122 msgid "Members" msgstr "Miembros" +#: gatekeeper/forms.py:169 +#, fuzzy +#| msgid "Expiration" +msgid "Session Expiration" +msgstr "Caduca en" + #: gatekeeper/forms.py:175 +msgid "Unit" +msgstr "" + +#: gatekeeper/forms.py:176 +msgid "Hour(s)" +msgstr "" + +#: gatekeeper/forms.py:176 +msgid "Day(s)" +msgstr "" + +#: gatekeeper/forms.py:189 msgid "Authentication Type" msgstr "Tipo de autenticación" -#: gatekeeper/forms.py:176 +#: gatekeeper/forms.py:190 msgid "Global TOTP Secret" msgstr "Secreto TOTP global" -#: gatekeeper/forms.py:177 +#: gatekeeper/forms.py:191 msgid "OIDC Provider URL" msgstr "URL del proveedor OIDC" -#: gatekeeper/forms.py:178 +#: gatekeeper/forms.py:192 msgid "OIDC Client ID" msgstr "ID de cliente OIDC" -#: gatekeeper/forms.py:179 +#: gatekeeper/forms.py:193 msgid "OIDC Client Secret" msgstr "Secreto de cliente OIDC" -#: gatekeeper/forms.py:230 +#: gatekeeper/forms.py:257 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:232 +#: gatekeeper/forms.py:259 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:234 +#: gatekeeper/forms.py:261 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:240 +#: gatekeeper/forms.py:267 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:243 +#: gatekeeper/forms.py:270 msgid "OIDC fields must be empty for TOTP authentication." msgstr "Los campos OIDC deben estar vacíos para la autenticación TOTP." -#: gatekeeper/forms.py:245 +#: gatekeeper/forms.py:272 msgid "TOTP secret is required for TOTP authentication." msgstr "El secreto TOTP es obligatorio para la autenticación TOTP." -#: gatekeeper/forms.py:259 +#: gatekeeper/forms.py:285 +msgid "" +"OIDC authentication is temporarily unavailable and will be available soon." +msgstr "" + +#: gatekeeper/forms.py:287 msgid "TOTP secret must be empty for OIDC authentication." msgstr "El secreto TOTP debe estar vacío para la autenticación OIDC." -#: gatekeeper/forms.py:261 +#: gatekeeper/forms.py:289 msgid "TOTP validation PIN must be empty for OIDC authentication." msgstr "El PIN de validación TOTP debe estar vacío para la autenticación OIDC." -#: gatekeeper/forms.py:270 gatekeeper/forms.py:312 gatekeeper/forms.py:343 +#: gatekeeper/forms.py:314 gatekeeper/forms.py:375 gatekeeper/forms.py:406 msgid "Authentication Method" msgstr "Método de autenticación" -#: gatekeeper/forms.py:272 templates/gatekeeper/gatekeeper_list.html:273 +#: gatekeeper/forms.py:316 templates/gatekeeper/gatekeeper_list.html:274 msgid "Prefix Length" msgstr "Longitud del prefijo" -#: gatekeeper/forms.py:273 templates/firewall/firewall_rule_list.html:47 +#: gatekeeper/forms.py:317 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 -#: templates/gatekeeper/gatekeeper_list.html:274 +#: templates/gatekeeper/gatekeeper_list.html:275 msgid "Action" msgstr "Acción" -#: gatekeeper/forms.py:313 templates/gatekeeper/gatekeeper_list.html:237 +#: gatekeeper/forms.py:332 +#, python-format +msgid "Prefix length for IPv%(version)d must be between 0 and %(max)d." +msgstr "" + +#: gatekeeper/forms.py:376 templates/gatekeeper/gatekeeper_list.html:238 msgid "Domain" msgstr "Dominio" -#: gatekeeper/models.py:10 +#: gatekeeper/models.py:27 msgid "Local Password" msgstr "Contraseña local" -#: gatekeeper/models.py:11 +#: gatekeeper/models.py:28 msgid "One-Time Password (TOTP)" msgstr "Contraseña de un solo uso (TOTP)" -#: gatekeeper/models.py:12 +#: gatekeeper/models.py:29 msgid "OpenID Connect (OIDC)" msgstr "OpenID Connect (OIDC)" -#: gatekeeper/models.py:13 +#: gatekeeper/models.py:30 msgid "IP Address List" msgstr "Lista de direcciones IP" -#: gatekeeper/models.py:17 +#: gatekeeper/models.py:34 msgid "Shared/global TOTP secret key" msgstr "Clave secreta TOTP compartida/global" -#: gatekeeper/models.py:68 +#: gatekeeper/models.py:39 +#, fuzzy +#| msgid "Expiration (minutes)" +msgid "Session expiration time in minutes" +msgstr "Expira en (minutos)" + +#: gatekeeper/models.py:96 msgid "Password for local authentication (leave blank if not using)" msgstr "Contraseña para autenticación local (dejar en blanco si no se usa)" -#: gatekeeper/models.py:69 +#: gatekeeper/models.py:97 msgid "Per-user TOTP secret key" msgstr "Clave secreta TOTP por usuario" -#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:286 +#: gatekeeper/models.py:142 templates/gatekeeper/gatekeeper_list.html:287 msgid "Allow" msgstr "Permitir" -#: gatekeeper/views.py:54 +#: gatekeeper/views.py:58 msgid "Edit Gatekeeper User" msgstr "Editar usuario de Gatekeeper" -#: gatekeeper/views.py:57 +#: gatekeeper/views.py:61 msgid "Create Gatekeeper User" msgstr "Crear usuario de Gatekeeper" -#: gatekeeper/views.py:64 +#: gatekeeper/views.py:68 msgid "Gatekeeper User saved successfully." msgstr "Usuario de Gatekeeper guardado correctamente." -#: gatekeeper/views.py:69 +#: gatekeeper/views.py:73 msgid "" "\n" "

Gatekeeper User

\n" @@ -1499,75 +1561,96 @@ msgid "" msgstr "" "\n" "

Usuario de Gatekeeper

\n" -"

Los usuarios de Gatekeeper se utilizan para autenticarse en aplicaciones protegidas " -"gestionadas por este gateway.

\n" +"

Los usuarios de Gatekeeper se utilizan para autenticarse en " +"aplicaciones protegidas gestionadas por este gateway.

\n" "\n" "
Contraseña
\n" -"

Obligatorio al crear un usuario. Al editar, deje ambos campos de contraseña " -"en blanco para mantener la contraseña actual.\n" -" Las contraseñas se almacenan mediante el hash Argon2id.

\n" +"

Obligatorio al crear un usuario. Al editar, deje ambos campos de " +"contraseña en blanco para mantener la contraseña actual.\n" +" Las contraseñas se almacenan mediante el hash Argon2id.

\n" "\n" "
Secreto TOTP
\n" -"

Secreto TOTP opcional por usuario. Cuando está configurado, este usuario se " -"autenticará usando su propio secreto en lugar del\n" -" secreto TOTP global configurado en el Método de Autenticación. Utilice los " -"botones debajo del campo para generar un\n" -" secreto aleatorio y escanee el código QR con su aplicación de autenticación. " -"Valide el secreto ingresando el PIN actual de\n" +"

Secreto TOTP opcional por usuario. Cuando está configurado, este " +"usuario se autenticará usando su propio secreto en lugar del\n" +" secreto TOTP global configurado en el Método de Autenticación. " +"Utilice los botones debajo del campo para generar un\n" +" secreto aleatorio y escanee el código QR con su aplicación de " +"autenticación. Valide el secreto ingresando el PIN actual de\n" " 6 dígitos antes de guardar.

\n" " " -#: gatekeeper/views.py:106 +#: gatekeeper/views.py:110 msgid "Gatekeeper User deleted successfully." msgstr "Usuario de Gatekeeper eliminado correctamente." -#: gatekeeper/views.py:111 +#: gatekeeper/views.py:115 msgid "Delete Gatekeeper User" msgstr "Eliminar usuario de Gatekeeper" -#: gatekeeper/views.py:113 +#: gatekeeper/views.py:117 #, python-format msgid "Are you sure you want to delete the user \"%(username)s\"?" msgstr "¿Está seguro de que desea eliminar al usuario \"%(username)s\"?" -#: gatekeeper/views.py:127 +#: gatekeeper/views.py:131 msgid "Edit Gatekeeper Group" msgstr "Editar grupo de Gatekeeper" -#: gatekeeper/views.py:130 +#: gatekeeper/views.py:134 msgid "Create Gatekeeper Group" msgstr "Crear grupo Gatekeeper" -#: gatekeeper/views.py:137 +#: gatekeeper/views.py:141 msgid "Gatekeeper Group saved successfully." msgstr "Grupo de Gatekeeper guardado correctamente." -#: gatekeeper/views.py:159 +#: gatekeeper/views.py:163 msgid "Gatekeeper Group deleted successfully." msgstr "Grupo de Gatekeeper eliminado correctamente." -#: gatekeeper/views.py:164 +#: gatekeeper/views.py:168 msgid "Delete Gatekeeper Group" msgstr "Eliminar grupo Gatekeeper" -#: gatekeeper/views.py:166 +#: gatekeeper/views.py:170 #, python-format msgid "Are you sure you want to delete the group \"%(name)s\"?" msgstr "¿Está seguro de que desea eliminar el grupo \"%(name)s\"?" -#: gatekeeper/views.py:180 +#: gatekeeper/views.py:184 msgid "Edit Authentication Method" msgstr "Editar método de autenticación" -#: gatekeeper/views.py:183 +#: gatekeeper/views.py:187 msgid "Create Authentication Method" msgstr "Crear método de autenticación" -#: gatekeeper/views.py:190 +#: gatekeeper/views.py:194 msgid "Authentication Method saved successfully." msgstr "Método de autenticación guardado correctamente." -#: gatekeeper/views.py:195 +#: gatekeeper/views.py:199 +#, fuzzy +#| msgid "" +#| "\n" +#| "

Authentication Types

\n" +#| "

Select how users will authenticate through this method.

\n" +#| " \n" +#| "
Local Password
\n" +#| "

Users will authenticate using a standard username and password " +#| "stored locally. Only one of this type can be created.

\n" +#| " \n" +#| "
OIDC (OpenID Connect)
\n" +#| "

Users will authenticate via an external identity provider " +#| "(like Keycloak, Google, or Authelia). Requires Provider URL, Client ID, " +#| "and Client Secret.

\n" +#| " \n" +#| "
TOTP (Time-Based One-Time Password)
\n" +#| "

Users will need to enter a rotating token from an " +#| "authenticator app. If a user does not have a personal TOTP configured, " +#| "the Global TOTP Secret will be used instead.

\n" +#| " " msgid "" "\n" "

Authentication Types

\n" @@ -1579,8 +1662,8 @@ msgid "" " \n" "
OIDC (OpenID Connect)
\n" "

Users will authenticate via an external identity provider (like " -"Keycloak, Google, or Authelia). Requires Provider URL, Client ID, and Client " -"Secret.

\n" +"Keycloak or Google). Requires Provider URL, Client ID, and Client Secret.\n" " \n" "
TOTP (Time-Based One-Time Password)
\n" "

Users will need to enter a rotating token from an authenticator " @@ -1590,102 +1673,113 @@ msgid "" msgstr "" "\n" "

Tipos de Autenticación

\n" -"

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

\n" +"

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

\n" "\n" "
Contraseña Local
\n" -"

Los usuarios se autenticarán utilizando un nombre de usuario y contraseña " -"estándar almacenados localmente. Solo se puede crear uno de este tipo.

\n" +"

Los usuarios se autenticarán utilizando un nombre de usuario y " +"contraseña estándar almacenados localmente. Solo se puede crear uno de este " +"tipo.

\n" "\n" "
OIDC (OpenID Connect)
\n" -"

Los usuarios se autenticarán a través de un proveedor de identidad externo " -"(como Keycloak, Google o Authelia). Requiere URL del Proveedor, ID de Cliente y Secreto de Cliente.

\n" +"

Los usuarios se autenticarán a través de un proveedor de " +"identidad externo (como Keycloak, Google o Authelia). Requiere URL del " +"Proveedor, ID de Cliente y Secreto de Cliente.

\n" "\n" "
TOTP (Contraseña de un Solo Uso Basada en Tiempo)
\n" -"

Los usuarios deberán ingresar un token rotativo de una aplicación de autenticación. " -"Si un usuario no tiene configurado un TOTP personal, se utilizará el Secreto TOTP Global en su lugar.

\n" +"

Los usuarios deberán ingresar un token rotativo de una aplicación " +"de autenticación. Si un usuario no tiene configurado un TOTP personal, se " +"utilizará el Secreto TOTP Global en su lugar.

\n" " " -#: gatekeeper/views.py:230 +#: gatekeeper/views.py:237 +#, python-format +msgid "" +"Cannot delete authentication method \"%(method)s\" because it is used by the " +"following policies: %(policies)s." +msgstr "" + +#: gatekeeper/views.py:243 msgid "Authentication Method deleted successfully." msgstr "Método de autenticación eliminado correctamente." -#: gatekeeper/views.py:235 +#: gatekeeper/views.py:248 msgid "Delete Authentication Method" msgstr "Eliminar método de autenticación" -#: gatekeeper/views.py:237 +#: gatekeeper/views.py:250 #, python-format msgid "Are you sure you want to delete the authentication method \"%(name)s\"?" msgstr "" "¿Está seguro de que desea eliminar el método de autenticación \"%(name)s\"?" -#: gatekeeper/views.py:287 +#: gatekeeper/views.py:303 msgid "Edit Allowed Domain" msgstr "Editar dominio permitido" -#: gatekeeper/views.py:290 templates/gatekeeper/gatekeeper_list.html:202 +#: gatekeeper/views.py:306 templates/gatekeeper/gatekeeper_list.html:203 msgid "Add Allowed Domain" msgstr "Añadir dominio permitido" -#: gatekeeper/views.py:297 +#: gatekeeper/views.py:313 msgid "Allowed Domain saved successfully." msgstr "Dominio permitido guardado correctamente." -#: gatekeeper/views.py:319 +#: gatekeeper/views.py:335 msgid "Allowed Domain deleted successfully." msgstr "Dominio permitido eliminado correctamente." -#: gatekeeper/views.py:324 +#: gatekeeper/views.py:340 msgid "Delete Allowed Domain" msgstr "Eliminar dominio permitido" -#: gatekeeper/views.py:326 +#: gatekeeper/views.py:342 #, python-format msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?" msgstr "" "¿Está seguro de que desea eliminar el dominio permitido \"%(domain)s\"?" -#: gatekeeper/views.py:340 +#: gatekeeper/views.py:356 msgid "Edit Allowed Email" msgstr "Editar correo electrónico permitido" -#: gatekeeper/views.py:343 templates/gatekeeper/gatekeeper_list.html:199 +#: gatekeeper/views.py:359 templates/gatekeeper/gatekeeper_list.html:200 msgid "Add Allowed Email" msgstr "Añadir correo electrónico permitido" -#: gatekeeper/views.py:350 +#: gatekeeper/views.py:366 msgid "Allowed Email saved successfully." msgstr "Correo electrónico permitido guardado correctamente." -#: gatekeeper/views.py:372 +#: gatekeeper/views.py:388 msgid "Allowed Email deleted successfully." msgstr "Correo electrónico permitido eliminado correctamente." -#: gatekeeper/views.py:377 +#: gatekeeper/views.py:393 msgid "Delete Allowed Email" msgstr "Eliminar correo electrónico permitido" -#: gatekeeper/views.py:379 +#: gatekeeper/views.py:395 #, python-format msgid "Are you sure you want to delete the allowed email \"%(email)s\"?" msgstr "" "¿Está seguro de que desea eliminar el correo electrónico permitido " "\"%(email)s\"?" -#: gatekeeper/views.py:393 +#: gatekeeper/views.py:409 msgid "Edit IP Address" msgstr "Editar dirección IP" -#: gatekeeper/views.py:396 templates/gatekeeper/gatekeeper_list.html:263 +#: gatekeeper/views.py:412 templates/gatekeeper/gatekeeper_list.html:264 #: templates/wireguard/wireguard_manage_peer.html:171 msgid "Add IP Address" msgstr "Añadir IP" -#: gatekeeper/views.py:403 +#: gatekeeper/views.py:419 msgid "IP Address saved successfully." msgstr "Dirección IP guardada correctamente." -#: gatekeeper/views.py:408 +#: gatekeeper/views.py:424 msgid "" "\n" "
IP Address List
\n" @@ -1732,24 +1826,25 @@ msgstr "" "\"Red de la Oficina\", \"Atacante Bloqueado\").

\n" " " -#: gatekeeper/views.py:444 +#: gatekeeper/views.py:460 msgid "IP Address deleted successfully." msgstr "Dirección IP eliminada correctamente." -#: gatekeeper/views.py:449 +#: gatekeeper/views.py:465 msgid "Delete IP Address" msgstr "Eliminar dirección IP" -#: gatekeeper/views.py:451 +#: gatekeeper/views.py:467 #, python-format msgid "Are you sure you want to delete the IP address \"%(address)s\"?" msgstr "¿Está seguro de que desea eliminar la dirección IP \"%(address)s\"?" -#: intl_tools/forms.py:11 templates/accounts/login.html:36 +#: intl_tools/forms.py:11 msgid "Language" msgstr "Idioma" -#: intl_tools/forms.py:24 templates/template_parts/base_navbar.html:14 +#: intl_tools/forms.py:24 templates/accounts/login.html:35 +#: templates/template_parts/base_navbar.html:19 msgid "Change Language" msgstr "Cambiar idioma" @@ -2084,6 +2179,11 @@ msgstr "" msgid "Login" msgstr "Iniciar sesión" +#: templates/accounts/login.html:40 +#: templates/template_parts/base_navbar.html:14 +msgid "Toggle Dark Mode" +msgstr "" + #: templates/accounts/logout.html:11 msgid "You have been successfully logged out." msgstr "Has cerrado sesión correctamente." @@ -2106,8 +2206,8 @@ msgid "In" msgstr "Entrada" #: templates/api_v2/api_documentation.html:49 -#: templates/gatekeeper/gatekeeper_list.html:166 -#: templates/gatekeeper/gatekeeper_list.html:211 +#: templates/gatekeeper/gatekeeper_list.html:167 +#: templates/gatekeeper/gatekeeper_list.html:212 #: templates/wireguard/apply_route_template.html:27 msgid "Type" msgstr "Tipo" @@ -2117,13 +2217,13 @@ msgid "Required" msgstr "Obligatorio" #: templates/api_v2/api_documentation.html:62 -#: templates/gatekeeper/gatekeeper_list.html:75 +#: templates/gatekeeper/gatekeeper_list.html:76 #: templates/scheduler/scheduleprofile_form.html:175 msgid "Yes" msgstr "Sí" #: templates/api_v2/api_documentation.html:64 -#: templates/gatekeeper/gatekeeper_list.html:77 +#: templates/gatekeeper/gatekeeper_list.html:78 #: templates/scheduler/scheduleprofile_form.html:177 msgid "No" msgstr "No" @@ -2163,17 +2263,17 @@ msgid "Disabled" msgstr "Deshabilitado" #: templates/api_v2/list.html:68 -#: templates/app_gateway/app_gateway_list.html:154 -#: templates/app_gateway/application_details.html:71 -#: templates/app_gateway/application_details.html:121 +#: templates/app_gateway/app_gateway_list.html:162 +#: templates/app_gateway/application_details.html:99 +#: templates/app_gateway/application_details.html:150 #: templates/cluster/workers_list.html:77 #: templates/dns/static_host_list.html:74 -#: templates/gatekeeper/gatekeeper_list.html:89 -#: templates/gatekeeper/gatekeeper_list.html:132 -#: templates/gatekeeper/gatekeeper_list.html:177 -#: templates/gatekeeper/gatekeeper_list.html:225 -#: templates/gatekeeper/gatekeeper_list.html:242 -#: templates/gatekeeper/gatekeeper_list.html:294 +#: templates/gatekeeper/gatekeeper_list.html:90 +#: templates/gatekeeper/gatekeeper_list.html:133 +#: templates/gatekeeper/gatekeeper_list.html:178 +#: templates/gatekeeper/gatekeeper_list.html:226 +#: templates/gatekeeper/gatekeeper_list.html:243 +#: templates/gatekeeper/gatekeeper_list.html:295 #: templates/routing_templates/list.html:29 #: templates/scheduler/scheduleprofile_form.html:123 #: templates/scheduler/scheduleprofile_list.html:25 @@ -2205,78 +2305,83 @@ msgstr "Requerir autenticación utilizando métodos o grupos especificados." msgid "Deny all access." msgstr "Denegar todo el acceso." -#: templates/app_gateway/app_gateway_list.html:12 -#: templates/app_gateway/app_gateway_list.html:30 +#: templates/app_gateway/app_gateway_list.html:13 +#: templates/app_gateway/app_gateway_list.html:31 msgid "Applications" msgstr "Aplicaciones" -#: templates/app_gateway/app_gateway_list.html:18 +#: templates/app_gateway/app_gateway_list.html:19 msgid "Access Policies" msgstr "Políticas de acceso" -#: templates/app_gateway/app_gateway_list.html:34 -#: templates/app_gateway/app_gateway_list.html:60 +#: templates/app_gateway/app_gateway_list.html:35 +#: templates/app_gateway/app_gateway_list.html:68 #: templates/dns/static_host_list.html:70 msgid "Hosts" msgstr "Hosts" -#: templates/app_gateway/app_gateway_list.html:42 +#: templates/app_gateway/app_gateway_list.html:44 +#: templates/app_gateway/app_gateway_list.html:50 msgid "Export Configuration" msgstr "Exportar configuración" -#: templates/app_gateway/app_gateway_list.html:46 +#: templates/app_gateway/app_gateway_list.html:49 +msgid "Export is not available because Caddy is not enabled." +msgstr "" + +#: templates/app_gateway/app_gateway_list.html:54 msgid "Add Application" msgstr "Añadir aplicación" -#: templates/app_gateway/app_gateway_list.html:61 +#: templates/app_gateway/app_gateway_list.html:69 msgid "Routes" msgstr "Rutas" -#: templates/app_gateway/app_gateway_list.html:80 -#: templates/app_gateway/application_details.html:39 +#: templates/app_gateway/app_gateway_list.html:88 +#: templates/app_gateway/application_details.html:47 msgid "Default (Deny)" msgstr "Predeterminado (Denegar)" -#: templates/app_gateway/app_gateway_list.html:90 +#: templates/app_gateway/app_gateway_list.html:98 msgid "No Applications found." msgstr "No se han encontrado aplicaciones." -#: templates/app_gateway/app_gateway_list.html:102 +#: templates/app_gateway/app_gateway_list.html:110 msgid "Application" msgstr "Aplicación" -#: templates/app_gateway/app_gateway_list.html:121 +#: templates/app_gateway/app_gateway_list.html:129 msgid "No Hosts found." msgstr "No se han encontrado hosts." -#: templates/app_gateway/app_gateway_list.html:129 +#: templates/app_gateway/app_gateway_list.html:137 msgid "Add Access Policy" msgstr "Añadir política de acceso" -#: templates/app_gateway/app_gateway_list.html:140 -#: templates/gatekeeper/gatekeeper_list.html:43 -#: templates/gatekeeper/gatekeeper_list.html:64 +#: templates/app_gateway/app_gateway_list.html:148 +#: templates/gatekeeper/gatekeeper_list.html:44 +#: templates/gatekeeper/gatekeeper_list.html:65 msgid "Groups" msgstr "Grupos" -#: templates/app_gateway/app_gateway_list.html:141 +#: templates/app_gateway/app_gateway_list.html:149 msgid "Auth Methods" msgstr "Métodos de autenticación" -#: templates/app_gateway/app_gateway_list.html:142 -#: templates/app_gateway/application_details.html:62 -#: templates/app_gateway/application_details.html:109 -#: templates/gatekeeper/gatekeeper_list.html:65 -#: templates/gatekeeper/gatekeeper_list.html:122 -#: templates/gatekeeper/gatekeeper_list.html:167 -#: templates/gatekeeper/gatekeeper_list.html:214 +#: templates/app_gateway/app_gateway_list.html:150 +#: templates/app_gateway/application_details.html:76 +#: templates/app_gateway/application_details.html:138 +#: templates/gatekeeper/gatekeeper_list.html:66 +#: templates/gatekeeper/gatekeeper_list.html:123 +#: templates/gatekeeper/gatekeeper_list.html:168 +#: templates/gatekeeper/gatekeeper_list.html:215 #: templates/scheduler/scheduleprofile_form.html:111 #: templates/scheduler/scheduleprofile_list.html:15 #: templates/wireguard/apply_route_template.html:28 msgid "Actions" msgstr "Acciones" -#: templates/app_gateway/app_gateway_list.html:169 +#: templates/app_gateway/app_gateway_list.html:177 msgid "No Access Policies found." msgstr "No se han encontrado políticas de acceso." @@ -2285,34 +2390,79 @@ msgstr "No se han encontrado políticas de acceso." msgid "Back to List" msgstr "Volver a la lista" -#: templates/app_gateway/application_details.html:41 +#: templates/app_gateway/application_details.html:15 +#: templates/app_gateway/application_details.html:59 +#: templates/app_gateway/application_details.html:91 +#: templates/app_gateway/application_details.html:94 +msgid "This application cannot be modified" +msgstr "" + +#: templates/app_gateway/application_details.html:18 +#, fuzzy +#| msgid "Application Route deleted successfully." +msgid "This application cannot be deleted" +msgstr "Ruta de la aplicación eliminada correctamente." + +#: templates/app_gateway/application_details.html:49 msgid "Set Policy" msgstr "Establecer política" -#: templates/app_gateway/application_details.html:48 +#: templates/app_gateway/application_details.html:56 msgid "Application Hosts" msgstr "Hosts de la aplicación" -#: templates/app_gateway/application_details.html:52 +#: templates/app_gateway/application_details.html:60 +#: templates/app_gateway/application_details.html:65 msgid "Add Host" msgstr "Añadir host" -#: templates/app_gateway/application_details.html:86 +#: templates/app_gateway/application_details.html:115 msgid "No Hosts configured for this application." msgstr "No hay hosts configurados para esta aplicación." -#: templates/app_gateway/application_details.html:92 +#: templates/app_gateway/application_details.html:121 msgid "Application Routes" msgstr "Rutas de la aplicación" -#: templates/app_gateway/application_details.html:96 +#: templates/app_gateway/application_details.html:125 msgid "Add Route" msgstr "Añadir ruta" -#: templates/app_gateway/application_details.html:136 +#: templates/app_gateway/application_details.html:165 msgid "No Routes configured for this application." msgstr "No hay rutas configuradas para esta aplicación." +#: templates/app_gateway/caddy_disabled_alert.html:5 +#, fuzzy +#| msgid "Cluster is not enabled" +msgid "Caddy is not enabled" +msgstr "Cluster no está habilitado" + +#: templates/app_gateway/caddy_disabled_alert.html:6 +msgid "" +"The App Gateway and Gatekeeper modules require Caddy and the auth-gateway " +"container to be running. Please start the application using docker-" +"compose-caddy.yml." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:7 +msgid "" +"Depending on your custom firewall or proxy rules, the way you access " +"wireguard_webadmin may change slightly after enabling Caddy." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:8 +msgid "" +"Switching to Caddy is simple, but it may require a bit of time and attention " +"to review your current setup." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:9 +#, fuzzy +#| msgid "For more information, please visit:" +msgid "For more information, see the discussion:" +msgstr "Para obtener más información, visite:" + #: templates/cluster/workers_list.html:9 templates/dns/static_host_list.html:72 #: templates/scheduler/scheduleprofile_form.html:82 #: templates/template_parts/base_sidebar.html:13 vpn_invite/forms.py:78 @@ -2818,86 +2968,93 @@ msgstr "" msgid "Create Port forwarding Rule" msgstr "Crear regla de reenvío de puerto" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:63 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:67 #: templates/gatekeeper/gatekeeper_user_form.html:43 msgid "View QR Code" msgstr "Ver código QR" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:64 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:68 #: templates/gatekeeper/gatekeeper_user_form.html:44 msgid "Generate TOTP Secret" msgstr "Generar Secreto TOTP" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:93 -#: templates/gatekeeper/gatekeeper_user_form.html:73 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:105 +#: templates/gatekeeper/gatekeeper_user_form.html:81 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:18 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:127 +#: templates/gatekeeper/gatekeeper_user_form.html:103 +#, fuzzy +#| msgid "Error creating invite." +msgid "Error generating QR code." +msgstr "Error al crear invitación." + +#: templates/gatekeeper/gatekeeper_list.html:19 msgid "Gatekeeper Users" msgstr "Usuarios de Gatekeeper" -#: templates/gatekeeper/gatekeeper_list.html:24 +#: templates/gatekeeper/gatekeeper_list.html:25 msgid "Allowed Emails & Domains" msgstr "Correos electrónicos y dominios permitidos" -#: templates/gatekeeper/gatekeeper_list.html:30 +#: templates/gatekeeper/gatekeeper_list.html:31 msgid "IP Addresses" msgstr "Direcciones IP" -#: templates/gatekeeper/gatekeeper_list.html:40 +#: templates/gatekeeper/gatekeeper_list.html:41 #: templates/user_manager/peer_group_list.html:11 msgid "Users" msgstr "Usuarios" -#: templates/gatekeeper/gatekeeper_list.html:51 +#: templates/gatekeeper/gatekeeper_list.html:52 #: templates/user_manager/list_buttons.html:2 user_manager/views.py:111 msgid "Add User" msgstr "Añadir usuario" -#: templates/gatekeeper/gatekeeper_list.html:63 +#: templates/gatekeeper/gatekeeper_list.html:64 msgid "TOTP" msgstr "TOTP" -#: templates/gatekeeper/gatekeeper_list.html:104 +#: templates/gatekeeper/gatekeeper_list.html:105 msgid "No Gatekeeper Users found." msgstr "No se han encontrado usuarios de Gatekeeper." -#: templates/gatekeeper/gatekeeper_list.html:111 +#: templates/gatekeeper/gatekeeper_list.html:112 msgid "Add Group" msgstr "Añadir grupo" -#: templates/gatekeeper/gatekeeper_list.html:147 +#: templates/gatekeeper/gatekeeper_list.html:148 msgid "No Gatekeeper Groups found." msgstr "No se han encontrado grupos de Gatekeeper." -#: templates/gatekeeper/gatekeeper_list.html:156 +#: templates/gatekeeper/gatekeeper_list.html:157 msgid "Add Auth Method" msgstr "Añadir método de autenticación" -#: templates/gatekeeper/gatekeeper_list.html:192 +#: templates/gatekeeper/gatekeeper_list.html:193 msgid "No Authentication Methods found." msgstr "No se han encontrado métodos de autenticación." -#: templates/gatekeeper/gatekeeper_list.html:212 +#: templates/gatekeeper/gatekeeper_list.html:213 msgid "Identity" msgstr "Identidad" -#: templates/gatekeeper/gatekeeper_list.html:213 -#: templates/gatekeeper/gatekeeper_list.html:275 +#: templates/gatekeeper/gatekeeper_list.html:214 +#: templates/gatekeeper/gatekeeper_list.html:276 msgid "Auth Method" msgstr "Método de autenticación" -#: templates/gatekeeper/gatekeeper_list.html:257 +#: templates/gatekeeper/gatekeeper_list.html:258 msgid "No Allowed Emails or Domains found." msgstr "No se han encontrado correos electrónicos o dominios permitidos." -#: templates/gatekeeper/gatekeeper_list.html:276 +#: templates/gatekeeper/gatekeeper_list.html:277 msgid "Manage" msgstr "Gestionar" -#: templates/gatekeeper/gatekeeper_list.html:309 +#: templates/gatekeeper/gatekeeper_list.html:310 msgid "No IP Addresses found." msgstr "No se han encontrado direcciones IP." @@ -3517,6 +3674,10 @@ msgid "Please type \\\"delete\\\" to remove peer configuration." msgstr "" "Por favor escribe \\\"delete\\\" para eliminar la configuración del peer." +#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15 +msgid "Display Name" +msgstr "Nombre para mostrar" + #: templates/wireguard/wireguard_manage_server.html:27 msgid "" "\n" @@ -4494,5 +4655,25 @@ msgid "No interfaces found|No WireGuard interfaces were found to process." msgstr "" "No se encontraron interfaces|No hay interfaces WireGuard para procesar." +#~ msgid "This is a reserved system name." +#~ msgstr "Este es un nombre de sistema reservado." + +#~ msgid "" +#~ "TOTP must be combined with a Local Password or OpenID Connect " +#~ "authentication method." +#~ msgstr "" +#~ "TOTP debe combinarse con un método de autenticación de Contraseña Local o " +#~ "OpenID Connect." + +#~ msgid "Route identifier, used in export (e.g.: public_area)" +#~ msgstr "Identificador de ruta, usado en la exportación (ej.: public_area)" + +#~ msgid "" +#~ "Caddy is not active. Configuration files were exported for debugging " +#~ "purposes." +#~ msgstr "" +#~ "Caddy no está activo. Los archivos de configuração se exportaron con " +#~ "fines de depuración." + #~ msgid "Global TOTP Before Authentication" #~ msgstr "TOTP global antes de la autenticación" diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo index 7f58257a0f896d0f1b71e4c26f6be95fd0269be0..6a2dd5f8b34ccdb7a280e8965637465401e5c178 100644 GIT binary patch delta 17221 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 J<5^kq{{i)a+-Cp) diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 7a3e052..a5f79c0 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-15 17:28-0300\n" +"POT-Creation-Date: 2026-03-18 10:58-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,17 +33,17 @@ msgstr "Retour" #: api_v2/forms.py:30 cluster/forms.py:28 dns/forms.py:69 dns/forms.py:129 #: routing_templates/forms.py:37 -#: templates/app_gateway/app_gateway_list.html:158 -#: templates/app_gateway/application_details.html:75 -#: templates/app_gateway/application_details.html:125 +#: templates/app_gateway/app_gateway_list.html:166 +#: templates/app_gateway/application_details.html:103 +#: templates/app_gateway/application_details.html:154 #: templates/firewall/manage_firewall_rule.html:382 #: templates/firewall/manage_redirect_rule.html:86 -#: templates/gatekeeper/gatekeeper_list.html:93 -#: templates/gatekeeper/gatekeeper_list.html:136 -#: templates/gatekeeper/gatekeeper_list.html:181 -#: templates/gatekeeper/gatekeeper_list.html:229 -#: templates/gatekeeper/gatekeeper_list.html:246 -#: templates/gatekeeper/gatekeeper_list.html:298 +#: templates/gatekeeper/gatekeeper_list.html:94 +#: templates/gatekeeper/gatekeeper_list.html:137 +#: templates/gatekeeper/gatekeeper_list.html:182 +#: templates/gatekeeper/gatekeeper_list.html:230 +#: templates/gatekeeper/gatekeeper_list.html:247 +#: templates/gatekeeper/gatekeeper_list.html:299 #: templates/scheduler/scheduleprofile_form.html:127 #: templates/scheduler/scheduleprofile_list.html:29 #: templates/wireguard/peer_list/peer_preview_modal.html:109 @@ -64,12 +64,12 @@ 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 app_gateway/forms.py:40 app_gateway/forms.py:92 -#: app_gateway/forms.py:136 app_gateway/forms.py:154 app_gateway/forms.py:237 -#: app_gateway/forms.py:278 cluster/forms.py:67 cluster/forms.py:124 -#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:70 -#: gatekeeper/forms.py:150 gatekeeper/forms.py:212 gatekeeper/forms.py:299 -#: gatekeeper/forms.py:329 gatekeeper/forms.py:360 +#: api_v2/forms.py:63 app_gateway/forms.py:41 app_gateway/forms.py:99 +#: app_gateway/forms.py:144 app_gateway/forms.py:162 app_gateway/forms.py:241 +#: app_gateway/forms.py:283 cluster/forms.py:67 cluster/forms.py:124 +#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:71 +#: gatekeeper/forms.py:152 gatekeeper/forms.py:239 gatekeeper/forms.py:362 +#: gatekeeper/forms.py:392 gatekeeper/forms.py:423 #: routing_templates/forms.py:71 scheduler/forms.py:102 #: templates/firewall/manage_firewall_rule.html:379 #: templates/firewall/manage_firewall_settings.html:59 @@ -82,14 +82,14 @@ msgstr "" msgid "Save" msgstr "Enregistrer" -#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:106 -#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:174 +#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:113 +#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:188 #: routing_templates/forms.py:28 templates/api_v2/api_documentation.html:47 -#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:58 -#: templates/app_gateway/app_gateway_list.html:138 -#: templates/app_gateway/application_details.html:26 +#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:66 +#: templates/app_gateway/app_gateway_list.html:146 +#: templates/app_gateway/application_details.html:35 #: templates/cluster/workers_list.html:8 templates/dns/static_host_list.html:68 -#: templates/gatekeeper/gatekeeper_list.html:165 +#: templates/gatekeeper/gatekeeper_list.html:166 #: templates/routing_templates/list.html:8 #: templates/scheduler/scheduleprofile_list.html:13 #: templates/user_manager/peer_group_list.html:8 @@ -127,16 +127,16 @@ msgid "Enabled" msgstr "Activé" #: api_v2/views.py:17 api_v2/views.py:27 api_v2/views.py:82 api_v2/views.py:106 -#: app_gateway/views.py:26 app_gateway/views.py:48 app_gateway/views.py:68 -#: app_gateway/views.py:112 app_gateway/views.py:135 app_gateway/views.py:170 -#: app_gateway/views.py:194 app_gateway/views.py:205 app_gateway/views.py:267 -#: app_gateway/views.py:293 app_gateway/views.py:328 app_gateway/views.py:354 -#: app_gateway/views.py:404 app_gateway/views.py:432 cluster/views.py:18 -#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:23 -#: gatekeeper/views.py:48 gatekeeper/views.py:98 gatekeeper/views.py:121 -#: gatekeeper/views.py:151 gatekeeper/views.py:174 gatekeeper/views.py:222 -#: gatekeeper/views.py:281 gatekeeper/views.py:311 gatekeeper/views.py:334 -#: gatekeeper/views.py:364 gatekeeper/views.py:387 gatekeeper/views.py:436 +#: app_gateway/views.py:28 app_gateway/views.py:52 app_gateway/views.py:83 +#: app_gateway/views.py:130 app_gateway/views.py:157 app_gateway/views.py:196 +#: app_gateway/views.py:224 app_gateway/views.py:235 app_gateway/views.py:297 +#: app_gateway/views.py:323 app_gateway/views.py:358 app_gateway/views.py:384 +#: app_gateway/views.py:434 app_gateway/views.py:462 cluster/views.py:18 +#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:25 +#: gatekeeper/views.py:52 gatekeeper/views.py:102 gatekeeper/views.py:125 +#: gatekeeper/views.py:155 gatekeeper/views.py:178 gatekeeper/views.py:226 +#: gatekeeper/views.py:297 gatekeeper/views.py:327 gatekeeper/views.py:350 +#: gatekeeper/views.py:380 gatekeeper/views.py:403 gatekeeper/views.py:452 #: templates/access_denied.html:9 msgid "Access Denied" msgstr "Accès refusé" @@ -206,20 +206,19 @@ msgstr "Êtes-vous sûr de vouloir supprimer la clé d'API \"%(name)s\" ?" msgid "API Documentation" msgstr "Documentation de l'API" -#: app_gateway/forms.py:19 templates/app_gateway/application_details.html:27 -#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15 -msgid "Display Name" -msgstr "Nom à afficher" - -#: app_gateway/forms.py:20 templates/app_gateway/app_gateway_list.html:59 -#: templates/app_gateway/application_details.html:28 +#: app_gateway/forms.py:19 templates/app_gateway/app_gateway_list.html:67 +#: templates/app_gateway/application_details.html:36 msgid "Upstream" msgstr "Upstream" -#: app_gateway/forms.py:41 app_gateway/forms.py:93 app_gateway/forms.py:137 -#: app_gateway/forms.py:155 app_gateway/forms.py:238 app_gateway/forms.py:279 -#: gatekeeper/forms.py:71 gatekeeper/forms.py:151 gatekeeper/forms.py:213 -#: gatekeeper/forms.py:300 gatekeeper/forms.py:330 gatekeeper/forms.py:361 +#: app_gateway/forms.py:20 +msgid "Allow invalid/self-signed certificate" +msgstr "" + +#: app_gateway/forms.py:42 app_gateway/forms.py:100 app_gateway/forms.py:145 +#: app_gateway/forms.py:163 app_gateway/forms.py:242 app_gateway/forms.py:284 +#: gatekeeper/forms.py:72 gatekeeper/forms.py:153 gatekeeper/forms.py:240 +#: gatekeeper/forms.py:363 gatekeeper/forms.py:393 gatekeeper/forms.py:424 #: scheduler/forms.py:103 #: templates/app_gateway/access_policy_type_select.html:50 #: templates/generic_delete_confirmation.html:19 @@ -227,60 +226,66 @@ msgstr "Upstream" msgid "Cancel" msgstr "Annuler" -#: app_gateway/forms.py:54 -msgid "This is a reserved system name." -msgstr "Il s'agit d'un nom de système réservé." - -#: app_gateway/forms.py:58 +#: app_gateway/forms.py:55 msgid "This upstream is reserved by the system." msgstr "Cet upstream est réservé par le système." -#: app_gateway/forms.py:61 +#: app_gateway/forms.py:58 msgid "Upstream URL cannot contain spaces." msgstr "L'URL upstream ne peut pas contenir d'espaces." -#: app_gateway/forms.py:67 +#: app_gateway/forms.py:64 msgid "Enter a valid upstream URL starting with http:// or https://" msgstr "Entrez une URL upstream valide commençant par http:// ou https://" -#: app_gateway/forms.py:77 cluster/forms.py:24 dns/forms.py:65 -#: templates/app_gateway/app_gateway_list.html:101 -#: templates/app_gateway/application_details.html:61 +#: app_gateway/forms.py:66 +msgid "" +"Upstream must be a bare host address with no path, query or fragment. Use " +"http://host or http://host:port" +msgstr "" + +#: app_gateway/forms.py:76 cluster/forms.py:24 dns/forms.py:65 +#: templates/app_gateway/app_gateway_list.html:109 +#: templates/app_gateway/application_details.html:75 #: templates/dns/static_host_list.html:17 #: templates/wireguard/server_detail.html:39 msgid "Hostname" msgstr "Nom d’hôte" -#: app_gateway/forms.py:107 templates/app_gateway/app_gateway_list.html:139 +#: app_gateway/forms.py:84 +msgid "Hostname contains invalid characters." +msgstr "" + +#: app_gateway/forms.py:114 templates/app_gateway/app_gateway_list.html:147 msgid "Policy Type" msgstr "Type de politique" -#: app_gateway/forms.py:108 +#: app_gateway/forms.py:115 msgid "Allowed Groups" msgstr "Groupes autorisés" -#: app_gateway/forms.py:109 templates/gatekeeper/gatekeeper_list.html:12 +#: app_gateway/forms.py:116 templates/gatekeeper/gatekeeper_list.html:13 msgid "Authentication Methods" msgstr "Méthodes d'authentification" -#: app_gateway/forms.py:188 +#: app_gateway/forms.py:196 msgid "Cannot select more than one Local Password authentication method." msgstr "" "Impossible de sélectionner plus d'une méthode d'authentification par mot de " "passe local." -#: app_gateway/forms.py:192 +#: app_gateway/forms.py:200 msgid "" "Cannot select more than one OpenID Connect (OIDC) authentication method." msgstr "" "Impossible de sélectionner plus d'une méthode d'authentification OpenID " "Connect (OIDC)." -#: app_gateway/forms.py:196 +#: app_gateway/forms.py:204 msgid "Cannot select more than one TOTP authentication method." msgstr "Impossible de sélectionner plus d'une méthode d'authentification TOTP." -#: app_gateway/forms.py:200 +#: app_gateway/forms.py:208 msgid "" "Cannot select both Local Password and OpenID Connect (OIDC) authentication " "methods." @@ -288,15 +293,7 @@ msgstr "" "Impossible de sélectionner à la fois les méthodes d'authentification par mot " "de passe local et OpenID Connect (OIDC)." -#: app_gateway/forms.py:204 -msgid "" -"TOTP must be combined with a Local Password or OpenID Connect authentication " -"method." -msgstr "" -"Le TOTP doit être combiné avec une méthode d'authentification par Mot de " -"passe local ou OpenID Connect." - -#: app_gateway/forms.py:208 +#: app_gateway/forms.py:212 msgid "" "At least one user group must be selected when using Local Password " "authentication." @@ -304,75 +301,102 @@ msgstr "" "Au moins un groupe d'utilisateurs doit être sélectionné lors de " "l'utilisation de l'authentification par mot de passe local." -#: app_gateway/forms.py:212 +#: app_gateway/forms.py:216 msgid "User groups can only be used with Local Password authentication." msgstr "" "Les groupes d'utilisateurs ne peuvent être utilisés qu'avec " "l'authentification par mot de passe local." -#: app_gateway/forms.py:222 templates/app_gateway/app_gateway_list.html:62 -#: templates/app_gateway/application_details.html:31 +#: app_gateway/forms.py:226 templates/app_gateway/app_gateway_list.html:70 +#: templates/app_gateway/application_details.html:39 #: templates/firewall/firewall_nav_tabs.html:15 msgid "Default Policy" msgstr "Politique par défaut" -#: app_gateway/forms.py:251 templates/app_gateway/application_details.html:105 +#: app_gateway/forms.py:255 templates/app_gateway/application_details.html:134 msgid "Route Name" msgstr "Nom de la route" -#: app_gateway/forms.py:252 templates/app_gateway/application_details.html:106 +#: app_gateway/forms.py:256 templates/app_gateway/application_details.html:135 msgid "Path Prefix" msgstr "Préfixe de chemin" -#: app_gateway/forms.py:253 templates/app_gateway/application_details.html:107 +#: app_gateway/forms.py:257 templates/app_gateway/application_details.html:136 msgid "Policy" msgstr "Politique" -#: app_gateway/forms.py:254 templates/app_gateway/application_details.html:108 +#: app_gateway/forms.py:258 templates/app_gateway/application_details.html:137 msgid "Order" msgstr "Ordre" -#: app_gateway/models.py:12 +#: app_gateway/forms.py:299 +#, fuzzy +#| msgid "Invite URL must start with 'https://'." +msgid "Path prefix must start with /." +msgstr "L’URL d’invitation doit commencer par « https:// »." + +#: app_gateway/forms.py:301 +#, fuzzy +#| msgid "Upstream URL cannot contain spaces." +msgid "Path prefix cannot contain spaces." +msgstr "L'URL upstream ne peut pas contenir d'espaces." + +#: app_gateway/forms.py:303 +msgid "Path prefix contains invalid characters." +msgstr "" + +#: app_gateway/forms.py:308 +#, fuzzy +#| msgid "This upstream is reserved by the system." +msgid "This path prefix is reserved by the system." +msgstr "Cet upstream est réservé par le système." + +#: app_gateway/models.py:14 msgid "Upstream address, e.g.: http://10.188.18.27:3000" msgstr "Adresse en amont, ex : http://10.188.18.27:3000" -#: app_gateway/models.py:45 +#: app_gateway/models.py:15 +msgid "Allow invalid or self-signed TLS certificates from the upstream" +msgstr "" + +#: app_gateway/models.py:53 #: templates/app_gateway/access_policy_type_select.html:19 msgid "Public" msgstr "Public" -#: app_gateway/models.py:45 +#: app_gateway/models.py:53 #: templates/app_gateway/access_policy_type_select.html:30 msgid "Protected" msgstr "Protégé" -#: app_gateway/models.py:45 gatekeeper/models.py:108 +#: app_gateway/models.py:53 gatekeeper/models.py:142 #: templates/app_gateway/access_policy_type_select.html:41 -#: templates/gatekeeper/gatekeeper_list.html:288 +#: templates/gatekeeper/gatekeeper_list.html:289 msgid "Deny" msgstr "Refuser" -#: app_gateway/models.py:80 -msgid "Route identifier, used in export (e.g.: public_area)" -msgstr "Identifiant d'itinéraire, utilisé dans l'exportation (ex: public_area)" - -#: app_gateway/views.py:60 +#: app_gateway/views.py:75 msgid "Application Details" msgstr "Détails de l'application" -#: app_gateway/views.py:74 templates/app_gateway/application_details.html:15 +#: app_gateway/views.py:90 app_gateway/views.py:174 app_gateway/views.py:204 +msgid "The WireGuard WebAdmin application cannot be modified." +msgstr "" + +#: app_gateway/views.py:92 templates/app_gateway/application_details.html:16 +#: templates/app_gateway/application_details.html:23 msgid "Edit Application" msgstr "Modifier l'application" -#: app_gateway/views.py:77 +#: app_gateway/views.py:95 msgid "Create Application" msgstr "Créer une application" -#: app_gateway/views.py:84 +#: app_gateway/views.py:102 msgid "Application saved successfully." msgstr "Application enregistrée avec succès." -#: app_gateway/views.py:89 +#: app_gateway/views.py:107 msgid "" "\n" "
Application
\n" @@ -407,62 +431,67 @@ msgstr "" " \n" " " -#: app_gateway/views.py:120 +#: app_gateway/views.py:137 +msgid "The WireGuard WebAdmin application cannot be deleted." +msgstr "" + +#: app_gateway/views.py:142 msgid "Application deleted successfully." msgstr "Application supprimée avec succès." -#: app_gateway/views.py:125 templates/app_gateway/application_details.html:18 +#: app_gateway/views.py:147 templates/app_gateway/application_details.html:19 +#: templates/app_gateway/application_details.html:26 msgid "Delete Application" msgstr "Supprimer l'application" -#: app_gateway/views.py:127 +#: app_gateway/views.py:149 #, python-format msgid "Are you sure you want to delete the application \"%(name)s\"?" msgstr "Êtes-vous sûr de vouloir supprimer l'application \"%(name)s\" ?" -#: app_gateway/views.py:143 +#: app_gateway/views.py:165 msgid "Edit Application Host" msgstr "Modifier l'hôte d'application" -#: app_gateway/views.py:147 +#: app_gateway/views.py:169 msgid "Add Application Host" msgstr "Ajouter un hôte d'application" -#: app_gateway/views.py:156 +#: app_gateway/views.py:182 msgid "Application Host saved successfully." msgstr "Hôte d'application enregistré avec succès." -#: app_gateway/views.py:179 +#: app_gateway/views.py:209 msgid "Application Host deleted successfully." msgstr "Hôte d'application supprimé avec succès." -#: app_gateway/views.py:184 +#: app_gateway/views.py:214 msgid "Delete Application Host" msgstr "Supprimer l'hôte d'application" -#: app_gateway/views.py:186 +#: app_gateway/views.py:216 #, python-format msgid "Are you sure you want to delete the host \"%(hostname)s\"?" msgstr "Êtes-vous sûr de vouloir supprimer l'hôte \"%(hostname)s\" ?" -#: app_gateway/views.py:197 +#: app_gateway/views.py:227 #: templates/app_gateway/access_policy_type_select.html:9 msgid "Select Access Policy Type" msgstr "Sélectionner le type de politique d'accès" -#: app_gateway/views.py:212 +#: app_gateway/views.py:242 msgid "Edit Access Policy" msgstr "Modifier la politique d'accès" -#: app_gateway/views.py:216 +#: app_gateway/views.py:246 msgid "Create Access Policy" msgstr "Créer une politique d'accès" -#: app_gateway/views.py:223 +#: app_gateway/views.py:253 msgid "Access Policy saved successfully." msgstr "Politique d'accès enregistrée avec succès." -#: app_gateway/views.py:229 +#: app_gateway/views.py:259 msgid "" "\n" "
Public Policy
\n" @@ -476,7 +505,7 @@ msgstr "" "nécessiter d'authentification.

\n" " " -#: app_gateway/views.py:237 +#: app_gateway/views.py:267 msgid "" "\n" "
Deny Policy
\n" @@ -489,7 +518,7 @@ msgstr "" "correspondants.

\n" " " -#: app_gateway/views.py:245 +#: app_gateway/views.py:275 msgid "" "\n" "
Protected Policy
\n" @@ -520,11 +549,11 @@ msgstr "" " \n" " " -#: app_gateway/views.py:276 +#: app_gateway/views.py:306 msgid "Access Policy deleted successfully." msgstr "Politique d'accès supprimée avec succès." -#: app_gateway/views.py:278 +#: app_gateway/views.py:308 msgid "" "Cannot delete this Access Policy because it is currently in use by an " "Application Route or Application Default Policy." @@ -533,55 +562,55 @@ msgstr "" "utilisée par un itinéraire d'application ou une politique par défaut " "d'application." -#: app_gateway/views.py:283 +#: app_gateway/views.py:313 msgid "Delete Access Policy" msgstr "Supprimer la politique d'accès" -#: app_gateway/views.py:285 +#: app_gateway/views.py:315 #, python-format msgid "Are you sure you want to delete the access policy \"%(name)s\"?" msgstr "Êtes-vous sûr de vouloir supprimer la politique d'accès \"%(name)s\" ?" -#: app_gateway/views.py:301 +#: app_gateway/views.py:331 msgid "Edit Application Default Policy" msgstr "Modifier la politique par défaut de l'application" -#: app_gateway/views.py:305 +#: app_gateway/views.py:335 msgid "Set Application Default Policy" msgstr "Définir la politique par défaut de l'application" -#: app_gateway/views.py:314 +#: app_gateway/views.py:344 msgid "Application Default Policy saved successfully." msgstr "Politique par défaut de l'application enregistrée avec succès." -#: app_gateway/views.py:337 +#: app_gateway/views.py:367 msgid "Application Default Policy deleted successfully." msgstr "Politique par défaut de l'application supprimée avec succès." -#: app_gateway/views.py:342 +#: app_gateway/views.py:372 msgid "Delete Application Default Policy" msgstr "Supprimer la politique par défaut de l'application" -#: app_gateway/views.py:344 +#: app_gateway/views.py:374 #, python-format msgid "Are you sure you want to remove the default policy for \"%(name)s\"?" msgstr "" "Êtes-vous sûr de vouloir supprimer la politique par défaut pour " "\"%(name)s\" ?" -#: app_gateway/views.py:362 +#: app_gateway/views.py:392 msgid "Edit Application Route" msgstr "Modifier la route de l'application" -#: app_gateway/views.py:366 +#: app_gateway/views.py:396 msgid "Add Application Route" msgstr "Ajouter une route d'application" -#: app_gateway/views.py:375 +#: app_gateway/views.py:405 msgid "Application Route saved successfully." msgstr "Route d'application enregistrée avec succès." -#: app_gateway/views.py:380 +#: app_gateway/views.py:410 msgid "" "\n" "
Application Route
\n" @@ -623,42 +652,41 @@ msgstr "" " \n" " " -#: app_gateway/views.py:413 +#: app_gateway/views.py:443 msgid "Application Route deleted successfully." msgstr "Route d'application supprimée avec succès." -#: app_gateway/views.py:418 +#: app_gateway/views.py:448 msgid "Delete Application Route" msgstr "Supprimer la route d'application" -#: app_gateway/views.py:420 +#: app_gateway/views.py:450 #, python-format msgid "Are you sure you want to delete the route \"%(name)s\" (%(path)s)?" msgstr "Êtes-vous sûr de vouloir supprimer la route \"%(name)s\" (%(path)s) ?" -#: app_gateway/views.py:443 +#: app_gateway/views.py:468 +msgid "" +"Configuration export is not available because Caddy is not enabled. To use " +"App Gateway and Gatekeeper, start the application using docker-compose-" +"caddy.yml." +msgstr "" + +#: app_gateway/views.py:478 msgid "Configuration exported successfully." msgstr "Configuration exportée avec succès." -#: app_gateway/views.py:445 -msgid "" -"Caddy is not active. Configuration files were exported for debugging " -"purposes." -msgstr "" -"Caddy n'est pas actif. Les fichiers de configuration ont été exportés à des " -"fins de débogage." - #: cluster/forms.py:20 msgid "IP Lock" msgstr "Verrouillage IP" -#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:271 +#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:315 #: templates/cluster/workers_list.html:10 #: templates/dns/static_host_list.html:18 #: templates/firewall/manage_redirect_rule.html:43 #: templates/firewall/manage_redirect_rule.html:67 #: templates/firewall/manage_redirect_rule.html:68 -#: templates/gatekeeper/gatekeeper_list.html:272 +#: templates/gatekeeper/gatekeeper_list.html:273 #: templates/wireguard/wireguard_status.html:45 msgid "IP Address" msgstr "Adresse IP" @@ -934,7 +962,7 @@ msgstr "DNS statique" msgid "Invalid hostname." msgstr "Nom d'hôte invalide." -#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:274 +#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:318 #: templates/api_v2/api_documentation.html:51 #: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 @@ -1268,13 +1296,13 @@ msgstr "Gérer les paramètres du pare‑feu" msgid "Firewall settings saved successfully" msgstr "Paramètres du pare‑feu enregistrés avec succès" -#: gatekeeper/forms.py:17 templates/accounts/login.html:23 +#: gatekeeper/forms.py:18 templates/accounts/login.html:23 #: templates/vpn_invite/invite_settings.html:19 user_manager/forms.py:14 #: vpn_invite/forms.py:282 msgid "Password" msgstr "Mot de passe" -#: gatekeeper/forms.py:20 +#: gatekeeper/forms.py:21 msgid "" "Minimum 8 characters, with at least one uppercase letter, one lowercase " "letter, and one number." @@ -1282,15 +1310,15 @@ msgstr "" "Minimum 8 caractères, avec au moins une lettre majuscule, une lettre " "minuscule et un chiffre." -#: gatekeeper/forms.py:23 +#: gatekeeper/forms.py:24 msgid "Confirm Password" msgstr "Confirmer le mot de passe" -#: gatekeeper/forms.py:28 gatekeeper/forms.py:161 +#: gatekeeper/forms.py:29 gatekeeper/forms.py:163 msgid "TOTP Validation PIN" msgstr "Code de validation TOTP" -#: gatekeeper/forms.py:31 gatekeeper/forms.py:164 +#: gatekeeper/forms.py:32 gatekeeper/forms.py:166 msgid "" "Enter a 6-digit PIN generated by your authenticator app to validate the " "secret." @@ -1298,193 +1326,227 @@ msgstr "" "Saisissez un code à 6 chiffres généré par votre application " "d'authentification pour valider le secret." -#: gatekeeper/forms.py:38 templates/accounts/login.html:14 -#: templates/gatekeeper/gatekeeper_list.html:61 +#: gatekeeper/forms.py:39 templates/accounts/login.html:14 +#: templates/gatekeeper/gatekeeper_list.html:62 #: templates/user_manager/list.html:8 user_manager/forms.py:13 #: vpn_invite/forms.py:281 msgid "Username" msgstr "Nom d’utilisateur" -#: gatekeeper/forms.py:39 gatekeeper/forms.py:344 -#: templates/gatekeeper/gatekeeper_list.html:62 -#: templates/gatekeeper/gatekeeper_list.html:220 +#: gatekeeper/forms.py:40 gatekeeper/forms.py:407 +#: templates/gatekeeper/gatekeeper_list.html:63 +#: templates/gatekeeper/gatekeeper_list.html:221 #: templates/wireguard/peer_list/peer_preview_modal.html:103 msgid "Email" msgstr "E‑mail" -#: gatekeeper/forms.py:40 +#: gatekeeper/forms.py:41 msgid "TOTP Secret" msgstr "Secret TOTP" -#: gatekeeper/forms.py:87 +#: gatekeeper/forms.py:88 msgid "Password is required." msgstr "Le mot de passe est obligatoire." -#: gatekeeper/forms.py:90 user_manager/forms.py:127 +#: gatekeeper/forms.py:91 user_manager/forms.py:127 msgid "Password must be at least 8 characters long." msgstr "Le mot de passe doit comporter au moins 8 caractères." -#: gatekeeper/forms.py:92 +#: gatekeeper/forms.py:93 msgid "Password must contain at least one lowercase letter." msgstr "Le mot de passe doit contenir au moins une lettre minuscule." -#: gatekeeper/forms.py:94 +#: gatekeeper/forms.py:95 msgid "Password must contain at least one uppercase letter." msgstr "Le mot de passe doit contenir au moins une lettre majuscule." -#: gatekeeper/forms.py:96 +#: gatekeeper/forms.py:97 msgid "Password must contain at least one number." msgstr "Le mot de passe doit contenir au moins un chiffre." -#: gatekeeper/forms.py:98 +#: gatekeeper/forms.py:99 msgid "Passwords do not match." msgstr "Les mots de passe ne correspondent pas." -#: gatekeeper/forms.py:103 gatekeeper/forms.py:249 +#: gatekeeper/forms.py:104 gatekeeper/forms.py:276 msgid "Please provide a PIN to validate the TOTP secret." msgstr "Veuillez fournir un code pour valider le secret TOTP." -#: gatekeeper/forms.py:108 gatekeeper/forms.py:254 +#: gatekeeper/forms.py:109 gatekeeper/forms.py:281 msgid "Invalid TOTP PIN." msgstr "Code TOTP invalide." -#: gatekeeper/forms.py:110 gatekeeper/forms.py:256 +#: gatekeeper/forms.py:111 gatekeeper/forms.py:283 msgid "Invalid TOTP secret format. Must be a valid Base32 string." msgstr "Format du secret TOTP invalide. Doit être une chaîne Base32 valide." -#: gatekeeper/forms.py:130 templates/gatekeeper/gatekeeper_list.html:120 +#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121 msgid "Group Name" msgstr "Nom du groupe" -#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121 +#: gatekeeper/forms.py:132 templates/gatekeeper/gatekeeper_list.html:122 msgid "Members" msgstr "Membres" +#: gatekeeper/forms.py:169 +#, fuzzy +#| msgid "Expiration" +msgid "Session Expiration" +msgstr "Expiration" + #: gatekeeper/forms.py:175 +msgid "Unit" +msgstr "" + +#: gatekeeper/forms.py:176 +msgid "Hour(s)" +msgstr "" + +#: gatekeeper/forms.py:176 +msgid "Day(s)" +msgstr "" + +#: gatekeeper/forms.py:189 msgid "Authentication Type" msgstr "Type d'authentification" -#: gatekeeper/forms.py:176 +#: gatekeeper/forms.py:190 msgid "Global TOTP Secret" msgstr "Secret TOTP mondial" -#: gatekeeper/forms.py:177 +#: gatekeeper/forms.py:191 msgid "OIDC Provider URL" msgstr "URL du fournisseur OIDC" -#: gatekeeper/forms.py:178 +#: gatekeeper/forms.py:192 msgid "OIDC Client ID" msgstr "ID client OIDC" -#: gatekeeper/forms.py:179 +#: gatekeeper/forms.py:193 msgid "OIDC Client Secret" msgstr "Secret client OIDC" -#: gatekeeper/forms.py:230 +#: gatekeeper/forms.py:257 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:232 +#: gatekeeper/forms.py:259 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:234 +#: gatekeeper/forms.py:261 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:240 +#: gatekeeper/forms.py:267 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:243 +#: gatekeeper/forms.py:270 msgid "OIDC fields must be empty for TOTP authentication." msgstr "Les champs OIDC doivent être vides pour l'authentification TOTP." -#: gatekeeper/forms.py:245 +#: gatekeeper/forms.py:272 msgid "TOTP secret is required for TOTP authentication." msgstr "Le secret TOTP est requis pour l'authentification TOTP." -#: gatekeeper/forms.py:259 +#: gatekeeper/forms.py:285 +msgid "" +"OIDC authentication is temporarily unavailable and will be available soon." +msgstr "" + +#: gatekeeper/forms.py:287 msgid "TOTP secret must be empty for OIDC authentication." msgstr "Le secret TOTP doit être vide pour l'authentification OIDC." -#: gatekeeper/forms.py:261 +#: gatekeeper/forms.py:289 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:270 gatekeeper/forms.py:312 gatekeeper/forms.py:343 +#: gatekeeper/forms.py:314 gatekeeper/forms.py:375 gatekeeper/forms.py:406 msgid "Authentication Method" msgstr "Méthode d'authentification" -#: gatekeeper/forms.py:272 templates/gatekeeper/gatekeeper_list.html:273 +#: gatekeeper/forms.py:316 templates/gatekeeper/gatekeeper_list.html:274 msgid "Prefix Length" msgstr "Longueur du préfixe" -#: gatekeeper/forms.py:273 templates/firewall/firewall_rule_list.html:47 +#: gatekeeper/forms.py:317 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 -#: templates/gatekeeper/gatekeeper_list.html:274 +#: templates/gatekeeper/gatekeeper_list.html:275 msgid "Action" msgstr "Action" -#: gatekeeper/forms.py:313 templates/gatekeeper/gatekeeper_list.html:237 +#: gatekeeper/forms.py:332 +#, python-format +msgid "Prefix length for IPv%(version)d must be between 0 and %(max)d." +msgstr "" + +#: gatekeeper/forms.py:376 templates/gatekeeper/gatekeeper_list.html:238 msgid "Domain" msgstr "Domaine" -#: gatekeeper/models.py:10 +#: gatekeeper/models.py:27 msgid "Local Password" msgstr "Mot de passe local" -#: gatekeeper/models.py:11 +#: gatekeeper/models.py:28 msgid "One-Time Password (TOTP)" msgstr "Mot de passe à usage unique (TOTP)" -#: gatekeeper/models.py:12 +#: gatekeeper/models.py:29 msgid "OpenID Connect (OIDC)" msgstr "OpenID Connect (OIDC)" -#: gatekeeper/models.py:13 +#: gatekeeper/models.py:30 msgid "IP Address List" msgstr "Liste d'adresses IP" -#: gatekeeper/models.py:17 +#: gatekeeper/models.py:34 msgid "Shared/global TOTP secret key" msgstr "Clé secrète TOTP partagée/globale" -#: gatekeeper/models.py:68 +#: gatekeeper/models.py:39 +#, fuzzy +#| msgid "Expiration (minutes)" +msgid "Session expiration time in minutes" +msgstr "Expiration (minutes)" + +#: gatekeeper/models.py:96 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:69 +#: gatekeeper/models.py:97 msgid "Per-user TOTP secret key" msgstr "Clé secrète TOTP par utilisateur" -#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:286 +#: gatekeeper/models.py:142 templates/gatekeeper/gatekeeper_list.html:287 msgid "Allow" msgstr "Autoriser" -#: gatekeeper/views.py:54 +#: gatekeeper/views.py:58 msgid "Edit Gatekeeper User" msgstr "Modifier l'utilisateur Gatekeeper" -#: gatekeeper/views.py:57 +#: gatekeeper/views.py:61 msgid "Create Gatekeeper User" msgstr "Créer un utilisateur Gatekeeper" -#: gatekeeper/views.py:64 +#: gatekeeper/views.py:68 msgid "Gatekeeper User saved successfully." msgstr "Utilisateur Gatekeeper enregistré avec succès." -#: gatekeeper/views.py:69 +#: gatekeeper/views.py:73 msgid "" "\n" "

Gatekeeper User

\n" @@ -1528,57 +1590,77 @@ msgstr "" " 6 chiffres avant d'enregistrer.

\n" " " -#: gatekeeper/views.py:106 +#: gatekeeper/views.py:110 msgid "Gatekeeper User deleted successfully." msgstr "Utilisateur Gatekeeper supprimé avec succès." -#: gatekeeper/views.py:111 +#: gatekeeper/views.py:115 msgid "Delete Gatekeeper User" msgstr "Supprimer l'utilisateur Gatekeeper" -#: gatekeeper/views.py:113 +#: gatekeeper/views.py:117 #, python-format msgid "Are you sure you want to delete the user \"%(username)s\"?" msgstr "Êtes-vous sûr de vouloir supprimer l'utilisateur \"%(username)s\" ?" -#: gatekeeper/views.py:127 +#: gatekeeper/views.py:131 msgid "Edit Gatekeeper Group" msgstr "Modifier le groupe Gatekeeper" -#: gatekeeper/views.py:130 +#: gatekeeper/views.py:134 msgid "Create Gatekeeper Group" msgstr "Créer un groupe Gatekeeper" -#: gatekeeper/views.py:137 +#: gatekeeper/views.py:141 msgid "Gatekeeper Group saved successfully." msgstr "Groupe Gatekeeper enregistré avec succès." -#: gatekeeper/views.py:159 +#: gatekeeper/views.py:163 msgid "Gatekeeper Group deleted successfully." msgstr "Groupe Gatekeeper supprimé avec succès." -#: gatekeeper/views.py:164 +#: gatekeeper/views.py:168 msgid "Delete Gatekeeper Group" msgstr "Supprimer le groupe Gatekeeper" -#: gatekeeper/views.py:166 +#: gatekeeper/views.py:170 #, python-format msgid "Are you sure you want to delete the group \"%(name)s\"?" msgstr "Êtes-vous sûr de vouloir supprimer le groupe \"%(name)s\" ?" -#: gatekeeper/views.py:180 +#: gatekeeper/views.py:184 msgid "Edit Authentication Method" msgstr "Modifier la méthode d'authentification" -#: gatekeeper/views.py:183 +#: gatekeeper/views.py:187 msgid "Create Authentication Method" msgstr "Créer une méthode d'authentification" -#: gatekeeper/views.py:190 +#: gatekeeper/views.py:194 msgid "Authentication Method saved successfully." msgstr "Méthode d'authentification enregistrée avec succès." -#: gatekeeper/views.py:195 +#: gatekeeper/views.py:199 +#, fuzzy +#| msgid "" +#| "\n" +#| "

Authentication Types

\n" +#| "

Select how users will authenticate through this method.

\n" +#| " \n" +#| "
Local Password
\n" +#| "

Users will authenticate using a standard username and password " +#| "stored locally. Only one of this type can be created.

\n" +#| " \n" +#| "
OIDC (OpenID Connect)
\n" +#| "

Users will authenticate via an external identity provider " +#| "(like Keycloak, Google, or Authelia). Requires Provider URL, Client ID, " +#| "and Client Secret.

\n" +#| " \n" +#| "
TOTP (Time-Based One-Time Password)
\n" +#| "

Users will need to enter a rotating token from an " +#| "authenticator app. If a user does not have a personal TOTP configured, " +#| "the Global TOTP Secret will be used instead.

\n" +#| " " msgid "" "\n" "

Authentication Types

\n" @@ -1590,8 +1672,8 @@ msgid "" " \n" "
OIDC (OpenID Connect)
\n" "

Users will authenticate via an external identity provider (like " -"Keycloak, Google, or Authelia). Requires Provider URL, Client ID, and Client " -"Secret.

\n" +"Keycloak or Google). Requires Provider URL, Client ID, and Client Secret.\n" " \n" "
TOTP (Time-Based One-Time Password)
\n" "

Users will need to enter a rotating token from an authenticator " @@ -1601,101 +1683,113 @@ msgid "" msgstr "" "\n" "

Types d'authentification

\n" -"

Sélectionnez la manière dont les utilisateurs s'authentifieront via cette méthode.

\n" +"

Sélectionnez la manière dont les utilisateurs s'authentifieront " +"via cette méthode.

\n" "\n" "
Mot de passe local
\n" -"

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" +"

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" "\n" "
OIDC (OpenID Connect)
\n" -"

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" +"

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" "
TOTP (Mot de passe à usage unique basé sur le temps)
\n" -"

Les utilisateurs devront saisir un jeton rotatif à partir d'une application d'authentification. " -"Si un utilisateur n'a pas configuré de TOTP personnel, le secret TOTP global sera utilisé à la place.

\n" +"

Les utilisateurs devront saisir un jeton rotatif à partir d'une " +"application d'authentification. Si un utilisateur n'a pas configuré de TOTP " +"personnel, le secret TOTP global sera utilisé à la place.\n" " " -#: gatekeeper/views.py:230 +#: gatekeeper/views.py:237 +#, python-format +msgid "" +"Cannot delete authentication method \"%(method)s\" because it is used by the " +"following policies: %(policies)s." +msgstr "" + +#: gatekeeper/views.py:243 msgid "Authentication Method deleted successfully." msgstr "Méthode d'authentification supprimée avec succès." -#: gatekeeper/views.py:235 +#: gatekeeper/views.py:248 msgid "Delete Authentication Method" msgstr "Supprimer la méthode d'authentification" -#: gatekeeper/views.py:237 +#: gatekeeper/views.py:250 #, python-format msgid "Are you sure you want to delete the authentication method \"%(name)s\"?" msgstr "" "Êtes-vous sûr de vouloir supprimer la méthode d'authentification " "\"%(name)s\" ?" -#: gatekeeper/views.py:287 +#: gatekeeper/views.py:303 msgid "Edit Allowed Domain" msgstr "Modifier le domaine autorisé" -#: gatekeeper/views.py:290 templates/gatekeeper/gatekeeper_list.html:202 +#: gatekeeper/views.py:306 templates/gatekeeper/gatekeeper_list.html:203 msgid "Add Allowed Domain" msgstr "Ajouter un domaine autorisé" -#: gatekeeper/views.py:297 +#: gatekeeper/views.py:313 msgid "Allowed Domain saved successfully." msgstr "Domaine autorisé enregistré avec succès." -#: gatekeeper/views.py:319 +#: gatekeeper/views.py:335 msgid "Allowed Domain deleted successfully." msgstr "Domaine autorisé supprimé avec succès." -#: gatekeeper/views.py:324 +#: gatekeeper/views.py:340 msgid "Delete Allowed Domain" msgstr "Supprimer le domaine autorisé" -#: gatekeeper/views.py:326 +#: gatekeeper/views.py:342 #, python-format msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?" msgstr "" "Êtes-vous sûr de vouloir supprimer le domaine autorisé \"%(domain)s\" ?" -#: gatekeeper/views.py:340 +#: gatekeeper/views.py:356 msgid "Edit Allowed Email" msgstr "Modifier l'e-mail autorisé" -#: gatekeeper/views.py:343 templates/gatekeeper/gatekeeper_list.html:199 +#: gatekeeper/views.py:359 templates/gatekeeper/gatekeeper_list.html:200 msgid "Add Allowed Email" msgstr "Ajouter un e-mail autorisé" -#: gatekeeper/views.py:350 +#: gatekeeper/views.py:366 msgid "Allowed Email saved successfully." msgstr "E-mail autorisé enregistré avec succès." -#: gatekeeper/views.py:372 +#: gatekeeper/views.py:388 msgid "Allowed Email deleted successfully." msgstr "E-mail autorisé supprimé avec succès." -#: gatekeeper/views.py:377 +#: gatekeeper/views.py:393 msgid "Delete Allowed Email" msgstr "Supprimer l'e-mail autorisé" -#: gatekeeper/views.py:379 +#: gatekeeper/views.py:395 #, python-format msgid "Are you sure you want to delete the allowed email \"%(email)s\"?" msgstr "Êtes-vous sûr de vouloir supprimer l'e-mail autorisé \"%(email)s\" ?" -#: gatekeeper/views.py:393 +#: gatekeeper/views.py:409 msgid "Edit IP Address" msgstr "Modifier l'adresse IP" -#: gatekeeper/views.py:396 templates/gatekeeper/gatekeeper_list.html:263 +#: gatekeeper/views.py:412 templates/gatekeeper/gatekeeper_list.html:264 #: templates/wireguard/wireguard_manage_peer.html:171 msgid "Add IP Address" msgstr "Ajouter une adresse IP" -#: gatekeeper/views.py:403 +#: gatekeeper/views.py:419 msgid "IP Address saved successfully." msgstr "Adresse IP enregistrée avec succès." -#: gatekeeper/views.py:408 +#: gatekeeper/views.py:424 msgid "" "\n" "

IP Address List
\n" @@ -1742,24 +1836,25 @@ msgstr "" "\"Réseau de bureau\", \"Attaquant bloqué\").

\n" " " -#: gatekeeper/views.py:444 +#: gatekeeper/views.py:460 msgid "IP Address deleted successfully." msgstr "Adresse IP supprimée avec succès." -#: gatekeeper/views.py:449 +#: gatekeeper/views.py:465 msgid "Delete IP Address" msgstr "Supprimer l'adresse IP" -#: gatekeeper/views.py:451 +#: gatekeeper/views.py:467 #, python-format msgid "Are you sure you want to delete the IP address \"%(address)s\"?" msgstr "Êtes-vous sûr de vouloir supprimer l'adresse IP \"%(address)s\" ?" -#: intl_tools/forms.py:11 templates/accounts/login.html:36 +#: intl_tools/forms.py:11 msgid "Language" msgstr "Langue" -#: intl_tools/forms.py:24 templates/template_parts/base_navbar.html:14 +#: intl_tools/forms.py:24 templates/accounts/login.html:35 +#: templates/template_parts/base_navbar.html:19 msgid "Change Language" msgstr "Changer de langue" @@ -2093,6 +2188,11 @@ msgstr "" msgid "Login" msgstr "Connexion" +#: templates/accounts/login.html:40 +#: templates/template_parts/base_navbar.html:14 +msgid "Toggle Dark Mode" +msgstr "" + #: templates/accounts/logout.html:11 msgid "You have been successfully logged out." msgstr "Vous avez été déconnecté avec succès." @@ -2115,8 +2215,8 @@ msgid "In" msgstr "Entrée" #: templates/api_v2/api_documentation.html:49 -#: templates/gatekeeper/gatekeeper_list.html:166 -#: templates/gatekeeper/gatekeeper_list.html:211 +#: templates/gatekeeper/gatekeeper_list.html:167 +#: templates/gatekeeper/gatekeeper_list.html:212 #: templates/wireguard/apply_route_template.html:27 msgid "Type" msgstr "Type" @@ -2126,13 +2226,13 @@ msgid "Required" msgstr "Obligatoire" #: templates/api_v2/api_documentation.html:62 -#: templates/gatekeeper/gatekeeper_list.html:75 +#: templates/gatekeeper/gatekeeper_list.html:76 #: templates/scheduler/scheduleprofile_form.html:175 msgid "Yes" msgstr "Oui" #: templates/api_v2/api_documentation.html:64 -#: templates/gatekeeper/gatekeeper_list.html:77 +#: templates/gatekeeper/gatekeeper_list.html:78 #: templates/scheduler/scheduleprofile_form.html:177 msgid "No" msgstr "Non" @@ -2172,17 +2272,17 @@ msgid "Disabled" msgstr "Désactivé" #: templates/api_v2/list.html:68 -#: templates/app_gateway/app_gateway_list.html:154 -#: templates/app_gateway/application_details.html:71 -#: templates/app_gateway/application_details.html:121 +#: templates/app_gateway/app_gateway_list.html:162 +#: templates/app_gateway/application_details.html:99 +#: templates/app_gateway/application_details.html:150 #: templates/cluster/workers_list.html:77 #: templates/dns/static_host_list.html:74 -#: templates/gatekeeper/gatekeeper_list.html:89 -#: templates/gatekeeper/gatekeeper_list.html:132 -#: templates/gatekeeper/gatekeeper_list.html:177 -#: templates/gatekeeper/gatekeeper_list.html:225 -#: templates/gatekeeper/gatekeeper_list.html:242 -#: templates/gatekeeper/gatekeeper_list.html:294 +#: templates/gatekeeper/gatekeeper_list.html:90 +#: templates/gatekeeper/gatekeeper_list.html:133 +#: templates/gatekeeper/gatekeeper_list.html:178 +#: templates/gatekeeper/gatekeeper_list.html:226 +#: templates/gatekeeper/gatekeeper_list.html:243 +#: templates/gatekeeper/gatekeeper_list.html:295 #: templates/routing_templates/list.html:29 #: templates/scheduler/scheduleprofile_form.html:123 #: templates/scheduler/scheduleprofile_list.html:25 @@ -2215,78 +2315,83 @@ msgstr "" msgid "Deny all access." msgstr "Refuser tout accès." -#: templates/app_gateway/app_gateway_list.html:12 -#: templates/app_gateway/app_gateway_list.html:30 +#: templates/app_gateway/app_gateway_list.html:13 +#: templates/app_gateway/app_gateway_list.html:31 msgid "Applications" msgstr "Applications" -#: templates/app_gateway/app_gateway_list.html:18 +#: templates/app_gateway/app_gateway_list.html:19 msgid "Access Policies" msgstr "Politiques d'accès" -#: templates/app_gateway/app_gateway_list.html:34 -#: templates/app_gateway/app_gateway_list.html:60 +#: templates/app_gateway/app_gateway_list.html:35 +#: templates/app_gateway/app_gateway_list.html:68 #: templates/dns/static_host_list.html:70 msgid "Hosts" msgstr "Hôtes" -#: templates/app_gateway/app_gateway_list.html:42 +#: templates/app_gateway/app_gateway_list.html:44 +#: templates/app_gateway/app_gateway_list.html:50 msgid "Export Configuration" msgstr "Exporter la configuration" -#: templates/app_gateway/app_gateway_list.html:46 +#: templates/app_gateway/app_gateway_list.html:49 +msgid "Export is not available because Caddy is not enabled." +msgstr "" + +#: templates/app_gateway/app_gateway_list.html:54 msgid "Add Application" msgstr "Ajouter une application" -#: templates/app_gateway/app_gateway_list.html:61 +#: templates/app_gateway/app_gateway_list.html:69 msgid "Routes" msgstr "Routes" -#: templates/app_gateway/app_gateway_list.html:80 -#: templates/app_gateway/application_details.html:39 +#: templates/app_gateway/app_gateway_list.html:88 +#: templates/app_gateway/application_details.html:47 msgid "Default (Deny)" msgstr "Par défaut (Refuser)" -#: templates/app_gateway/app_gateway_list.html:90 +#: templates/app_gateway/app_gateway_list.html:98 msgid "No Applications found." msgstr "Aucune application trouvée." -#: templates/app_gateway/app_gateway_list.html:102 +#: templates/app_gateway/app_gateway_list.html:110 msgid "Application" msgstr "Application" -#: templates/app_gateway/app_gateway_list.html:121 +#: templates/app_gateway/app_gateway_list.html:129 msgid "No Hosts found." msgstr "Aucun hôte trouvé." -#: templates/app_gateway/app_gateway_list.html:129 +#: templates/app_gateway/app_gateway_list.html:137 msgid "Add Access Policy" msgstr "Ajouter une politique d'accès" -#: templates/app_gateway/app_gateway_list.html:140 -#: templates/gatekeeper/gatekeeper_list.html:43 -#: templates/gatekeeper/gatekeeper_list.html:64 +#: templates/app_gateway/app_gateway_list.html:148 +#: templates/gatekeeper/gatekeeper_list.html:44 +#: templates/gatekeeper/gatekeeper_list.html:65 msgid "Groups" msgstr "Groupes" -#: templates/app_gateway/app_gateway_list.html:141 +#: templates/app_gateway/app_gateway_list.html:149 msgid "Auth Methods" msgstr "Méthodes d'authentification" -#: templates/app_gateway/app_gateway_list.html:142 -#: templates/app_gateway/application_details.html:62 -#: templates/app_gateway/application_details.html:109 -#: templates/gatekeeper/gatekeeper_list.html:65 -#: templates/gatekeeper/gatekeeper_list.html:122 -#: templates/gatekeeper/gatekeeper_list.html:167 -#: templates/gatekeeper/gatekeeper_list.html:214 +#: templates/app_gateway/app_gateway_list.html:150 +#: templates/app_gateway/application_details.html:76 +#: templates/app_gateway/application_details.html:138 +#: templates/gatekeeper/gatekeeper_list.html:66 +#: templates/gatekeeper/gatekeeper_list.html:123 +#: templates/gatekeeper/gatekeeper_list.html:168 +#: templates/gatekeeper/gatekeeper_list.html:215 #: templates/scheduler/scheduleprofile_form.html:111 #: templates/scheduler/scheduleprofile_list.html:15 #: templates/wireguard/apply_route_template.html:28 msgid "Actions" msgstr "Actions" -#: templates/app_gateway/app_gateway_list.html:169 +#: templates/app_gateway/app_gateway_list.html:177 msgid "No Access Policies found." msgstr "Aucune politique d'accès trouvée." @@ -2295,34 +2400,79 @@ msgstr "Aucune politique d'accès trouvée." msgid "Back to List" msgstr "Retour à la liste" -#: templates/app_gateway/application_details.html:41 +#: templates/app_gateway/application_details.html:15 +#: templates/app_gateway/application_details.html:59 +#: templates/app_gateway/application_details.html:91 +#: templates/app_gateway/application_details.html:94 +msgid "This application cannot be modified" +msgstr "" + +#: templates/app_gateway/application_details.html:18 +#, fuzzy +#| msgid "Application Route deleted successfully." +msgid "This application cannot be deleted" +msgstr "Route d'application supprimée avec succès." + +#: templates/app_gateway/application_details.html:49 msgid "Set Policy" msgstr "Définir la politique" -#: templates/app_gateway/application_details.html:48 +#: templates/app_gateway/application_details.html:56 msgid "Application Hosts" msgstr "Hôtes d'application" -#: templates/app_gateway/application_details.html:52 +#: templates/app_gateway/application_details.html:60 +#: templates/app_gateway/application_details.html:65 msgid "Add Host" msgstr "Ajouter un hôte" -#: templates/app_gateway/application_details.html:86 +#: templates/app_gateway/application_details.html:115 msgid "No Hosts configured for this application." msgstr "Aucun hôte configuré pour cette application." -#: templates/app_gateway/application_details.html:92 +#: templates/app_gateway/application_details.html:121 msgid "Application Routes" msgstr "Routes d'application" -#: templates/app_gateway/application_details.html:96 +#: templates/app_gateway/application_details.html:125 msgid "Add Route" msgstr "Ajouter une route" -#: templates/app_gateway/application_details.html:136 +#: templates/app_gateway/application_details.html:165 msgid "No Routes configured for this application." msgstr "Aucune route configurée pour cette application." +#: templates/app_gateway/caddy_disabled_alert.html:5 +#, fuzzy +#| msgid "Cluster is not enabled" +msgid "Caddy is not enabled" +msgstr "Le cluster n'est pas activé" + +#: templates/app_gateway/caddy_disabled_alert.html:6 +msgid "" +"The App Gateway and Gatekeeper modules require Caddy and the auth-gateway " +"container to be running. Please start the application using docker-" +"compose-caddy.yml." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:7 +msgid "" +"Depending on your custom firewall or proxy rules, the way you access " +"wireguard_webadmin may change slightly after enabling Caddy." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:8 +msgid "" +"Switching to Caddy is simple, but it may require a bit of time and attention " +"to review your current setup." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:9 +#, fuzzy +#| msgid "For more information, please visit:" +msgid "For more information, see the discussion:" +msgstr "Pour plus d'informations, veuillez visiter :" + #: templates/cluster/workers_list.html:9 templates/dns/static_host_list.html:72 #: templates/scheduler/scheduleprofile_form.html:82 #: templates/template_parts/base_sidebar.html:13 vpn_invite/forms.py:78 @@ -2829,85 +2979,92 @@ msgstr "" msgid "Create Port forwarding Rule" msgstr "Créer une règle de redirection de port" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:63 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:67 #: templates/gatekeeper/gatekeeper_user_form.html:43 msgid "View QR Code" msgstr "Voir le code QR" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:64 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:68 #: templates/gatekeeper/gatekeeper_user_form.html:44 msgid "Generate TOTP Secret" msgstr "Générer un secret TOTP" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:93 -#: templates/gatekeeper/gatekeeper_user_form.html:73 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:105 +#: templates/gatekeeper/gatekeeper_user_form.html:81 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:18 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:127 +#: templates/gatekeeper/gatekeeper_user_form.html:103 +#, fuzzy +#| msgid "Error creating invite." +msgid "Error generating QR code." +msgstr "Erreur lors de la création de l’invitation." + +#: templates/gatekeeper/gatekeeper_list.html:19 msgid "Gatekeeper Users" msgstr "Utilisateurs de Gatekeeper" -#: templates/gatekeeper/gatekeeper_list.html:24 +#: templates/gatekeeper/gatekeeper_list.html:25 msgid "Allowed Emails & Domains" msgstr "E-mails et domaines autorisés" -#: templates/gatekeeper/gatekeeper_list.html:30 +#: templates/gatekeeper/gatekeeper_list.html:31 msgid "IP Addresses" msgstr "Adresses IP" -#: templates/gatekeeper/gatekeeper_list.html:40 +#: templates/gatekeeper/gatekeeper_list.html:41 #: templates/user_manager/peer_group_list.html:11 msgid "Users" msgstr "Utilisateurs" -#: templates/gatekeeper/gatekeeper_list.html:51 +#: templates/gatekeeper/gatekeeper_list.html:52 #: templates/user_manager/list_buttons.html:2 user_manager/views.py:111 msgid "Add User" msgstr "Ajouter un utilisateur" -#: templates/gatekeeper/gatekeeper_list.html:63 +#: templates/gatekeeper/gatekeeper_list.html:64 msgid "TOTP" msgstr "TOTP" -#: templates/gatekeeper/gatekeeper_list.html:104 +#: templates/gatekeeper/gatekeeper_list.html:105 msgid "No Gatekeeper Users found." msgstr "Aucun utilisateur Gatekeeper trouvé." -#: templates/gatekeeper/gatekeeper_list.html:111 +#: templates/gatekeeper/gatekeeper_list.html:112 msgid "Add Group" msgstr "Ajouter un groupe" -#: templates/gatekeeper/gatekeeper_list.html:147 +#: templates/gatekeeper/gatekeeper_list.html:148 msgid "No Gatekeeper Groups found." msgstr "Aucun groupe Gatekeeper trouvé." -#: templates/gatekeeper/gatekeeper_list.html:156 +#: templates/gatekeeper/gatekeeper_list.html:157 msgid "Add Auth Method" msgstr "Ajouter une méthode d'authentification" -#: templates/gatekeeper/gatekeeper_list.html:192 +#: templates/gatekeeper/gatekeeper_list.html:193 msgid "No Authentication Methods found." msgstr "Aucune méthode d'authentification trouvée." -#: templates/gatekeeper/gatekeeper_list.html:212 +#: templates/gatekeeper/gatekeeper_list.html:213 msgid "Identity" msgstr "Identité" -#: templates/gatekeeper/gatekeeper_list.html:213 -#: templates/gatekeeper/gatekeeper_list.html:275 +#: templates/gatekeeper/gatekeeper_list.html:214 +#: templates/gatekeeper/gatekeeper_list.html:276 msgid "Auth Method" msgstr "Méthode d'authentification" -#: templates/gatekeeper/gatekeeper_list.html:257 +#: templates/gatekeeper/gatekeeper_list.html:258 msgid "No Allowed Emails or Domains found." msgstr "Aucun e-mail ou domaine autorisé trouvé." -#: templates/gatekeeper/gatekeeper_list.html:276 +#: templates/gatekeeper/gatekeeper_list.html:277 msgid "Manage" msgstr "Gérer" -#: templates/gatekeeper/gatekeeper_list.html:309 +#: templates/gatekeeper/gatekeeper_list.html:310 msgid "No IP Addresses found." msgstr "Aucune adresse IP trouvée." @@ -3528,6 +3685,10 @@ msgstr "Supprimer le peer" msgid "Please type \\\"delete\\\" to remove peer configuration." msgstr "Tapez \\\"delete\\\" pour supprimer la configuration du peer." +#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15 +msgid "Display Name" +msgstr "Nom à afficher" + #: templates/wireguard/wireguard_manage_server.html:27 msgid "" "\n" @@ -4521,5 +4682,26 @@ msgstr "" msgid "No interfaces found|No WireGuard interfaces were found to process." msgstr "Aucune interface trouvée | Aucune interface WireGuard à traiter." +#~ msgid "This is a reserved system name." +#~ msgstr "Il s'agit d'un nom de système réservé." + +#~ msgid "" +#~ "TOTP must be combined with a Local Password or OpenID Connect " +#~ "authentication method." +#~ msgstr "" +#~ "Le TOTP doit être combiné avec une méthode d'authentification par Mot de " +#~ "passe local ou OpenID Connect." + +#~ msgid "Route identifier, used in export (e.g.: public_area)" +#~ msgstr "" +#~ "Identifiant d'itinéraire, utilisé dans l'exportation (ex: public_area)" + +#~ msgid "" +#~ "Caddy is not active. Configuration files were exported for debugging " +#~ "purposes." +#~ msgstr "" +#~ "Caddy n'est pas actif. Les fichiers de configuration ont été exportés à " +#~ "des fins de débogage." + #~ msgid "Global TOTP Before Authentication" #~ msgstr "TOTP global avant l'authentification" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index 37e6e5d80bdcd988c4a3b41e2ff2a71f1e8ddd5a..3df1ff5953557c6b4e01187842d056270e6bd9ac 100644 GIT binary patch delta 17236 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 delta 19213 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\n" "Language-Team: LANGUAGE \n" @@ -33,17 +33,17 @@ msgstr "Voltar" #: api_v2/forms.py:30 cluster/forms.py:28 dns/forms.py:69 dns/forms.py:129 #: routing_templates/forms.py:37 -#: templates/app_gateway/app_gateway_list.html:158 -#: templates/app_gateway/application_details.html:75 -#: templates/app_gateway/application_details.html:125 +#: templates/app_gateway/app_gateway_list.html:166 +#: templates/app_gateway/application_details.html:103 +#: templates/app_gateway/application_details.html:154 #: templates/firewall/manage_firewall_rule.html:382 #: templates/firewall/manage_redirect_rule.html:86 -#: templates/gatekeeper/gatekeeper_list.html:93 -#: templates/gatekeeper/gatekeeper_list.html:136 -#: templates/gatekeeper/gatekeeper_list.html:181 -#: templates/gatekeeper/gatekeeper_list.html:229 -#: templates/gatekeeper/gatekeeper_list.html:246 -#: templates/gatekeeper/gatekeeper_list.html:298 +#: templates/gatekeeper/gatekeeper_list.html:94 +#: templates/gatekeeper/gatekeeper_list.html:137 +#: templates/gatekeeper/gatekeeper_list.html:182 +#: templates/gatekeeper/gatekeeper_list.html:230 +#: templates/gatekeeper/gatekeeper_list.html:247 +#: templates/gatekeeper/gatekeeper_list.html:299 #: templates/scheduler/scheduleprofile_form.html:127 #: templates/scheduler/scheduleprofile_list.html:29 #: templates/wireguard/peer_list/peer_preview_modal.html:109 @@ -64,12 +64,12 @@ msgstr "" "Tem certeza de que deseja regenerar o token? O token antigo parará de " "funcionar imediatamente." -#: api_v2/forms.py:63 app_gateway/forms.py:40 app_gateway/forms.py:92 -#: app_gateway/forms.py:136 app_gateway/forms.py:154 app_gateway/forms.py:237 -#: app_gateway/forms.py:278 cluster/forms.py:67 cluster/forms.py:124 -#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:70 -#: gatekeeper/forms.py:150 gatekeeper/forms.py:212 gatekeeper/forms.py:299 -#: gatekeeper/forms.py:329 gatekeeper/forms.py:360 +#: api_v2/forms.py:63 app_gateway/forms.py:41 app_gateway/forms.py:99 +#: app_gateway/forms.py:144 app_gateway/forms.py:162 app_gateway/forms.py:241 +#: app_gateway/forms.py:283 cluster/forms.py:67 cluster/forms.py:124 +#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:71 +#: gatekeeper/forms.py:152 gatekeeper/forms.py:239 gatekeeper/forms.py:362 +#: gatekeeper/forms.py:392 gatekeeper/forms.py:423 #: routing_templates/forms.py:71 scheduler/forms.py:102 #: templates/firewall/manage_firewall_rule.html:379 #: templates/firewall/manage_firewall_settings.html:59 @@ -82,14 +82,14 @@ msgstr "" msgid "Save" msgstr "Salvar" -#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:106 -#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:174 +#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:113 +#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:188 #: routing_templates/forms.py:28 templates/api_v2/api_documentation.html:47 -#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:58 -#: templates/app_gateway/app_gateway_list.html:138 -#: templates/app_gateway/application_details.html:26 +#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:66 +#: templates/app_gateway/app_gateway_list.html:146 +#: templates/app_gateway/application_details.html:35 #: templates/cluster/workers_list.html:8 templates/dns/static_host_list.html:68 -#: templates/gatekeeper/gatekeeper_list.html:165 +#: templates/gatekeeper/gatekeeper_list.html:166 #: templates/routing_templates/list.html:8 #: templates/scheduler/scheduleprofile_list.html:13 #: templates/user_manager/peer_group_list.html:8 @@ -127,16 +127,16 @@ msgid "Enabled" msgstr "Habilitado" #: api_v2/views.py:17 api_v2/views.py:27 api_v2/views.py:82 api_v2/views.py:106 -#: app_gateway/views.py:26 app_gateway/views.py:48 app_gateway/views.py:68 -#: app_gateway/views.py:112 app_gateway/views.py:135 app_gateway/views.py:170 -#: app_gateway/views.py:194 app_gateway/views.py:205 app_gateway/views.py:267 -#: app_gateway/views.py:293 app_gateway/views.py:328 app_gateway/views.py:354 -#: app_gateway/views.py:404 app_gateway/views.py:432 cluster/views.py:18 -#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:23 -#: gatekeeper/views.py:48 gatekeeper/views.py:98 gatekeeper/views.py:121 -#: gatekeeper/views.py:151 gatekeeper/views.py:174 gatekeeper/views.py:222 -#: gatekeeper/views.py:281 gatekeeper/views.py:311 gatekeeper/views.py:334 -#: gatekeeper/views.py:364 gatekeeper/views.py:387 gatekeeper/views.py:436 +#: app_gateway/views.py:28 app_gateway/views.py:52 app_gateway/views.py:83 +#: app_gateway/views.py:130 app_gateway/views.py:157 app_gateway/views.py:196 +#: app_gateway/views.py:224 app_gateway/views.py:235 app_gateway/views.py:297 +#: app_gateway/views.py:323 app_gateway/views.py:358 app_gateway/views.py:384 +#: app_gateway/views.py:434 app_gateway/views.py:462 cluster/views.py:18 +#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:25 +#: gatekeeper/views.py:52 gatekeeper/views.py:102 gatekeeper/views.py:125 +#: gatekeeper/views.py:155 gatekeeper/views.py:178 gatekeeper/views.py:226 +#: gatekeeper/views.py:297 gatekeeper/views.py:327 gatekeeper/views.py:350 +#: gatekeeper/views.py:380 gatekeeper/views.py:403 gatekeeper/views.py:452 #: templates/access_denied.html:9 msgid "Access Denied" msgstr "Acesso Negado" @@ -206,20 +206,19 @@ msgstr "Tem certeza de que deseja excluir a Chave de API \"%(name)s\"?" msgid "API Documentation" msgstr "Documentação da API" -#: app_gateway/forms.py:19 templates/app_gateway/application_details.html:27 -#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15 -msgid "Display Name" -msgstr "Nome de Exibição" - -#: app_gateway/forms.py:20 templates/app_gateway/app_gateway_list.html:59 -#: templates/app_gateway/application_details.html:28 +#: app_gateway/forms.py:19 templates/app_gateway/app_gateway_list.html:67 +#: templates/app_gateway/application_details.html:36 msgid "Upstream" msgstr "Upstream" -#: app_gateway/forms.py:41 app_gateway/forms.py:93 app_gateway/forms.py:137 -#: app_gateway/forms.py:155 app_gateway/forms.py:238 app_gateway/forms.py:279 -#: gatekeeper/forms.py:71 gatekeeper/forms.py:151 gatekeeper/forms.py:213 -#: gatekeeper/forms.py:300 gatekeeper/forms.py:330 gatekeeper/forms.py:361 +#: app_gateway/forms.py:20 +msgid "Allow invalid/self-signed certificate" +msgstr "" + +#: app_gateway/forms.py:42 app_gateway/forms.py:100 app_gateway/forms.py:145 +#: app_gateway/forms.py:163 app_gateway/forms.py:242 app_gateway/forms.py:284 +#: gatekeeper/forms.py:72 gatekeeper/forms.py:153 gatekeeper/forms.py:240 +#: gatekeeper/forms.py:363 gatekeeper/forms.py:393 gatekeeper/forms.py:424 #: scheduler/forms.py:103 #: templates/app_gateway/access_policy_type_select.html:50 #: templates/generic_delete_confirmation.html:19 @@ -227,59 +226,65 @@ msgstr "Upstream" msgid "Cancel" msgstr "Cancelar" -#: app_gateway/forms.py:54 -msgid "This is a reserved system name." -msgstr "Este é um nome de sistema reservado." - -#: app_gateway/forms.py:58 +#: app_gateway/forms.py:55 msgid "This upstream is reserved by the system." msgstr "Este upstream é reservado pelo sistema." -#: app_gateway/forms.py:61 +#: app_gateway/forms.py:58 msgid "Upstream URL cannot contain spaces." msgstr "URL de Upstream não pode conter espaços." -#: app_gateway/forms.py:67 +#: app_gateway/forms.py:64 msgid "Enter a valid upstream URL starting with http:// or https://" msgstr "Insira uma URL de upstream válida começando com http:// ou https://" -#: app_gateway/forms.py:77 cluster/forms.py:24 dns/forms.py:65 -#: templates/app_gateway/app_gateway_list.html:101 -#: templates/app_gateway/application_details.html:61 +#: app_gateway/forms.py:66 +msgid "" +"Upstream must be a bare host address with no path, query or fragment. Use " +"http://host or http://host:port" +msgstr "" + +#: app_gateway/forms.py:76 cluster/forms.py:24 dns/forms.py:65 +#: templates/app_gateway/app_gateway_list.html:109 +#: templates/app_gateway/application_details.html:75 #: templates/dns/static_host_list.html:17 #: templates/wireguard/server_detail.html:39 msgid "Hostname" msgstr "Endereço do Host" -#: app_gateway/forms.py:107 templates/app_gateway/app_gateway_list.html:139 +#: app_gateway/forms.py:84 +msgid "Hostname contains invalid characters." +msgstr "" + +#: app_gateway/forms.py:114 templates/app_gateway/app_gateway_list.html:147 msgid "Policy Type" msgstr "Tipo de Política" -#: app_gateway/forms.py:108 +#: app_gateway/forms.py:115 msgid "Allowed Groups" msgstr "Grupos Permitidos" -#: app_gateway/forms.py:109 templates/gatekeeper/gatekeeper_list.html:12 +#: app_gateway/forms.py:116 templates/gatekeeper/gatekeeper_list.html:13 msgid "Authentication Methods" msgstr "Métodos de Autenticação" -#: app_gateway/forms.py:188 +#: app_gateway/forms.py:196 msgid "Cannot select more than one Local Password authentication method." msgstr "" "Não é possível selecionar mais de um método de autenticação por Senha Local." -#: app_gateway/forms.py:192 +#: app_gateway/forms.py:200 msgid "" "Cannot select more than one OpenID Connect (OIDC) authentication method." msgstr "" "Não é possível selecionar mais de um método de autenticação OpenID Connect " "(OIDC)." -#: app_gateway/forms.py:196 +#: app_gateway/forms.py:204 msgid "Cannot select more than one TOTP authentication method." msgstr "Não é possível selecionar mais de um método de autenticação TOTP." -#: app_gateway/forms.py:200 +#: app_gateway/forms.py:208 msgid "" "Cannot select both Local Password and OpenID Connect (OIDC) authentication " "methods." @@ -287,15 +292,7 @@ msgstr "" "Não é possível selecionar simultaneamente os métodos de autenticação por " "Senha Local e OpenID Connect (OIDC)." -#: app_gateway/forms.py:204 -msgid "" -"TOTP must be combined with a Local Password or OpenID Connect authentication " -"method." -msgstr "" -"O TOTP deve ser combinado com um método de autenticação de Senha Local ou " -"OpenID Connect." - -#: app_gateway/forms.py:208 +#: app_gateway/forms.py:212 msgid "" "At least one user group must be selected when using Local Password " "authentication." @@ -303,74 +300,101 @@ msgstr "" "Pelo menos um grupo de usuários deve ser selecionado ao usar a autenticação " "por Senha Local." -#: app_gateway/forms.py:212 +#: app_gateway/forms.py:216 msgid "User groups can only be used with Local Password authentication." msgstr "" "Grupos de usuários só podem ser usados com autenticação por Senha Local." -#: app_gateway/forms.py:222 templates/app_gateway/app_gateway_list.html:62 -#: templates/app_gateway/application_details.html:31 +#: app_gateway/forms.py:226 templates/app_gateway/app_gateway_list.html:70 +#: templates/app_gateway/application_details.html:39 #: templates/firewall/firewall_nav_tabs.html:15 msgid "Default Policy" msgstr "Política Padrão" -#: app_gateway/forms.py:251 templates/app_gateway/application_details.html:105 +#: app_gateway/forms.py:255 templates/app_gateway/application_details.html:134 msgid "Route Name" msgstr "Nome da Rota" -#: app_gateway/forms.py:252 templates/app_gateway/application_details.html:106 +#: app_gateway/forms.py:256 templates/app_gateway/application_details.html:135 msgid "Path Prefix" msgstr "Prefixo do Caminho" -#: app_gateway/forms.py:253 templates/app_gateway/application_details.html:107 +#: app_gateway/forms.py:257 templates/app_gateway/application_details.html:136 msgid "Policy" msgstr "Política" -#: app_gateway/forms.py:254 templates/app_gateway/application_details.html:108 +#: app_gateway/forms.py:258 templates/app_gateway/application_details.html:137 msgid "Order" msgstr "Ordem" -#: app_gateway/models.py:12 +#: app_gateway/forms.py:299 +#, fuzzy +#| msgid "Invite URL must start with 'https://'." +msgid "Path prefix must start with /." +msgstr "Endereço do convite deve começar com 'https://'." + +#: app_gateway/forms.py:301 +#, fuzzy +#| msgid "Upstream URL cannot contain spaces." +msgid "Path prefix cannot contain spaces." +msgstr "URL de Upstream não pode conter espaços." + +#: app_gateway/forms.py:303 +msgid "Path prefix contains invalid characters." +msgstr "" + +#: app_gateway/forms.py:308 +#, fuzzy +#| msgid "This upstream is reserved by the system." +msgid "This path prefix is reserved by the system." +msgstr "Este upstream é reservado pelo sistema." + +#: app_gateway/models.py:14 msgid "Upstream address, e.g.: http://10.188.18.27:3000" msgstr "Endereço upstream, ex: http://10.188.18.27:3000" -#: app_gateway/models.py:45 +#: app_gateway/models.py:15 +msgid "Allow invalid or self-signed TLS certificates from the upstream" +msgstr "" + +#: app_gateway/models.py:53 #: templates/app_gateway/access_policy_type_select.html:19 msgid "Public" msgstr "Público" -#: app_gateway/models.py:45 +#: app_gateway/models.py:53 #: templates/app_gateway/access_policy_type_select.html:30 msgid "Protected" msgstr "Protegido" -#: app_gateway/models.py:45 gatekeeper/models.py:108 +#: app_gateway/models.py:53 gatekeeper/models.py:142 #: templates/app_gateway/access_policy_type_select.html:41 -#: templates/gatekeeper/gatekeeper_list.html:288 +#: templates/gatekeeper/gatekeeper_list.html:289 msgid "Deny" msgstr "Negar" -#: app_gateway/models.py:80 -msgid "Route identifier, used in export (e.g.: public_area)" -msgstr "Identificador da rota, usado na exportação (ex: public_area)" - -#: app_gateway/views.py:60 +#: app_gateway/views.py:75 msgid "Application Details" msgstr "Detalhes da Aplicação" -#: app_gateway/views.py:74 templates/app_gateway/application_details.html:15 +#: app_gateway/views.py:90 app_gateway/views.py:174 app_gateway/views.py:204 +msgid "The WireGuard WebAdmin application cannot be modified." +msgstr "" + +#: app_gateway/views.py:92 templates/app_gateway/application_details.html:16 +#: templates/app_gateway/application_details.html:23 msgid "Edit Application" msgstr "Editar Aplicação" -#: app_gateway/views.py:77 +#: app_gateway/views.py:95 msgid "Create Application" msgstr "Criar Aplicação" -#: app_gateway/views.py:84 +#: app_gateway/views.py:102 msgid "Application saved successfully." msgstr "Aplicação salva com sucesso." -#: app_gateway/views.py:89 +#: app_gateway/views.py:107 msgid "" "\n" "
Application
\n" @@ -404,62 +428,67 @@ msgstr "" " \n" " " -#: app_gateway/views.py:120 +#: app_gateway/views.py:137 +msgid "The WireGuard WebAdmin application cannot be deleted." +msgstr "" + +#: app_gateway/views.py:142 msgid "Application deleted successfully." msgstr "Aplicação excluída com sucesso." -#: app_gateway/views.py:125 templates/app_gateway/application_details.html:18 +#: app_gateway/views.py:147 templates/app_gateway/application_details.html:19 +#: templates/app_gateway/application_details.html:26 msgid "Delete Application" msgstr "Excluir Aplicação" -#: app_gateway/views.py:127 +#: app_gateway/views.py:149 #, python-format msgid "Are you sure you want to delete the application \"%(name)s\"?" msgstr "Tem certeza de que deseja excluir a aplicação \"%(name)s\"?" -#: app_gateway/views.py:143 +#: app_gateway/views.py:165 msgid "Edit Application Host" msgstr "Editar Host da Aplicação" -#: app_gateway/views.py:147 +#: app_gateway/views.py:169 msgid "Add Application Host" msgstr "Adicionar Host da Aplicação" -#: app_gateway/views.py:156 +#: app_gateway/views.py:182 msgid "Application Host saved successfully." msgstr "Host da Aplicação salvo com sucesso." -#: app_gateway/views.py:179 +#: app_gateway/views.py:209 msgid "Application Host deleted successfully." msgstr "Host da Aplicação excluído com sucesso." -#: app_gateway/views.py:184 +#: app_gateway/views.py:214 msgid "Delete Application Host" msgstr "Excluir Host da Aplicação" -#: app_gateway/views.py:186 +#: app_gateway/views.py:216 #, python-format msgid "Are you sure you want to delete the host \"%(hostname)s\"?" msgstr "Tem certeza de que deseja excluir o host \"%(hostname)s\"?" -#: app_gateway/views.py:197 +#: app_gateway/views.py:227 #: templates/app_gateway/access_policy_type_select.html:9 msgid "Select Access Policy Type" msgstr "Selecionar Tipo de Política de Acesso" -#: app_gateway/views.py:212 +#: app_gateway/views.py:242 msgid "Edit Access Policy" msgstr "Editar Política de Acesso" -#: app_gateway/views.py:216 +#: app_gateway/views.py:246 msgid "Create Access Policy" msgstr "Criar Política de Acesso" -#: app_gateway/views.py:223 +#: app_gateway/views.py:253 msgid "Access Policy saved successfully." msgstr "Política de Acesso salva com sucesso." -#: app_gateway/views.py:229 +#: app_gateway/views.py:259 msgid "" "\n" "
Public Policy
\n" @@ -473,7 +502,7 @@ msgstr "" "exigir nenhuma autenticação.

\n" " " -#: app_gateway/views.py:237 +#: app_gateway/views.py:267 msgid "" "\n" "
Deny Policy
\n" @@ -486,7 +515,7 @@ msgstr "" "correspondentes.

\n" " " -#: app_gateway/views.py:245 +#: app_gateway/views.py:275 msgid "" "\n" "
Protected Policy
\n" @@ -516,11 +545,11 @@ msgstr "" " \n" " " -#: app_gateway/views.py:276 +#: app_gateway/views.py:306 msgid "Access Policy deleted successfully." msgstr "Política de Acesso excluída com sucesso." -#: app_gateway/views.py:278 +#: app_gateway/views.py:308 msgid "" "Cannot delete this Access Policy because it is currently in use by an " "Application Route or Application Default Policy." @@ -528,53 +557,53 @@ msgstr "" "Não é possível excluir esta Política de Acesso porque ela está em uso por " "uma Rota de Aplicativo ou Política Padrão de Aplicativo." -#: app_gateway/views.py:283 +#: app_gateway/views.py:313 msgid "Delete Access Policy" msgstr "Excluir Política de Acesso" -#: app_gateway/views.py:285 +#: app_gateway/views.py:315 #, python-format msgid "Are you sure you want to delete the access policy \"%(name)s\"?" msgstr "Tem certeza de que deseja excluir a política de acesso \"%(name)s\"?" -#: app_gateway/views.py:301 +#: app_gateway/views.py:331 msgid "Edit Application Default Policy" msgstr "Editar Política Padrão da Aplicação" -#: app_gateway/views.py:305 +#: app_gateway/views.py:335 msgid "Set Application Default Policy" msgstr "Configurar Política Padrão da Aplicação" -#: app_gateway/views.py:314 +#: app_gateway/views.py:344 msgid "Application Default Policy saved successfully." msgstr "Política Padrão da Aplicação salva com sucesso." -#: app_gateway/views.py:337 +#: app_gateway/views.py:367 msgid "Application Default Policy deleted successfully." msgstr "Política Padrão da Aplicação excluída com sucesso." -#: app_gateway/views.py:342 +#: app_gateway/views.py:372 msgid "Delete Application Default Policy" msgstr "Excluir Política Padrão da Aplicação" -#: app_gateway/views.py:344 +#: app_gateway/views.py:374 #, python-format msgid "Are you sure you want to remove the default policy for \"%(name)s\"?" msgstr "Tem certeza de que deseja remover a política padrão para \"%(name)s\"?" -#: app_gateway/views.py:362 +#: app_gateway/views.py:392 msgid "Edit Application Route" msgstr "Editar Rota da Aplicação" -#: app_gateway/views.py:366 +#: app_gateway/views.py:396 msgid "Add Application Route" msgstr "Adicionar Rota da Aplicação" -#: app_gateway/views.py:375 +#: app_gateway/views.py:405 msgid "Application Route saved successfully." msgstr "Rota da Aplicação salva com sucesso." -#: app_gateway/views.py:380 +#: app_gateway/views.py:410 msgid "" "\n" "
Application Route
\n" @@ -614,42 +643,41 @@ msgstr "" " \n" " " -#: app_gateway/views.py:413 +#: app_gateway/views.py:443 msgid "Application Route deleted successfully." msgstr "Rota da Aplicação excluída com sucesso." -#: app_gateway/views.py:418 +#: app_gateway/views.py:448 msgid "Delete Application Route" msgstr "Excluir Rota da Aplicação" -#: app_gateway/views.py:420 +#: app_gateway/views.py:450 #, python-format msgid "Are you sure you want to delete the route \"%(name)s\" (%(path)s)?" msgstr "Tem certeza de que deseja excluir a rota \"%(name)s\" (%(path)s)?" -#: app_gateway/views.py:443 +#: app_gateway/views.py:468 +msgid "" +"Configuration export is not available because Caddy is not enabled. To use " +"App Gateway and Gatekeeper, start the application using docker-compose-" +"caddy.yml." +msgstr "" + +#: app_gateway/views.py:478 msgid "Configuration exported successfully." msgstr "Configuração exportada com sucesso." -#: app_gateway/views.py:445 -msgid "" -"Caddy is not active. Configuration files were exported for debugging " -"purposes." -msgstr "" -"O Caddy não está ativo. Os arquivos de configuração foram exportados para " -"fins de depuração." - #: cluster/forms.py:20 msgid "IP Lock" msgstr "Bloqueio de IP" -#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:271 +#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:315 #: templates/cluster/workers_list.html:10 #: templates/dns/static_host_list.html:18 #: templates/firewall/manage_redirect_rule.html:43 #: templates/firewall/manage_redirect_rule.html:67 #: templates/firewall/manage_redirect_rule.html:68 -#: templates/gatekeeper/gatekeeper_list.html:272 +#: templates/gatekeeper/gatekeeper_list.html:273 #: templates/wireguard/wireguard_status.html:45 msgid "IP Address" msgstr "Endereço IP" @@ -924,7 +952,7 @@ msgstr "DNS Estático" msgid "Invalid hostname." msgstr "Nome de host inválido." -#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:274 +#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:318 #: templates/api_v2/api_documentation.html:51 #: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 @@ -1259,13 +1287,13 @@ msgstr "Gerenciar Configurações de Firewall" msgid "Firewall settings saved successfully" msgstr "Configurações de Firewall salvas com sucesso" -#: gatekeeper/forms.py:17 templates/accounts/login.html:23 +#: gatekeeper/forms.py:18 templates/accounts/login.html:23 #: templates/vpn_invite/invite_settings.html:19 user_manager/forms.py:14 #: vpn_invite/forms.py:282 msgid "Password" msgstr "Senha" -#: gatekeeper/forms.py:20 +#: gatekeeper/forms.py:21 msgid "" "Minimum 8 characters, with at least one uppercase letter, one lowercase " "letter, and one number." @@ -1273,15 +1301,15 @@ msgstr "" "Mínimo de 8 caracteres, com pelo menos uma letra maiúscula, uma letra " "minúscula e um número." -#: gatekeeper/forms.py:23 +#: gatekeeper/forms.py:24 msgid "Confirm Password" msgstr "Confirmar Senha" -#: gatekeeper/forms.py:28 gatekeeper/forms.py:161 +#: gatekeeper/forms.py:29 gatekeeper/forms.py:163 msgid "TOTP Validation PIN" msgstr "PIN de Validação TOTP" -#: gatekeeper/forms.py:31 gatekeeper/forms.py:164 +#: gatekeeper/forms.py:32 gatekeeper/forms.py:166 msgid "" "Enter a 6-digit PIN generated by your authenticator app to validate the " "secret." @@ -1289,184 +1317,218 @@ msgstr "" "Insira um PIN de 6 dígitos gerado pelo seu aplicativo autenticador para " "validar o segredo." -#: gatekeeper/forms.py:38 templates/accounts/login.html:14 -#: templates/gatekeeper/gatekeeper_list.html:61 +#: gatekeeper/forms.py:39 templates/accounts/login.html:14 +#: templates/gatekeeper/gatekeeper_list.html:62 #: templates/user_manager/list.html:8 user_manager/forms.py:13 #: vpn_invite/forms.py:281 msgid "Username" msgstr "Usuário" -#: gatekeeper/forms.py:39 gatekeeper/forms.py:344 -#: templates/gatekeeper/gatekeeper_list.html:62 -#: templates/gatekeeper/gatekeeper_list.html:220 +#: gatekeeper/forms.py:40 gatekeeper/forms.py:407 +#: templates/gatekeeper/gatekeeper_list.html:63 +#: templates/gatekeeper/gatekeeper_list.html:221 #: templates/wireguard/peer_list/peer_preview_modal.html:103 msgid "Email" msgstr "Email" -#: gatekeeper/forms.py:40 +#: gatekeeper/forms.py:41 msgid "TOTP Secret" msgstr "Segredo TOTP" -#: gatekeeper/forms.py:87 +#: gatekeeper/forms.py:88 msgid "Password is required." msgstr "A senha é obrigatória." -#: gatekeeper/forms.py:90 user_manager/forms.py:127 +#: gatekeeper/forms.py:91 user_manager/forms.py:127 msgid "Password must be at least 8 characters long." msgstr "Senha deve ter pelo menos 8 caracteres." -#: gatekeeper/forms.py:92 +#: gatekeeper/forms.py:93 msgid "Password must contain at least one lowercase letter." msgstr "A senha deve conter pelo menos uma letra minúscula." -#: gatekeeper/forms.py:94 +#: gatekeeper/forms.py:95 msgid "Password must contain at least one uppercase letter." msgstr "A senha deve conter pelo menos uma letra maiúscula." -#: gatekeeper/forms.py:96 +#: gatekeeper/forms.py:97 msgid "Password must contain at least one number." msgstr "A senha deve conter pelo menos um número." -#: gatekeeper/forms.py:98 +#: gatekeeper/forms.py:99 msgid "Passwords do not match." msgstr "As senhas não coincidem." -#: gatekeeper/forms.py:103 gatekeeper/forms.py:249 +#: gatekeeper/forms.py:104 gatekeeper/forms.py:276 msgid "Please provide a PIN to validate the TOTP secret." msgstr "Por favor, forneça um PIN para validar o segredo TOTP." -#: gatekeeper/forms.py:108 gatekeeper/forms.py:254 +#: gatekeeper/forms.py:109 gatekeeper/forms.py:281 msgid "Invalid TOTP PIN." msgstr "PIN TOTP inválido." -#: gatekeeper/forms.py:110 gatekeeper/forms.py:256 +#: gatekeeper/forms.py:111 gatekeeper/forms.py:283 msgid "Invalid TOTP secret format. Must be a valid Base32 string." msgstr "Formato de segredo TOTP inválido. Deve ser uma string Base32 válida." -#: gatekeeper/forms.py:130 templates/gatekeeper/gatekeeper_list.html:120 +#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121 msgid "Group Name" msgstr "Nome do Grupo" -#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121 +#: gatekeeper/forms.py:132 templates/gatekeeper/gatekeeper_list.html:122 msgid "Members" msgstr "Membros" +#: gatekeeper/forms.py:169 +#, fuzzy +#| msgid "Expiration" +msgid "Session Expiration" +msgstr "Expira em" + #: gatekeeper/forms.py:175 +msgid "Unit" +msgstr "" + +#: gatekeeper/forms.py:176 +msgid "Hour(s)" +msgstr "" + +#: gatekeeper/forms.py:176 +msgid "Day(s)" +msgstr "" + +#: gatekeeper/forms.py:189 msgid "Authentication Type" msgstr "Tipo de Autenticação" -#: gatekeeper/forms.py:176 +#: gatekeeper/forms.py:190 msgid "Global TOTP Secret" msgstr "Segredo TOTP Global" -#: gatekeeper/forms.py:177 +#: gatekeeper/forms.py:191 msgid "OIDC Provider URL" msgstr "URL do Provedor OIDC" -#: gatekeeper/forms.py:178 +#: gatekeeper/forms.py:192 msgid "OIDC Client ID" msgstr "ID do Cliente OIDC" -#: gatekeeper/forms.py:179 +#: gatekeeper/forms.py:193 msgid "OIDC Client Secret" msgstr "Segredo do Cliente OIDC" -#: gatekeeper/forms.py:230 +#: gatekeeper/forms.py:257 msgid "TOTP secret must be empty for Local Password authentication." msgstr "O segredo TOTP deve estar vazio para autenticação por Senha Local." -#: gatekeeper/forms.py:232 +#: gatekeeper/forms.py:259 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:234 +#: gatekeeper/forms.py:261 msgid "OIDC fields must be empty for Local Password authentication." msgstr "Os campos OIDC devem estar vazios para autenticação por Senha Local." -#: gatekeeper/forms.py:240 +#: gatekeeper/forms.py:267 msgid "Only one Local Password authentication method can be configured." msgstr "Apenas um método de autenticação por Senha Local pode ser configurado." -#: gatekeeper/forms.py:243 +#: gatekeeper/forms.py:270 msgid "OIDC fields must be empty for TOTP authentication." msgstr "Os campos OIDC devem estar vazios para autenticação por TOTP." -#: gatekeeper/forms.py:245 +#: gatekeeper/forms.py:272 msgid "TOTP secret is required for TOTP authentication." msgstr "O segredo TOTP é obrigatório para autenticação por TOTP." -#: gatekeeper/forms.py:259 +#: gatekeeper/forms.py:285 +msgid "" +"OIDC authentication is temporarily unavailable and will be available soon." +msgstr "" + +#: gatekeeper/forms.py:287 msgid "TOTP secret must be empty for OIDC authentication." msgstr "O segredo TOTP deve estar vazio para autenticação por OIDC." -#: gatekeeper/forms.py:261 +#: gatekeeper/forms.py:289 msgid "TOTP validation PIN must be empty for OIDC authentication." msgstr "O PIN de validação TOTP deve estar vazio para autenticação por OIDC." -#: gatekeeper/forms.py:270 gatekeeper/forms.py:312 gatekeeper/forms.py:343 +#: gatekeeper/forms.py:314 gatekeeper/forms.py:375 gatekeeper/forms.py:406 msgid "Authentication Method" msgstr "Método de Autenticação" -#: gatekeeper/forms.py:272 templates/gatekeeper/gatekeeper_list.html:273 +#: gatekeeper/forms.py:316 templates/gatekeeper/gatekeeper_list.html:274 msgid "Prefix Length" msgstr "Comprimento do Prefixo" -#: gatekeeper/forms.py:273 templates/firewall/firewall_rule_list.html:47 +#: gatekeeper/forms.py:317 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 -#: templates/gatekeeper/gatekeeper_list.html:274 +#: templates/gatekeeper/gatekeeper_list.html:275 msgid "Action" msgstr "Ação" -#: gatekeeper/forms.py:313 templates/gatekeeper/gatekeeper_list.html:237 +#: gatekeeper/forms.py:332 +#, python-format +msgid "Prefix length for IPv%(version)d must be between 0 and %(max)d." +msgstr "" + +#: gatekeeper/forms.py:376 templates/gatekeeper/gatekeeper_list.html:238 msgid "Domain" msgstr "Domínio" -#: gatekeeper/models.py:10 +#: gatekeeper/models.py:27 msgid "Local Password" msgstr "Senha Local" -#: gatekeeper/models.py:11 +#: gatekeeper/models.py:28 msgid "One-Time Password (TOTP)" msgstr "Senha de Uso Único (TOTP)" -#: gatekeeper/models.py:12 +#: gatekeeper/models.py:29 msgid "OpenID Connect (OIDC)" msgstr "OpenID Connect (OIDC)" -#: gatekeeper/models.py:13 +#: gatekeeper/models.py:30 msgid "IP Address List" msgstr "Lista de Endereços IP" -#: gatekeeper/models.py:17 +#: gatekeeper/models.py:34 msgid "Shared/global TOTP secret key" msgstr "Chave secreta TOTP compartilhada/global" -#: gatekeeper/models.py:68 +#: gatekeeper/models.py:39 +#, fuzzy +#| msgid "Expiration (minutes)" +msgid "Session expiration time in minutes" +msgstr "Expira em (minutos)" + +#: gatekeeper/models.py:96 msgid "Password for local authentication (leave blank if not using)" msgstr "Senha para autenticação local (deixe em branco se não estiver usando)" -#: gatekeeper/models.py:69 +#: gatekeeper/models.py:97 msgid "Per-user TOTP secret key" msgstr "Chave secreta TOTP por usuário" -#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:286 +#: gatekeeper/models.py:142 templates/gatekeeper/gatekeeper_list.html:287 msgid "Allow" msgstr "Permitir" -#: gatekeeper/views.py:54 +#: gatekeeper/views.py:58 msgid "Edit Gatekeeper User" msgstr "Editar Usuário Gatekeeper" -#: gatekeeper/views.py:57 +#: gatekeeper/views.py:61 msgid "Create Gatekeeper User" msgstr "Criar Usuário Gatekeeper" -#: gatekeeper/views.py:64 +#: gatekeeper/views.py:68 msgid "Gatekeeper User saved successfully." msgstr "Usuário Gatekeeper salvo com sucesso." -#: gatekeeper/views.py:69 +#: gatekeeper/views.py:73 msgid "" "\n" "

Gatekeeper User

\n" @@ -1490,17 +1552,18 @@ msgid "" msgstr "" "\n" "

Usuário do Gatekeeper

\n" -"

Usuários do Gatekeeper são usados para autenticação em aplicações protegidas " -"gerenciadas por este gateway.

\n" +"

Usuários do Gatekeeper são usados para autenticação em aplicações " +"protegidas gerenciadas por este gateway.

\n" "\n" "
Senha
\n" -"

Obrigatório ao criar um usuário. Ao editar, deixe ambos os campos de senha " -"em branco para manter a senha atual.\n" -" As senhas são armazenadas usando hash Argon2id.

\n" +"

Obrigatório ao criar um usuário. Ao editar, deixe ambos os campos " +"de senha em branco para manter a senha atual.\n" +" As senhas são armazenadas usando hash Argon2id.\n" "\n" "

Segredo TOTP
\n" -"

Segredo TOTP opcional por usuário. Quando definido, este usuário irá " -"se autenticar usando seu próprio segredo em vez do\n" +"

Segredo TOTP opcional por usuário. Quando definido, este usuário " +"irá se autenticar usando seu próprio segredo em vez do\n" " segredo TOTP global configurado no Método de Autenticação. Use os " "botões abaixo do campo para gerar um\n" " segredo aleatório e ler o código QR com seu aplicativo autenticador. " @@ -1508,57 +1571,77 @@ msgstr "" " 6 dígitos antes de salvar.

\n" " " -#: gatekeeper/views.py:106 +#: gatekeeper/views.py:110 msgid "Gatekeeper User deleted successfully." msgstr "Usuário Gatekeeper excluído com sucesso." -#: gatekeeper/views.py:111 +#: gatekeeper/views.py:115 msgid "Delete Gatekeeper User" msgstr "Excluir Usuário Gatekeeper" -#: gatekeeper/views.py:113 +#: gatekeeper/views.py:117 #, python-format msgid "Are you sure you want to delete the user \"%(username)s\"?" msgstr "Tem certeza de que deseja excluir o usuário \"%(username)s\"?" -#: gatekeeper/views.py:127 +#: gatekeeper/views.py:131 msgid "Edit Gatekeeper Group" msgstr "Editar Grupo Gatekeeper" -#: gatekeeper/views.py:130 +#: gatekeeper/views.py:134 msgid "Create Gatekeeper Group" msgstr "Criar Grupo Gatekeeper" -#: gatekeeper/views.py:137 +#: gatekeeper/views.py:141 msgid "Gatekeeper Group saved successfully." msgstr "Grupo Gatekeeper salvo com sucesso." -#: gatekeeper/views.py:159 +#: gatekeeper/views.py:163 msgid "Gatekeeper Group deleted successfully." msgstr "Grupo Gatekeeper excluído com sucesso." -#: gatekeeper/views.py:164 +#: gatekeeper/views.py:168 msgid "Delete Gatekeeper Group" msgstr "Excluir Grupo Gatekeeper" -#: gatekeeper/views.py:166 +#: gatekeeper/views.py:170 #, python-format msgid "Are you sure you want to delete the group \"%(name)s\"?" msgstr "Tem certeza de que deseja excluir o grupo \"%(name)s\"?" -#: gatekeeper/views.py:180 +#: gatekeeper/views.py:184 msgid "Edit Authentication Method" msgstr "Editar Método de Autenticação" -#: gatekeeper/views.py:183 +#: gatekeeper/views.py:187 msgid "Create Authentication Method" msgstr "Criar Método de Autenticação" -#: gatekeeper/views.py:190 +#: gatekeeper/views.py:194 msgid "Authentication Method saved successfully." msgstr "Método de Autenticação salvo com sucesso." -#: gatekeeper/views.py:195 +#: gatekeeper/views.py:199 +#, fuzzy +#| msgid "" +#| "\n" +#| "

Authentication Types

\n" +#| "

Select how users will authenticate through this method.

\n" +#| " \n" +#| "
Local Password
\n" +#| "

Users will authenticate using a standard username and password " +#| "stored locally. Only one of this type can be created.

\n" +#| " \n" +#| "
OIDC (OpenID Connect)
\n" +#| "

Users will authenticate via an external identity provider " +#| "(like Keycloak, Google, or Authelia). Requires Provider URL, Client ID, " +#| "and Client Secret.

\n" +#| " \n" +#| "
TOTP (Time-Based One-Time Password)
\n" +#| "

Users will need to enter a rotating token from an " +#| "authenticator app. If a user does not have a personal TOTP configured, " +#| "the Global TOTP Secret will be used instead.

\n" +#| " " msgid "" "\n" "

Authentication Types

\n" @@ -1570,8 +1653,8 @@ msgid "" " \n" "
OIDC (OpenID Connect)
\n" "

Users will authenticate via an external identity provider (like " -"Keycloak, Google, or Authelia). Requires Provider URL, Client ID, and Client " -"Secret.

\n" +"Keycloak or Google). Requires Provider URL, Client ID, and Client Secret.\n" " \n" "
TOTP (Time-Based One-Time Password)
\n" "

Users will need to enter a rotating token from an authenticator " @@ -1599,84 +1682,91 @@ msgstr "" "Segredo TOTP Global será usado em seu lugar.

\n" " " -#: gatekeeper/views.py:230 +#: gatekeeper/views.py:237 +#, python-format +msgid "" +"Cannot delete authentication method \"%(method)s\" because it is used by the " +"following policies: %(policies)s." +msgstr "" + +#: gatekeeper/views.py:243 msgid "Authentication Method deleted successfully." msgstr "Método de Autenticação excluído com sucesso." -#: gatekeeper/views.py:235 +#: gatekeeper/views.py:248 msgid "Delete Authentication Method" msgstr "Excluir Método de Autenticação" -#: gatekeeper/views.py:237 +#: gatekeeper/views.py:250 #, python-format msgid "Are you sure you want to delete the authentication method \"%(name)s\"?" msgstr "" "Tem certeza de que deseja excluir o método de autenticação \"%(name)s\"?" -#: gatekeeper/views.py:287 +#: gatekeeper/views.py:303 msgid "Edit Allowed Domain" msgstr "Editar Domínio Permitido" -#: gatekeeper/views.py:290 templates/gatekeeper/gatekeeper_list.html:202 +#: gatekeeper/views.py:306 templates/gatekeeper/gatekeeper_list.html:203 msgid "Add Allowed Domain" msgstr "Adicionar Domínio Permitido" -#: gatekeeper/views.py:297 +#: gatekeeper/views.py:313 msgid "Allowed Domain saved successfully." msgstr "Domínio Permitido salvo com sucesso." -#: gatekeeper/views.py:319 +#: gatekeeper/views.py:335 msgid "Allowed Domain deleted successfully." msgstr "Domínio Permitido excluído com sucesso." -#: gatekeeper/views.py:324 +#: gatekeeper/views.py:340 msgid "Delete Allowed Domain" msgstr "Excluir Domínio Permitido" -#: gatekeeper/views.py:326 +#: gatekeeper/views.py:342 #, python-format msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?" msgstr "Tem certeza de que deseja excluir o domínio permitido \"%(domain)s\"?" -#: gatekeeper/views.py:340 +#: gatekeeper/views.py:356 msgid "Edit Allowed Email" msgstr "Editar E-mail Permitido" -#: gatekeeper/views.py:343 templates/gatekeeper/gatekeeper_list.html:199 +#: gatekeeper/views.py:359 templates/gatekeeper/gatekeeper_list.html:200 msgid "Add Allowed Email" msgstr "Adicionar E-mail Permitido" -#: gatekeeper/views.py:350 +#: gatekeeper/views.py:366 msgid "Allowed Email saved successfully." msgstr "E-mail Permitido salvo com sucesso." -#: gatekeeper/views.py:372 +#: gatekeeper/views.py:388 msgid "Allowed Email deleted successfully." msgstr "E-mail Permitido excluído com sucesso." -#: gatekeeper/views.py:377 +#: gatekeeper/views.py:393 msgid "Delete Allowed Email" msgstr "Excluir E-mail Permitido" -#: gatekeeper/views.py:379 +#: gatekeeper/views.py:395 #, python-format msgid "Are you sure you want to delete the allowed email \"%(email)s\"?" msgstr "Tem certeza de que deseja excluir o e-mail permitido \"%(email)s\"?" -#: gatekeeper/views.py:393 +#: gatekeeper/views.py:409 msgid "Edit IP Address" msgstr "Editar Endereço IP" -#: gatekeeper/views.py:396 templates/gatekeeper/gatekeeper_list.html:263 +#: gatekeeper/views.py:412 templates/gatekeeper/gatekeeper_list.html:264 #: templates/wireguard/wireguard_manage_peer.html:171 msgid "Add IP Address" msgstr "Adicionar IP" -#: gatekeeper/views.py:403 +#: gatekeeper/views.py:419 msgid "IP Address saved successfully." msgstr "Endereço IP salvo com sucesso." -#: gatekeeper/views.py:408 +#: gatekeeper/views.py:424 msgid "" "\n" "
IP Address List
\n" @@ -1723,24 +1813,25 @@ msgstr "" "\"Rede do Escritório\", \"Atacante Bloqueado\").

\n" " " -#: gatekeeper/views.py:444 +#: gatekeeper/views.py:460 msgid "IP Address deleted successfully." msgstr "Endereço IP excluído com sucesso." -#: gatekeeper/views.py:449 +#: gatekeeper/views.py:465 msgid "Delete IP Address" msgstr "Excluir Endereço IP" -#: gatekeeper/views.py:451 +#: gatekeeper/views.py:467 #, python-format msgid "Are you sure you want to delete the IP address \"%(address)s\"?" msgstr "Tem certeza de que deseja excluir o endereço IP \"%(address)s\"?" -#: intl_tools/forms.py:11 templates/accounts/login.html:36 +#: intl_tools/forms.py:11 msgid "Language" msgstr "Idioma" -#: intl_tools/forms.py:24 templates/template_parts/base_navbar.html:14 +#: intl_tools/forms.py:24 templates/accounts/login.html:35 +#: templates/template_parts/base_navbar.html:19 msgid "Change Language" msgstr "Alterar Idioma" @@ -2077,6 +2168,11 @@ msgstr "" msgid "Login" msgstr "Acessar" +#: templates/accounts/login.html:40 +#: templates/template_parts/base_navbar.html:14 +msgid "Toggle Dark Mode" +msgstr "" + #: templates/accounts/logout.html:11 msgid "You have been successfully logged out." msgstr "Você foi desconectado com sucesso." @@ -2099,8 +2195,8 @@ msgid "In" msgstr "Entrada" #: templates/api_v2/api_documentation.html:49 -#: templates/gatekeeper/gatekeeper_list.html:166 -#: templates/gatekeeper/gatekeeper_list.html:211 +#: templates/gatekeeper/gatekeeper_list.html:167 +#: templates/gatekeeper/gatekeeper_list.html:212 #: templates/wireguard/apply_route_template.html:27 msgid "Type" msgstr "Tipo" @@ -2110,13 +2206,13 @@ msgid "Required" msgstr "Obrigatório" #: templates/api_v2/api_documentation.html:62 -#: templates/gatekeeper/gatekeeper_list.html:75 +#: templates/gatekeeper/gatekeeper_list.html:76 #: templates/scheduler/scheduleprofile_form.html:175 msgid "Yes" msgstr "Sim" #: templates/api_v2/api_documentation.html:64 -#: templates/gatekeeper/gatekeeper_list.html:77 +#: templates/gatekeeper/gatekeeper_list.html:78 #: templates/scheduler/scheduleprofile_form.html:177 msgid "No" msgstr "Não" @@ -2156,17 +2252,17 @@ msgid "Disabled" msgstr "Desabilitado" #: templates/api_v2/list.html:68 -#: templates/app_gateway/app_gateway_list.html:154 -#: templates/app_gateway/application_details.html:71 -#: templates/app_gateway/application_details.html:121 +#: templates/app_gateway/app_gateway_list.html:162 +#: templates/app_gateway/application_details.html:99 +#: templates/app_gateway/application_details.html:150 #: templates/cluster/workers_list.html:77 #: templates/dns/static_host_list.html:74 -#: templates/gatekeeper/gatekeeper_list.html:89 -#: templates/gatekeeper/gatekeeper_list.html:132 -#: templates/gatekeeper/gatekeeper_list.html:177 -#: templates/gatekeeper/gatekeeper_list.html:225 -#: templates/gatekeeper/gatekeeper_list.html:242 -#: templates/gatekeeper/gatekeeper_list.html:294 +#: templates/gatekeeper/gatekeeper_list.html:90 +#: templates/gatekeeper/gatekeeper_list.html:133 +#: templates/gatekeeper/gatekeeper_list.html:178 +#: templates/gatekeeper/gatekeeper_list.html:226 +#: templates/gatekeeper/gatekeeper_list.html:243 +#: templates/gatekeeper/gatekeeper_list.html:295 #: templates/routing_templates/list.html:29 #: templates/scheduler/scheduleprofile_form.html:123 #: templates/scheduler/scheduleprofile_list.html:25 @@ -2198,78 +2294,83 @@ msgstr "Exigir autenticação usando métodos ou grupos especificados." msgid "Deny all access." msgstr "Negar todo o acesso." -#: templates/app_gateway/app_gateway_list.html:12 -#: templates/app_gateway/app_gateway_list.html:30 +#: templates/app_gateway/app_gateway_list.html:13 +#: templates/app_gateway/app_gateway_list.html:31 msgid "Applications" msgstr "Aplicações" -#: templates/app_gateway/app_gateway_list.html:18 +#: templates/app_gateway/app_gateway_list.html:19 msgid "Access Policies" msgstr "Políticas de Acesso" -#: templates/app_gateway/app_gateway_list.html:34 -#: templates/app_gateway/app_gateway_list.html:60 +#: templates/app_gateway/app_gateway_list.html:35 +#: templates/app_gateway/app_gateway_list.html:68 #: templates/dns/static_host_list.html:70 msgid "Hosts" msgstr "Endereços" -#: templates/app_gateway/app_gateway_list.html:42 +#: templates/app_gateway/app_gateway_list.html:44 +#: templates/app_gateway/app_gateway_list.html:50 msgid "Export Configuration" msgstr "Exportar Configuração" -#: templates/app_gateway/app_gateway_list.html:46 +#: templates/app_gateway/app_gateway_list.html:49 +msgid "Export is not available because Caddy is not enabled." +msgstr "" + +#: templates/app_gateway/app_gateway_list.html:54 msgid "Add Application" msgstr "Adicionar Aplicação" -#: templates/app_gateway/app_gateway_list.html:61 +#: templates/app_gateway/app_gateway_list.html:69 msgid "Routes" msgstr "Rotas" -#: templates/app_gateway/app_gateway_list.html:80 -#: templates/app_gateway/application_details.html:39 +#: templates/app_gateway/app_gateway_list.html:88 +#: templates/app_gateway/application_details.html:47 msgid "Default (Deny)" msgstr "Padrão (Negar)" -#: templates/app_gateway/app_gateway_list.html:90 +#: templates/app_gateway/app_gateway_list.html:98 msgid "No Applications found." msgstr "Nenhuma Aplicação encontrada." -#: templates/app_gateway/app_gateway_list.html:102 +#: templates/app_gateway/app_gateway_list.html:110 msgid "Application" msgstr "Aplicação" -#: templates/app_gateway/app_gateway_list.html:121 +#: templates/app_gateway/app_gateway_list.html:129 msgid "No Hosts found." msgstr "Nenhum Host encontrado." -#: templates/app_gateway/app_gateway_list.html:129 +#: templates/app_gateway/app_gateway_list.html:137 msgid "Add Access Policy" msgstr "Adicionar Política de Acesso" -#: templates/app_gateway/app_gateway_list.html:140 -#: templates/gatekeeper/gatekeeper_list.html:43 -#: templates/gatekeeper/gatekeeper_list.html:64 +#: templates/app_gateway/app_gateway_list.html:148 +#: templates/gatekeeper/gatekeeper_list.html:44 +#: templates/gatekeeper/gatekeeper_list.html:65 msgid "Groups" msgstr "Grupos" -#: templates/app_gateway/app_gateway_list.html:141 +#: templates/app_gateway/app_gateway_list.html:149 msgid "Auth Methods" msgstr "Métodos de Autenticação" -#: templates/app_gateway/app_gateway_list.html:142 -#: templates/app_gateway/application_details.html:62 -#: templates/app_gateway/application_details.html:109 -#: templates/gatekeeper/gatekeeper_list.html:65 -#: templates/gatekeeper/gatekeeper_list.html:122 -#: templates/gatekeeper/gatekeeper_list.html:167 -#: templates/gatekeeper/gatekeeper_list.html:214 +#: templates/app_gateway/app_gateway_list.html:150 +#: templates/app_gateway/application_details.html:76 +#: templates/app_gateway/application_details.html:138 +#: templates/gatekeeper/gatekeeper_list.html:66 +#: templates/gatekeeper/gatekeeper_list.html:123 +#: templates/gatekeeper/gatekeeper_list.html:168 +#: templates/gatekeeper/gatekeeper_list.html:215 #: templates/scheduler/scheduleprofile_form.html:111 #: templates/scheduler/scheduleprofile_list.html:15 #: templates/wireguard/apply_route_template.html:28 msgid "Actions" msgstr "Ações" -#: templates/app_gateway/app_gateway_list.html:169 +#: templates/app_gateway/app_gateway_list.html:177 msgid "No Access Policies found." msgstr "Nenhuma Política de Acesso encontrada." @@ -2278,34 +2379,79 @@ msgstr "Nenhuma Política de Acesso encontrada." msgid "Back to List" msgstr "Voltar para a Lista" -#: templates/app_gateway/application_details.html:41 +#: templates/app_gateway/application_details.html:15 +#: templates/app_gateway/application_details.html:59 +#: templates/app_gateway/application_details.html:91 +#: templates/app_gateway/application_details.html:94 +msgid "This application cannot be modified" +msgstr "" + +#: templates/app_gateway/application_details.html:18 +#, fuzzy +#| msgid "Application Route deleted successfully." +msgid "This application cannot be deleted" +msgstr "Rota da Aplicação excluída com sucesso." + +#: templates/app_gateway/application_details.html:49 msgid "Set Policy" msgstr "Configurar Política" -#: templates/app_gateway/application_details.html:48 +#: templates/app_gateway/application_details.html:56 msgid "Application Hosts" msgstr "Hosts da Aplicação" -#: templates/app_gateway/application_details.html:52 +#: templates/app_gateway/application_details.html:60 +#: templates/app_gateway/application_details.html:65 msgid "Add Host" msgstr "Adicionar Host" -#: templates/app_gateway/application_details.html:86 +#: templates/app_gateway/application_details.html:115 msgid "No Hosts configured for this application." msgstr "Nenhum Host configurado para esta aplicação." -#: templates/app_gateway/application_details.html:92 +#: templates/app_gateway/application_details.html:121 msgid "Application Routes" msgstr "Rotas da Aplicação" -#: templates/app_gateway/application_details.html:96 +#: templates/app_gateway/application_details.html:125 msgid "Add Route" msgstr "Adicionar Rota" -#: templates/app_gateway/application_details.html:136 +#: templates/app_gateway/application_details.html:165 msgid "No Routes configured for this application." msgstr "Nenhuma Rota configurada para esta aplicação." +#: templates/app_gateway/caddy_disabled_alert.html:5 +#, fuzzy +#| msgid "Cluster is not enabled" +msgid "Caddy is not enabled" +msgstr "Cluster não está habilitado" + +#: templates/app_gateway/caddy_disabled_alert.html:6 +msgid "" +"The App Gateway and Gatekeeper modules require Caddy and the auth-gateway " +"container to be running. Please start the application using docker-" +"compose-caddy.yml." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:7 +msgid "" +"Depending on your custom firewall or proxy rules, the way you access " +"wireguard_webadmin may change slightly after enabling Caddy." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:8 +msgid "" +"Switching to Caddy is simple, but it may require a bit of time and attention " +"to review your current setup." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:9 +#, fuzzy +#| msgid "For more information, please visit:" +msgid "For more information, see the discussion:" +msgstr "Para mais informações, visite:" + #: templates/cluster/workers_list.html:9 templates/dns/static_host_list.html:72 #: templates/scheduler/scheduleprofile_form.html:82 #: templates/template_parts/base_sidebar.html:13 vpn_invite/forms.py:78 @@ -2819,85 +2965,92 @@ msgstr "" msgid "Create Port forwarding Rule" msgstr "Criar Regra de Encaminhamento de Porta" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:63 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:67 #: templates/gatekeeper/gatekeeper_user_form.html:43 msgid "View QR Code" msgstr "Ver Código QR" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:64 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:68 #: templates/gatekeeper/gatekeeper_user_form.html:44 msgid "Generate TOTP Secret" msgstr "Gerar Segredo TOTP" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:93 -#: templates/gatekeeper/gatekeeper_user_form.html:73 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:105 +#: templates/gatekeeper/gatekeeper_user_form.html:81 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:18 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:127 +#: templates/gatekeeper/gatekeeper_user_form.html:103 +#, fuzzy +#| msgid "Error creating invite." +msgid "Error generating QR code." +msgstr "Erro ao criar convite." + +#: templates/gatekeeper/gatekeeper_list.html:19 msgid "Gatekeeper Users" msgstr "Usuários Gatekeeper" -#: templates/gatekeeper/gatekeeper_list.html:24 +#: templates/gatekeeper/gatekeeper_list.html:25 msgid "Allowed Emails & Domains" msgstr "E-mails e Domínios Permitidos" -#: templates/gatekeeper/gatekeeper_list.html:30 +#: templates/gatekeeper/gatekeeper_list.html:31 msgid "IP Addresses" msgstr "Endereços IP" -#: templates/gatekeeper/gatekeeper_list.html:40 +#: templates/gatekeeper/gatekeeper_list.html:41 #: templates/user_manager/peer_group_list.html:11 msgid "Users" msgstr "Usuários" -#: templates/gatekeeper/gatekeeper_list.html:51 +#: templates/gatekeeper/gatekeeper_list.html:52 #: templates/user_manager/list_buttons.html:2 user_manager/views.py:111 msgid "Add User" msgstr "Adicionar Usuário" -#: templates/gatekeeper/gatekeeper_list.html:63 +#: templates/gatekeeper/gatekeeper_list.html:64 msgid "TOTP" msgstr "TOTP" -#: templates/gatekeeper/gatekeeper_list.html:104 +#: templates/gatekeeper/gatekeeper_list.html:105 msgid "No Gatekeeper Users found." msgstr "Nenhum Usuário Gatekeeper encontrado." -#: templates/gatekeeper/gatekeeper_list.html:111 +#: templates/gatekeeper/gatekeeper_list.html:112 msgid "Add Group" msgstr "Adicionar Grupo" -#: templates/gatekeeper/gatekeeper_list.html:147 +#: templates/gatekeeper/gatekeeper_list.html:148 msgid "No Gatekeeper Groups found." msgstr "Nenhum Grupo Gatekeeper encontrado." -#: templates/gatekeeper/gatekeeper_list.html:156 +#: templates/gatekeeper/gatekeeper_list.html:157 msgid "Add Auth Method" msgstr "Adicionar Método de Autenticação" -#: templates/gatekeeper/gatekeeper_list.html:192 +#: templates/gatekeeper/gatekeeper_list.html:193 msgid "No Authentication Methods found." msgstr "Nenhum Método de Autenticação encontrado." -#: templates/gatekeeper/gatekeeper_list.html:212 +#: templates/gatekeeper/gatekeeper_list.html:213 msgid "Identity" msgstr "Identidade" -#: templates/gatekeeper/gatekeeper_list.html:213 -#: templates/gatekeeper/gatekeeper_list.html:275 +#: templates/gatekeeper/gatekeeper_list.html:214 +#: templates/gatekeeper/gatekeeper_list.html:276 msgid "Auth Method" msgstr "Método de Autenticação" -#: templates/gatekeeper/gatekeeper_list.html:257 +#: templates/gatekeeper/gatekeeper_list.html:258 msgid "No Allowed Emails or Domains found." msgstr "Nenhum E-mail ou Domínio Permitido encontrado." -#: templates/gatekeeper/gatekeeper_list.html:276 +#: templates/gatekeeper/gatekeeper_list.html:277 msgid "Manage" msgstr "Gerenciar" -#: templates/gatekeeper/gatekeeper_list.html:309 +#: templates/gatekeeper/gatekeeper_list.html:310 msgid "No IP Addresses found." msgstr "Nenhum Endereço IP encontrado." @@ -3519,6 +3672,10 @@ msgstr "Excluir Peer" msgid "Please type \\\"delete\\\" to remove peer configuration." msgstr "Por favor, digite \\\"delete\\\" para remover a configuração do peer." +#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15 +msgid "Display Name" +msgstr "Nome de Exibição" + #: templates/wireguard/wireguard_manage_server.html:27 msgid "" "\n" @@ -4504,5 +4661,25 @@ msgstr "" "Nenhuma interface encontrada|Nenhuma interface WireGuard foi encontrada para " "processar." +#~ msgid "This is a reserved system name." +#~ msgstr "Este é um nome de sistema reservado." + +#~ msgid "" +#~ "TOTP must be combined with a Local Password or OpenID Connect " +#~ "authentication method." +#~ msgstr "" +#~ "O TOTP deve ser combinado com um método de autenticação de Senha Local ou " +#~ "OpenID Connect." + +#~ msgid "Route identifier, used in export (e.g.: public_area)" +#~ msgstr "Identificador da rota, usado na exportação (ex: public_area)" + +#~ msgid "" +#~ "Caddy is not active. Configuration files were exported for debugging " +#~ "purposes." +#~ msgstr "" +#~ "O Caddy não está ativo. Os arquivos de configuração foram exportados para " +#~ "fins de depuração." + #~ msgid "Global TOTP Before Authentication" #~ msgstr "TOTP Global Antes da Autenticação" diff --git a/locale/sk/LC_MESSAGES/django.mo b/locale/sk/LC_MESSAGES/django.mo index e22bd8a2f7229b3c87f3e0f499b79ea5115f73b6..e4e1d9c89c18a256e942c30bca936dfbb36ecaf5 100644 GIT binary patch delta 17227 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 bV^6ApZD)siQl?3+_aex%E%kWMt~CDx2C(rb delta 19159 zcmaLe2Y6If;`i}8^xk{((h~@w_YitVK#E9rNCrqqWHR^2Y>No>Q59sMQiKN%|cAN?x$0^g#aV}$n z{*E(^`-%*3oS8TeCtpTVW1uZ?t^ zd!%QMa-7OMDCl*ZxAHp9%dw7gmIk`Ta}W7d6CCGR>P-na&U7r8>^ODEpPR~nsJDfu z_sr)wAM=orlvfBk4t;gfXV4Lz?|ew48x{Y+h7@$1c3F!Ri9%9)&@0GJy8Q3J%{<%h$fKX;^SBs zm*YeDp{-bf?(4y|FcJr2X?z0f;9^uq-bc0fHL9Iou{KtlYX;N>)v+P?0A>VczAa^WZitg1fLJ9zrd}MJ$Rxq4vgo?2DCO zFvl$(Cz76s>G%~6)cGHl$(bi(Blf_Xs3~gwqB%|zu^H(Zs19sJE!9rcNcUNfqdNMz zEx(8AP_BjMRFpt9zZ(&aU_5GMk6{UX8Z}i*QER#dwb`y?J}mQ+=|E-F z=BtO*upesE`EB`&sPmc#z2 zhQ^`xz$DZgaTb=x6{ual4Rs99p$2#pH8b}YG5?zS!i&vXK8WQ>k4BAX5^5x`*z|sE zM*12y!759P{ZQwBChER5s1YAVEzw0(2fxRP_$zA0ODtvnbslT+i=(yeh9$8#YN|$} z8t`ERrlLl^67_)hZ22Kn!{=@OEmTKyzw9`ju@&~h$FLiIgj&L4!B@-!%A%&e7M8`< zHr)@k6tSp|PD0Jl60Cq*unHcw`PWb#{0lXZa?8xf!%+7%Lp`Sts>4Aq5siE*YDCjf zQ}w)c8ER_ZM9sueRK1I+4*h7;#g?1=2T&txgaxoA>b?%Bj`l-!Ai)@PW)RV)cnQ_R zRj3Abq8_v#-^Np@jy|=*G&m16GfPoxxxuFQq3%1458yYb8O{5unVHI1$zk7MS)Km} ziKs_0sNFmnwL9madj1mXl&rCCLQU;S@8XW+tjx8(>@Vqfnc3G7iNjP&0BFwb`zsX5uGQ zJAYs!EdIL5?|{nhjq32DuQUHzg7<7et2fN1c@S%ppNLg46SXv3P;0vvwFgdN4g3aO zEbyjz0fnPR*cZca0%}QL#G1Gl^WoP)BHH~wU>*Dy*1`wgG9BoGx*;C5M9*S=Tw&9% zqek=|s$<8n5PpGrzzPMFS@u2 z8{z@fUb%xsu=EDgF&A}T7^+??Y>MNpub`&>IMRWj6Sk3~M@D1Jg$q#)E=Kimjddex z1lv$Ek&OlMG#10lsMByARqokjI#dcfkgkMUvf-#rpNPe^_-}+FOd+a)gV+r(p+;D9 zv$?So_9HzA^}y9w9J4S2vr#j56SahQQA_G>F?*;xsslcBaT4ay=37ieBVC3X(OT3< zH)CVmg(dI?YVH3*Jvjf{W^a^7?SZzadi_!Dc~KpTN41xR>i7&>{u~Ci_DgJq6{s85 zp&qamwTV7NJ>VGXN9Rk_?!IfSkY#4BxwR*jqac)tsSUez1^r&b?zPJ zUk%(P!^KkXnlG59s2_=b7>@C%8F>*^e>K*_ov4vrMZG6-Z#567j-5!iMeT)Y=;A6Y ziwCd?UI-G=8?fj$GqvH^fOIER#U#{&pF%CoOQ=1v5;Y_1P-~inrEouLM$cdrUPC>o z)_bNSLr_cj7dt+R7ZBB*6<8!?XRFlb`{Iu?^qX$?KBOxK-G^y z9oGPAhMvXdxER&(k5L1;h#J6mp?uc=4v|)5cy^hF+gQh-dOR1^@HULXv#2F1z1ysP zM{GlS6lx$#P#ydjHIu($54?vJuwb_nhXev<+e}@{`FSfkce$!4>)DkpA?G+!^M?dPmrTaPmTAQ_GXw9;0#oZWs z@t_`f47FyLP`mz`E&s{-E9#Wo$4Xc<+Z@v{R0rCl?oUItH{H4*J7`{+%gJaI2ikB-DVXqw=2#644DS zP!HaY>ghh~QPie7hh?$Ihh|A?U~SUfQ8Sf@Do@3lI2YCNji@DlAGKF*qaIx6BeR6T zRz$QG-LMW0K#eE^^WaRIo^8vY!&>BTLp5{>%i#^w%;Y_2@@rui(k)OkGZnkx0@PBU zMfOn8`GQD3GH#$|;unm>;)hIrG-_?TVhcdJ|09p_zr5yOC2%o)I>d~ zgS9*6C*2n{(1)=w&v%lD6vW3+Q~s0+a2{&v7U3XVhkC_2N6m|5sv7M8*<%0$1Zq4FA|PxE^^qIzOX6A~$?uel$)WH~(m* z>#;SS#hzH=r0LKwRQ^KLru_ul<1Z(fe;<+Nr_4Eh8M~4`f%UNbX?8Gn z!pZnEYU<<9uq1S7E^1Rfch-DnpTk0=opWYS6h@tfGFTm3VKE$L({bmRf3592GSu+% zSQNLQ_QLz9&2L3yA z?(L{eame}=>P>bZ_23GhnvS@r5rw1n!h@(OorW6uYSbEU!pgYIdLBEFzJqnJ`2|xR z96>}QoQ#@@8K{P4V<~(AwF%dtIHATnqN&L;`KYrPabcS^Ss)Nh0DsDm_9z*S=rk^tlY|?>v zHy0l=U+^yB0iS)vKY%11e~noWl5yobbG(LK=i8neX526jo^g}E`_oYVpG|rb_NKh~ zE&f`jdbjzYWX(?9VM9@G(jVqu%@n>%KIzf-`RJtm+<$U3v6jc<9L&e*%Hwe=(}AUh zJx*{V1zU?!K!&fR$Jv3AWjs!R{O`(noWVS3XeE#H6*q3G>~UVBJhO%;^iRiI)b@mS z{TxiC-hR}pwq;$9`JKnwq?e-h&R*1v9mHCAp{^$wiu^@}HdC!IPiSo$qxM2K>riY+ zIsqf_6=dMfA?qio&2bMrJXBw!C8c`%_b9O*&&WBK&aV+X|q+u1Dh3d$wSPpjtZNUlD4L6XP zcJAABp894)rSWOUp9~&qDncY(Y)&C9I3rQ4cKJ$ULBpwJT}{`lHs^j~d_% zR0lR=6TFU{b^hJPrbn^Zl7i)^7t2{}hozdBj`hc8q^F_kWubQa57-K8@UJ!1@Nn#d z&tgx!h}*GtGmp~&KgaRtHs`rK-+7uydCaz6M6K;@o6g%kcnLMq)@?kYf8{a@HFGCX?U!h4X0#gW*bYOr_h?(rzjl2b8Ct8!s9ibFR@jK@ z={D54K8RY&p+OShT&_)lE?K`dde1FVcQghqhxiJc2ss-=o&POb3&0kI|&#P@6XR z29X{_uGk9oI+`gSgqp%xSQuZzLiifGxB)e_AEO?04Yj5vJDC}&gc?|VRJ{(U(=rsb z#Lpoe4mw#xRPh7UxxIio|Np`USgf--PEn{A%F{OeIqHECUCjN>Q6uk#Y9|gggR@af zxEl3h+KGBoUJI3T{t9+AYf%S74WQOO4%LwbsLis*mS>@UR8FEEbR9J_h53&N^uThc zUEb8%8Z|@hu?WVYmM|S%o&P6o##&TE?_xpRYtx5Oo9ql~FI+`UY2oh1TB!FxJ9P0O z)Fw@~o6pP@SN2e!nby-j&n)QfE}YG%`Hez14YJYWGC+U2j?f-Gw`YVA*<*7^!+ zWPjOo={_E(Bk9JdO`L+-J9BUpZp7YL^g%OYL#{%~oWX*;IW|4_t~PaTV&t;~8#F zL4MRyRiyzyE)jh>p#p))dqXJca7mLX5^0sE%F69(W5i!nPyKO!Pq= zvr*U+r(u0Oh&rBk@DVII(j3e9k(_^RvMFS=#s#Pz9zxxC4jW+ZQRWrh7`3|xqxMEB zY6e!JM!p`kByXcecmOqHmrxzAHrfoR3F^5~qdEWjxqXNXt$hZn;tQxXU5h$KZ=*(f z2-U$0w)|VvOx-~>nEO#PNw6vy{N9DW+u-Vb4rS$+AD*asan=xJtBJ5HbPBVZ`6om zYPe-kxh8?XtUL3O-9j5&5;sPe(6C3+m&<9bxRA5k+JsJ#)3+EW>* z4m^o@dA_rNh}Li+>J+TS?)U|23d7>e@f?EHNylSToR50b?M1yOuA_cUYsQ-ojn_fW6gLK9572WkWlqh2gyP@6CjwHJb@ z4!@1+*cF>!EWvEbj;KvK8e8D@1kS&X#Z6mKG|^1;I8=pKQM>gV_QKClBMtMLj*LQe zARe_B9>XZiM*XHZ0n=W6)ZU0ieW=XGQMf4(G=F6(mSkQO12LL{h1d#DqmEJ0iDrh% zp{BGZw!|>&qo_4rjM@tuPy;w*b&^d-TcY+(Pt=}^2@=s%r=ZU54Afp&fts1ks3kat z>PX=fGqq(Z`zD^P!)HfI&u`%)9+DJ zo+s7JKpWJ9yIY4@6H(`UI;!ElsQ1bd>s8d$d(w=xu#0~GyAx55=VL8ghY$di5$e4XKyA`zv7OHUZX()bcTqj| zOg7(eRZwf%2{p1I*cKPr{8Om+#kZ&q-ox5hIKyQ?NA8ch(Zo zRPR7_;I#E8>_NKF6f-jeQR&I3Dc*-#vZJUqy@Yx{e2qE<`KFqg>Wo^lK{y)6q29C~ zVNeA>6H$YC9y71Z;;1QZg*sk6QJZkMO)o*s*gDk6wxDKU54w2Frf*p9qfSkc$IWIh ziJGYg9_RcwA=1@mOh&EIa%_ydQ8)gC8sQz(3+Ns`fCZ+R4u+vR(gsz(JE}u{P)j%* zM_>{*!(-STa|Jp7nyOx?clm78=lB`a3{;qIrZ^ncaBEb4G-|2(q3(;vC-6N?!*(;w zUdh4}q<_L@9+qsT*^Ix=GN0qkgHM=GrJ1OA`cc%2!+Fwt9P=Y~981!n;BQ3wQBZKMc|{IIy^v<0cJBhL zhl{P*s6BH78=_~P*$a(P=es3pQx3y0j7J^IOzTqAcf?9#&{;!7yZTMkIlYBiyTCfM{;40a_W zlSq5~)K;kYg1IpaHHB?aAE{ncLr-D^F0=WEu>t8Ds8doU(;Uz0_zdZesN?$yYUJlo zGxJ?0=U*ep{i1nL8H^>}2KB%d$R>5R<>G5a5w1^&=Uk(S@NRMDl2;P-uT}cvU0e4M zt|spd!ad^EY<_prx-Rql&=pRGPQex`G`E$Oo1)N%hoUc2XA!`?CgCIK|J_ol6{igV#`N-HbYKk=FGp@s>D%{pS=Wll|bFB%~3~ zkJa!ALT);=fQpY0*OiC#5#rN{zfL_}dfn>M|4C`3&D%(P6!F7^x`dxd7eSYx>o=?Z z`_s@>!{E%eid)=NjtA;%=(Nq(3rbfc4e)vhU3wk&C5$2DA)F^n=iZ@|w;}!F2^#H_hZHoccRD+nJ`Pe0XFh$q^zKZ)~o=SOoV)O85w*mxy7$^iHB zRrT-d6&o9gpOXKBt*`8bq+zMTUuN(aoxQuEQen#!b@g|`Vp{lK0 z-m1^`^5oYe-J1AC!b`+cY&l710wIDrqY2*-zw)=T;3(DL+Dhg$6Ak@W4~k|HdXWDM zVI4PXruC7TP2fAzDNCNNuLxCbTNK3z0wRgKplTs_Fsx8Vsw4B>e~0(JeE z5BY|53eny*)HMwG=TpuM?(0u@kh~wY{<>ZY{mFl5PQmMh2dMZXVWQ1nMtm#rv8X%l zU{}Ik>fXR6I0>J`nW!t4xUR*dD-eId=09rl8;8>7`KBg+E+u?OC`hPB*h0v;eB4-? z5j}?d4g23$1sktI{(Ho~pri=(mJ)w~yf%c+1YPeC#*zP`g7WnIri41S!UhUnBYu{= zqXbb*qp5_ByzI9=?+lzf4(f>2!vt}E0%LU{|~ z=k)wp_U6|^#r({Y-bjU&q`Tv5I1qELU6fBHJtHT>`Ve_v*|v(>4&SzA(c~Ye{MG-u z=O5$$hDyB&H>tRoiVd*>P9g6>LVdz6(z$Rd=B3;v{+RNJ>-x&N&AJQsl7EAGCaOZdJ?ONWVtdP5OJn z7V<9J^6zj6VG`k#&D%qrJ!->VKVf0QMDoVsMd}?4+R7y`lFX{M1Gh>4@wb~hP_~4; zDwKC8UV@-&2X(Fz(oNF&nmPeOQS#owcWfKWD8EE}6nX0jcL}%@fb=*#PN+n@0r^7-dFez;@^sBHg#K}yqQ4X7QMVjkC$zQo67VRYIH5J=Ybooh z@4q5sc*rP2hAxuMyZmvDP?HcB%4M@rXCUd#gwo_~QX|BZ2|Wp45C)M~lCpNh@8Chg z5b|1KLGoG=Uqi^bzSH0T^H5Ne%zl`Ul14LEQpfxJsc|vh)VP4( z9h8yeONnYYzFBlmbvG(0dY~`C7nACa4@`2?QhdoN?xeVc1lRkYTYYZo_~by^xbYa5 z;wJi1#|L6Fw*)HZ>l29aCb*fqM^y|C{vWrdrNsHixn4IV)$5P-CdY=J;rAx`T+(im zHzj3KfZUYSK(a5^O;Cdg8If*3e?o>E@cZ1rSo73W`tHVf{q7h@_IXo%v5`>?lX6Cq zxjRri*so`o&Td%0B%i-$7q@f3?`K@$jJJ7CEm!0HUp-Ba^U^2RH#yap>}ObUv6{Nn z3^yq`kWM1m4NHid;B$NXGGY<}-U$(I_dsA=f-k}iB)gjFHok;7Z+N6Tz&9~1F4>pj z_RqO-@PIxMZs&wJ8gzShi3kndCI|W$O{!)yIH=#C{%+WyxI|xrPTmw|qo3c`KuNd1 zou>cqVEjIANe#F>guZ&+CCiwjB*yKQ>#`m{{rQhD9q)4~tSgNNbu!3%E zfPVV}YzJ>TOXMc8Ap)9>Q0HO-{;_f6(paeoR>kK=rKBbY{Ntj#Cj`di)G-5!YG{kh zZer2cTd{7OKPA=Yjg53Oqf;wp)gG1Es84KchRd$fGrcjXap}HDEnVm_X4j65OQ27a ze91o6CMl52%DZFfdaQ3u+PHBVU{YFgQXs{b5}Ebxv#CuZ&BBe1^Cd^*Jk{RmhWR4L zMYiFFF$r-oqrL2-@T?m9*W_)Ln3j?n+FF6cF>!vLFexr|JmWVzJZJv3(*N9EnO7E+ z^F(It`zWbkWk$iQ`ION48CnEwuCZ|wvRB5$ z`OKM23Z#9oCwoIWd;7qilnL2yjt_9y{On41ye}m|OBDEEkIx?}NC>YpW zWgy*4qZ|ZQ)fel}-Vnos675+D^@jzRkdaC~b>91*!xQG65cq$NjO$JCjR}MfjXg6D zXMC{78=DsIa|bsV(8v8}YY`k8cS7j+Xfn(Wvl)x76!lbTWRA{(`QDU3dcd9H&6z08 zfj^M!of1fAdNhlH&>0Gi(+rZ8kMl9ODc)F(kyDcvpS>d{&K{d7f13sGfoJ@_c+L#( zfzY}|y8r37-^(j5-RF<YOd!ooiAxBiEvjC|Qz>in@6jzQboT1NYLpDY zJ0X?*>gRpkd(qBbp0Ltv*6bYzp7HVWPVln(;=GaD_z$C#qN96;-lm}q&#T@|P4=c_ zM6k|m`MA{V-EMl$;daCP-lXLJI;7i11U&ik4`HpcH@IUmSSPy3L8arGztE3Tc2+F? w{pWP~IKbwdn6cZ9_s=sNxou>+r(mH)Cuexd6-uWs{_K@(m~Eq{dp<7wf7b=z?*IS* diff --git a/locale/sk/LC_MESSAGES/django.po b/locale/sk/LC_MESSAGES/django.po index 16052cf..48b0de5 100644 --- a/locale/sk/LC_MESSAGES/django.po +++ b/locale/sk/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-15 17:20-0300\n" +"POT-Creation-Date: 2026-03-18 10:58-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -34,17 +34,17 @@ msgstr "Späť" #: api_v2/forms.py:30 cluster/forms.py:28 dns/forms.py:69 dns/forms.py:129 #: routing_templates/forms.py:37 -#: templates/app_gateway/app_gateway_list.html:158 -#: templates/app_gateway/application_details.html:75 -#: templates/app_gateway/application_details.html:125 +#: templates/app_gateway/app_gateway_list.html:166 +#: templates/app_gateway/application_details.html:103 +#: templates/app_gateway/application_details.html:154 #: templates/firewall/manage_firewall_rule.html:382 #: templates/firewall/manage_redirect_rule.html:86 -#: templates/gatekeeper/gatekeeper_list.html:93 -#: templates/gatekeeper/gatekeeper_list.html:136 -#: templates/gatekeeper/gatekeeper_list.html:181 -#: templates/gatekeeper/gatekeeper_list.html:229 -#: templates/gatekeeper/gatekeeper_list.html:246 -#: templates/gatekeeper/gatekeeper_list.html:298 +#: templates/gatekeeper/gatekeeper_list.html:94 +#: templates/gatekeeper/gatekeeper_list.html:137 +#: templates/gatekeeper/gatekeeper_list.html:182 +#: templates/gatekeeper/gatekeeper_list.html:230 +#: templates/gatekeeper/gatekeeper_list.html:247 +#: templates/gatekeeper/gatekeeper_list.html:299 #: templates/scheduler/scheduleprofile_form.html:127 #: templates/scheduler/scheduleprofile_list.html:29 #: templates/wireguard/peer_list/peer_preview_modal.html:109 @@ -64,12 +64,12 @@ msgid "" msgstr "" "Naozaj chcete regenerovať token? Starý token okamžite prestane fungovať." -#: api_v2/forms.py:63 app_gateway/forms.py:40 app_gateway/forms.py:92 -#: app_gateway/forms.py:136 app_gateway/forms.py:154 app_gateway/forms.py:237 -#: app_gateway/forms.py:278 cluster/forms.py:67 cluster/forms.py:124 -#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:70 -#: gatekeeper/forms.py:150 gatekeeper/forms.py:212 gatekeeper/forms.py:299 -#: gatekeeper/forms.py:329 gatekeeper/forms.py:360 +#: api_v2/forms.py:63 app_gateway/forms.py:41 app_gateway/forms.py:99 +#: app_gateway/forms.py:144 app_gateway/forms.py:162 app_gateway/forms.py:241 +#: app_gateway/forms.py:283 cluster/forms.py:67 cluster/forms.py:124 +#: dns/forms.py:37 dns/forms.py:84 dns/forms.py:153 gatekeeper/forms.py:71 +#: gatekeeper/forms.py:152 gatekeeper/forms.py:239 gatekeeper/forms.py:362 +#: gatekeeper/forms.py:392 gatekeeper/forms.py:423 #: routing_templates/forms.py:71 scheduler/forms.py:102 #: templates/firewall/manage_firewall_rule.html:379 #: templates/firewall/manage_firewall_settings.html:59 @@ -82,14 +82,14 @@ msgstr "" msgid "Save" msgstr "Uložiť" -#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:106 -#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:174 +#: api_v2/models.py:10 app_gateway/forms.py:18 app_gateway/forms.py:113 +#: cluster/forms.py:18 dns/forms.py:130 gatekeeper/forms.py:188 #: routing_templates/forms.py:28 templates/api_v2/api_documentation.html:47 -#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:58 -#: templates/app_gateway/app_gateway_list.html:138 -#: templates/app_gateway/application_details.html:26 +#: templates/api_v2/list.html:8 templates/app_gateway/app_gateway_list.html:66 +#: templates/app_gateway/app_gateway_list.html:146 +#: templates/app_gateway/application_details.html:35 #: templates/cluster/workers_list.html:8 templates/dns/static_host_list.html:68 -#: templates/gatekeeper/gatekeeper_list.html:165 +#: templates/gatekeeper/gatekeeper_list.html:166 #: templates/routing_templates/list.html:8 #: templates/scheduler/scheduleprofile_list.html:13 #: templates/user_manager/peer_group_list.html:8 @@ -127,16 +127,16 @@ msgid "Enabled" msgstr "Povolené" #: api_v2/views.py:17 api_v2/views.py:27 api_v2/views.py:82 api_v2/views.py:106 -#: app_gateway/views.py:26 app_gateway/views.py:48 app_gateway/views.py:68 -#: app_gateway/views.py:112 app_gateway/views.py:135 app_gateway/views.py:170 -#: app_gateway/views.py:194 app_gateway/views.py:205 app_gateway/views.py:267 -#: app_gateway/views.py:293 app_gateway/views.py:328 app_gateway/views.py:354 -#: app_gateway/views.py:404 app_gateway/views.py:432 cluster/views.py:18 -#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:23 -#: gatekeeper/views.py:48 gatekeeper/views.py:98 gatekeeper/views.py:121 -#: gatekeeper/views.py:151 gatekeeper/views.py:174 gatekeeper/views.py:222 -#: gatekeeper/views.py:281 gatekeeper/views.py:311 gatekeeper/views.py:334 -#: gatekeeper/views.py:364 gatekeeper/views.py:387 gatekeeper/views.py:436 +#: app_gateway/views.py:28 app_gateway/views.py:52 app_gateway/views.py:83 +#: app_gateway/views.py:130 app_gateway/views.py:157 app_gateway/views.py:196 +#: app_gateway/views.py:224 app_gateway/views.py:235 app_gateway/views.py:297 +#: app_gateway/views.py:323 app_gateway/views.py:358 app_gateway/views.py:384 +#: app_gateway/views.py:434 app_gateway/views.py:462 cluster/views.py:18 +#: cluster/views.py:45 cluster/views.py:114 gatekeeper/views.py:25 +#: gatekeeper/views.py:52 gatekeeper/views.py:102 gatekeeper/views.py:125 +#: gatekeeper/views.py:155 gatekeeper/views.py:178 gatekeeper/views.py:226 +#: gatekeeper/views.py:297 gatekeeper/views.py:327 gatekeeper/views.py:350 +#: gatekeeper/views.py:380 gatekeeper/views.py:403 gatekeeper/views.py:452 #: templates/access_denied.html:9 msgid "Access Denied" msgstr "Prístup zamietnutý" @@ -206,20 +206,19 @@ msgstr "Ste si istí, že chcete odstrániť kľúč API \"%(name)s\"?" msgid "API Documentation" msgstr "Dokumentácia API" -#: app_gateway/forms.py:19 templates/app_gateway/application_details.html:27 -#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15 -msgid "Display Name" -msgstr "Zobrazovací názov" - -#: app_gateway/forms.py:20 templates/app_gateway/app_gateway_list.html:59 -#: templates/app_gateway/application_details.html:28 +#: app_gateway/forms.py:19 templates/app_gateway/app_gateway_list.html:67 +#: templates/app_gateway/application_details.html:36 msgid "Upstream" msgstr "Upstream" -#: app_gateway/forms.py:41 app_gateway/forms.py:93 app_gateway/forms.py:137 -#: app_gateway/forms.py:155 app_gateway/forms.py:238 app_gateway/forms.py:279 -#: gatekeeper/forms.py:71 gatekeeper/forms.py:151 gatekeeper/forms.py:213 -#: gatekeeper/forms.py:300 gatekeeper/forms.py:330 gatekeeper/forms.py:361 +#: app_gateway/forms.py:20 +msgid "Allow invalid/self-signed certificate" +msgstr "" + +#: app_gateway/forms.py:42 app_gateway/forms.py:100 app_gateway/forms.py:145 +#: app_gateway/forms.py:163 app_gateway/forms.py:242 app_gateway/forms.py:284 +#: gatekeeper/forms.py:72 gatekeeper/forms.py:153 gatekeeper/forms.py:240 +#: gatekeeper/forms.py:363 gatekeeper/forms.py:393 gatekeeper/forms.py:424 #: scheduler/forms.py:103 #: templates/app_gateway/access_policy_type_select.html:50 #: templates/generic_delete_confirmation.html:19 @@ -227,58 +226,64 @@ msgstr "Upstream" msgid "Cancel" msgstr "Zrušiť" -#: app_gateway/forms.py:54 -msgid "This is a reserved system name." -msgstr "Toto je vyhradený systémový názov." - -#: app_gateway/forms.py:58 +#: app_gateway/forms.py:55 msgid "This upstream is reserved by the system." msgstr "Tento upstream je vyhradený systémom." -#: app_gateway/forms.py:61 +#: app_gateway/forms.py:58 msgid "Upstream URL cannot contain spaces." msgstr "URL adresa upstream nemôže obsahovať medzery." -#: app_gateway/forms.py:67 +#: app_gateway/forms.py:64 msgid "Enter a valid upstream URL starting with http:// or https://" msgstr "" "Zadajte platnú URL adresu upstream začínajúcu na http:// alebo https://" -#: app_gateway/forms.py:77 cluster/forms.py:24 dns/forms.py:65 -#: templates/app_gateway/app_gateway_list.html:101 -#: templates/app_gateway/application_details.html:61 +#: app_gateway/forms.py:66 +msgid "" +"Upstream must be a bare host address with no path, query or fragment. Use " +"http://host or http://host:port" +msgstr "" + +#: app_gateway/forms.py:76 cluster/forms.py:24 dns/forms.py:65 +#: templates/app_gateway/app_gateway_list.html:109 +#: templates/app_gateway/application_details.html:75 #: templates/dns/static_host_list.html:17 #: templates/wireguard/server_detail.html:39 msgid "Hostname" msgstr "Názov hostiteľa" -#: app_gateway/forms.py:107 templates/app_gateway/app_gateway_list.html:139 +#: app_gateway/forms.py:84 +msgid "Hostname contains invalid characters." +msgstr "" + +#: app_gateway/forms.py:114 templates/app_gateway/app_gateway_list.html:147 msgid "Policy Type" msgstr "Typ politiky" -#: app_gateway/forms.py:108 +#: app_gateway/forms.py:115 msgid "Allowed Groups" msgstr "Povolené skupiny" -#: app_gateway/forms.py:109 templates/gatekeeper/gatekeeper_list.html:12 +#: app_gateway/forms.py:116 templates/gatekeeper/gatekeeper_list.html:13 msgid "Authentication Methods" msgstr "Metódy autentifikácie" -#: app_gateway/forms.py:188 +#: app_gateway/forms.py:196 msgid "Cannot select more than one Local Password authentication method." msgstr "Nemožno vybrať viac ako jednu metódu autentifikácie lokálnym heslom." -#: app_gateway/forms.py:192 +#: app_gateway/forms.py:200 msgid "" "Cannot select more than one OpenID Connect (OIDC) authentication method." msgstr "" "Nemožno vybrať viac ako jednu metódu autentifikácie OpenID Connect (OIDC)." -#: app_gateway/forms.py:196 +#: app_gateway/forms.py:204 msgid "Cannot select more than one TOTP authentication method." msgstr "Nemožno vybrať viac ako jednu metódu autentifikácie TOTP." -#: app_gateway/forms.py:200 +#: app_gateway/forms.py:208 msgid "" "Cannot select both Local Password and OpenID Connect (OIDC) authentication " "methods." @@ -286,15 +291,7 @@ msgstr "" "Nemožno vybrať súčasne metódy autentifikácie lokálnym heslom a OpenID " "Connect (OIDC)." -#: app_gateway/forms.py:204 -msgid "" -"TOTP must be combined with a Local Password or OpenID Connect authentication " -"method." -msgstr "" -"TOTP musí byť kombinované s metódou autentifikácie Lokálne heslo alebo OpenID " -"Connect." - -#: app_gateway/forms.py:208 +#: app_gateway/forms.py:212 msgid "" "At least one user group must be selected when using Local Password " "authentication." @@ -302,74 +299,101 @@ msgstr "" "Pri použití autentifikácie lokálnym heslom musí byť vybraná aspoň jedna " "skupina používateľov." -#: app_gateway/forms.py:212 +#: app_gateway/forms.py:216 msgid "User groups can only be used with Local Password authentication." msgstr "" "Skupiny používateľov možno použiť len s autentifikáciou lokálnym heslom." -#: app_gateway/forms.py:222 templates/app_gateway/app_gateway_list.html:62 -#: templates/app_gateway/application_details.html:31 +#: app_gateway/forms.py:226 templates/app_gateway/app_gateway_list.html:70 +#: templates/app_gateway/application_details.html:39 #: templates/firewall/firewall_nav_tabs.html:15 msgid "Default Policy" msgstr "Predvolená politika" -#: app_gateway/forms.py:251 templates/app_gateway/application_details.html:105 +#: app_gateway/forms.py:255 templates/app_gateway/application_details.html:134 msgid "Route Name" msgstr "Názov trasy" -#: app_gateway/forms.py:252 templates/app_gateway/application_details.html:106 +#: app_gateway/forms.py:256 templates/app_gateway/application_details.html:135 msgid "Path Prefix" msgstr "Prefix cesty" -#: app_gateway/forms.py:253 templates/app_gateway/application_details.html:107 +#: app_gateway/forms.py:257 templates/app_gateway/application_details.html:136 msgid "Policy" msgstr "Politika" -#: app_gateway/forms.py:254 templates/app_gateway/application_details.html:108 +#: app_gateway/forms.py:258 templates/app_gateway/application_details.html:137 msgid "Order" msgstr "Poradie" -#: app_gateway/models.py:12 +#: app_gateway/forms.py:299 +#, fuzzy +#| msgid "Invite URL must start with 'https://'." +msgid "Path prefix must start with /." +msgstr "URL pozvánky musí začínať na 'https://'." + +#: app_gateway/forms.py:301 +#, fuzzy +#| msgid "Upstream URL cannot contain spaces." +msgid "Path prefix cannot contain spaces." +msgstr "URL adresa upstream nemôže obsahovať medzery." + +#: app_gateway/forms.py:303 +msgid "Path prefix contains invalid characters." +msgstr "" + +#: app_gateway/forms.py:308 +#, fuzzy +#| msgid "This upstream is reserved by the system." +msgid "This path prefix is reserved by the system." +msgstr "Tento upstream je vyhradený systémom." + +#: app_gateway/models.py:14 msgid "Upstream address, e.g.: http://10.188.18.27:3000" msgstr "Upstream adresa, napr.: http://10.188.18.27:3000" -#: app_gateway/models.py:45 +#: app_gateway/models.py:15 +msgid "Allow invalid or self-signed TLS certificates from the upstream" +msgstr "" + +#: app_gateway/models.py:53 #: templates/app_gateway/access_policy_type_select.html:19 msgid "Public" msgstr "Verejné" -#: app_gateway/models.py:45 +#: app_gateway/models.py:53 #: templates/app_gateway/access_policy_type_select.html:30 msgid "Protected" msgstr "Chránené" -#: app_gateway/models.py:45 gatekeeper/models.py:108 +#: app_gateway/models.py:53 gatekeeper/models.py:142 #: templates/app_gateway/access_policy_type_select.html:41 -#: templates/gatekeeper/gatekeeper_list.html:288 +#: templates/gatekeeper/gatekeeper_list.html:289 msgid "Deny" msgstr "Odmietnuť" -#: app_gateway/models.py:80 -msgid "Route identifier, used in export (e.g.: public_area)" -msgstr "Identifikátor trasy, použitý v exporte (napr.: public_area)" - -#: app_gateway/views.py:60 +#: app_gateway/views.py:75 msgid "Application Details" msgstr "Podrobnosti o aplikácii" -#: app_gateway/views.py:74 templates/app_gateway/application_details.html:15 +#: app_gateway/views.py:90 app_gateway/views.py:174 app_gateway/views.py:204 +msgid "The WireGuard WebAdmin application cannot be modified." +msgstr "" + +#: app_gateway/views.py:92 templates/app_gateway/application_details.html:16 +#: templates/app_gateway/application_details.html:23 msgid "Edit Application" msgstr "Upraviť aplikáciu" -#: app_gateway/views.py:77 +#: app_gateway/views.py:95 msgid "Create Application" msgstr "Vytvoriť aplikáciu" -#: app_gateway/views.py:84 +#: app_gateway/views.py:102 msgid "Application saved successfully." msgstr "Aplikácia bola úspešne uložená." -#: app_gateway/views.py:89 +#: app_gateway/views.py:107 msgid "" "\n" "
Application
\n" @@ -403,62 +427,67 @@ msgstr "" " \n" " " -#: app_gateway/views.py:120 +#: app_gateway/views.py:137 +msgid "The WireGuard WebAdmin application cannot be deleted." +msgstr "" + +#: app_gateway/views.py:142 msgid "Application deleted successfully." msgstr "Aplikácia bola úspešne odstránená." -#: app_gateway/views.py:125 templates/app_gateway/application_details.html:18 +#: app_gateway/views.py:147 templates/app_gateway/application_details.html:19 +#: templates/app_gateway/application_details.html:26 msgid "Delete Application" msgstr "Odstrániť aplikáciu" -#: app_gateway/views.py:127 +#: app_gateway/views.py:149 #, python-format msgid "Are you sure you want to delete the application \"%(name)s\"?" msgstr "Ste si istí, že chcete odstrániť aplikáciu \"%(name)s\"?" -#: app_gateway/views.py:143 +#: app_gateway/views.py:165 msgid "Edit Application Host" msgstr "Upraviť hostiteľa aplikácie" -#: app_gateway/views.py:147 +#: app_gateway/views.py:169 msgid "Add Application Host" msgstr "Pridať hostiteľa aplikácie" -#: app_gateway/views.py:156 +#: app_gateway/views.py:182 msgid "Application Host saved successfully." msgstr "Hostiteľ aplikácie bol úspešne uložený." -#: app_gateway/views.py:179 +#: app_gateway/views.py:209 msgid "Application Host deleted successfully." msgstr "Hostiteľ aplikácie bol úspešne odstránený." -#: app_gateway/views.py:184 +#: app_gateway/views.py:214 msgid "Delete Application Host" msgstr "Odstrániť hostiteľa aplikácie" -#: app_gateway/views.py:186 +#: app_gateway/views.py:216 #, python-format msgid "Are you sure you want to delete the host \"%(hostname)s\"?" msgstr "Naozaj chcete odstrániť hostiteľa \"%(hostname)s\"?" -#: app_gateway/views.py:197 +#: app_gateway/views.py:227 #: templates/app_gateway/access_policy_type_select.html:9 msgid "Select Access Policy Type" msgstr "Vyberte typ prístupovej politiky" -#: app_gateway/views.py:212 +#: app_gateway/views.py:242 msgid "Edit Access Policy" msgstr "Upraviť politiku prístupu" -#: app_gateway/views.py:216 +#: app_gateway/views.py:246 msgid "Create Access Policy" msgstr "Vytvoriť politiku prístupu" -#: app_gateway/views.py:223 +#: app_gateway/views.py:253 msgid "Access Policy saved successfully." msgstr "Politika prístupu bola úspešne uložená." -#: app_gateway/views.py:229 +#: app_gateway/views.py:259 msgid "" "\n" "
Public Policy
\n" @@ -472,7 +501,7 @@ msgstr "" "akéhokoľvek overenia.

\n" " " -#: app_gateway/views.py:237 +#: app_gateway/views.py:267 msgid "" "\n" "
Deny Policy
\n" @@ -485,7 +514,7 @@ msgstr "" "trasám.

\n" " " -#: app_gateway/views.py:245 +#: app_gateway/views.py:275 msgid "" "\n" "
Protected Policy
\n" @@ -515,11 +544,11 @@ msgstr "" " \n" " " -#: app_gateway/views.py:276 +#: app_gateway/views.py:306 msgid "Access Policy deleted successfully." msgstr "Politika prístupu bola úspešne odstránená." -#: app_gateway/views.py:278 +#: app_gateway/views.py:308 msgid "" "Cannot delete this Access Policy because it is currently in use by an " "Application Route or Application Default Policy." @@ -527,53 +556,53 @@ msgstr "" "Túto prístupovú politiku nie je možné odstrániť, pretože sa momentálne " "používa v trase aplikácie alebo v predvolenej politike aplikácie." -#: app_gateway/views.py:283 +#: app_gateway/views.py:313 msgid "Delete Access Policy" msgstr "Odstrániť politiku prístupu" -#: app_gateway/views.py:285 +#: app_gateway/views.py:315 #, python-format msgid "Are you sure you want to delete the access policy \"%(name)s\"?" msgstr "Ste si istí, že chcete odstrániť politiku prístupu \"%(name)s\"?" -#: app_gateway/views.py:301 +#: app_gateway/views.py:331 msgid "Edit Application Default Policy" msgstr "Upraviť predvolenú politiku aplikácie" -#: app_gateway/views.py:305 +#: app_gateway/views.py:335 msgid "Set Application Default Policy" msgstr "Nastaviť predvolenú politiku aplikácie" -#: app_gateway/views.py:314 +#: app_gateway/views.py:344 msgid "Application Default Policy saved successfully." msgstr "Predvolená politika aplikácie bola úspešne uložená." -#: app_gateway/views.py:337 +#: app_gateway/views.py:367 msgid "Application Default Policy deleted successfully." msgstr "Predvolená politika aplikácie bola úspešne odstránená." -#: app_gateway/views.py:342 +#: app_gateway/views.py:372 msgid "Delete Application Default Policy" msgstr "Odstrániť predvolenú politiku aplikácie" -#: app_gateway/views.py:344 +#: app_gateway/views.py:374 #, python-format msgid "Are you sure you want to remove the default policy for \"%(name)s\"?" msgstr "Ste si istí, že chcete odstrániť predvolenú politiku pre \"%(name)s\"?" -#: app_gateway/views.py:362 +#: app_gateway/views.py:392 msgid "Edit Application Route" msgstr "Upraviť trasu aplikácie" -#: app_gateway/views.py:366 +#: app_gateway/views.py:396 msgid "Add Application Route" msgstr "Pridať trasu aplikácie" -#: app_gateway/views.py:375 +#: app_gateway/views.py:405 msgid "Application Route saved successfully." msgstr "Trasa aplikácie bola úspešne uložená." -#: app_gateway/views.py:380 +#: app_gateway/views.py:410 msgid "" "\n" "
Application Route
\n" @@ -613,41 +642,41 @@ msgstr "" " \n" " " -#: app_gateway/views.py:413 +#: app_gateway/views.py:443 msgid "Application Route deleted successfully." msgstr "Trasa aplikácie bola úspešne odstránená." -#: app_gateway/views.py:418 +#: app_gateway/views.py:448 msgid "Delete Application Route" msgstr "Odstrániť trasu aplikácie" -#: app_gateway/views.py:420 +#: app_gateway/views.py:450 #, python-format msgid "Are you sure you want to delete the route \"%(name)s\" (%(path)s)?" msgstr "Naozaj chcete odstrániť trasu \"%(name)s\" (%(path)s)?" -#: app_gateway/views.py:443 +#: app_gateway/views.py:468 +msgid "" +"Configuration export is not available because Caddy is not enabled. To use " +"App Gateway and Gatekeeper, start the application using docker-compose-" +"caddy.yml." +msgstr "" + +#: app_gateway/views.py:478 msgid "Configuration exported successfully." msgstr "Konfigurácia bola úspešne exportovaná." -#: app_gateway/views.py:445 -msgid "" -"Caddy is not active. Configuration files were exported for debugging " -"purposes." -msgstr "" -"Caddy nie je aktívny. Konfiguračné súbory boli exportované na účely ladenia." - #: cluster/forms.py:20 msgid "IP Lock" msgstr "IP zámok" -#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:271 +#: cluster/forms.py:21 dns/forms.py:67 gatekeeper/forms.py:315 #: templates/cluster/workers_list.html:10 #: templates/dns/static_host_list.html:18 #: templates/firewall/manage_redirect_rule.html:43 #: templates/firewall/manage_redirect_rule.html:67 #: templates/firewall/manage_redirect_rule.html:68 -#: templates/gatekeeper/gatekeeper_list.html:272 +#: templates/gatekeeper/gatekeeper_list.html:273 #: templates/wireguard/wireguard_status.html:45 msgid "IP Address" msgstr "IP adresa" @@ -918,7 +947,7 @@ msgstr "Statický DNS" msgid "Invalid hostname." msgstr "Neplatný názov hostiteľa." -#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:274 +#: dns/forms.py:131 firewall/forms.py:111 gatekeeper/forms.py:318 #: templates/api_v2/api_documentation.html:51 #: templates/dns/static_host_list.html:69 #: templates/firewall/manage_redirect_rule.html:18 @@ -1249,13 +1278,13 @@ msgstr "Spravovať nastavenia firewall" msgid "Firewall settings saved successfully" msgstr "Nastavenia firewall boli úspešne uložené" -#: gatekeeper/forms.py:17 templates/accounts/login.html:23 +#: gatekeeper/forms.py:18 templates/accounts/login.html:23 #: templates/vpn_invite/invite_settings.html:19 user_manager/forms.py:14 #: vpn_invite/forms.py:282 msgid "Password" msgstr "Heslo" -#: gatekeeper/forms.py:20 +#: gatekeeper/forms.py:21 msgid "" "Minimum 8 characters, with at least one uppercase letter, one lowercase " "letter, and one number." @@ -1263,15 +1292,15 @@ msgstr "" "Minimálne 8 znakov, aspoň jedno veľké písmeno, jedno malé písmeno a jedno " "číslo." -#: gatekeeper/forms.py:23 +#: gatekeeper/forms.py:24 msgid "Confirm Password" msgstr "Potvrdiť heslo" -#: gatekeeper/forms.py:28 gatekeeper/forms.py:161 +#: gatekeeper/forms.py:29 gatekeeper/forms.py:163 msgid "TOTP Validation PIN" msgstr "Validačný PIN TOTP" -#: gatekeeper/forms.py:31 gatekeeper/forms.py:164 +#: gatekeeper/forms.py:32 gatekeeper/forms.py:166 msgid "" "Enter a 6-digit PIN generated by your authenticator app to validate the " "secret." @@ -1279,185 +1308,219 @@ msgstr "" "Zadajte 6-miestny PIN vygenerovaný vašou autentifikačnou aplikáciou na " "overenie tajomstva." -#: gatekeeper/forms.py:38 templates/accounts/login.html:14 -#: templates/gatekeeper/gatekeeper_list.html:61 +#: gatekeeper/forms.py:39 templates/accounts/login.html:14 +#: templates/gatekeeper/gatekeeper_list.html:62 #: templates/user_manager/list.html:8 user_manager/forms.py:13 #: vpn_invite/forms.py:281 msgid "Username" msgstr "Používateľské meno" -#: gatekeeper/forms.py:39 gatekeeper/forms.py:344 -#: templates/gatekeeper/gatekeeper_list.html:62 -#: templates/gatekeeper/gatekeeper_list.html:220 +#: gatekeeper/forms.py:40 gatekeeper/forms.py:407 +#: templates/gatekeeper/gatekeeper_list.html:63 +#: templates/gatekeeper/gatekeeper_list.html:221 #: templates/wireguard/peer_list/peer_preview_modal.html:103 msgid "Email" msgstr "E-mail" -#: gatekeeper/forms.py:40 +#: gatekeeper/forms.py:41 msgid "TOTP Secret" msgstr "TOTP tajomstvo" -#: gatekeeper/forms.py:87 +#: gatekeeper/forms.py:88 msgid "Password is required." msgstr "Heslo je povinné." -#: gatekeeper/forms.py:90 user_manager/forms.py:127 +#: gatekeeper/forms.py:91 user_manager/forms.py:127 msgid "Password must be at least 8 characters long." msgstr "Heslo musí mať aspoň 8 znakov." -#: gatekeeper/forms.py:92 +#: gatekeeper/forms.py:93 msgid "Password must contain at least one lowercase letter." msgstr "Heslo musí obsahovať aspoň jedno malé písmeno." -#: gatekeeper/forms.py:94 +#: gatekeeper/forms.py:95 msgid "Password must contain at least one uppercase letter." msgstr "Heslo musí obsahovať aspoň jedno veľké písmeno." -#: gatekeeper/forms.py:96 +#: gatekeeper/forms.py:97 msgid "Password must contain at least one number." msgstr "Heslo musí obsahovať aspoň jedno číslo." -#: gatekeeper/forms.py:98 +#: gatekeeper/forms.py:99 msgid "Passwords do not match." msgstr "Heslá sa nezhodujú." -#: gatekeeper/forms.py:103 gatekeeper/forms.py:249 +#: gatekeeper/forms.py:104 gatekeeper/forms.py:276 msgid "Please provide a PIN to validate the TOTP secret." msgstr "Na overenie tajomstva TOTP zadajte PIN." -#: gatekeeper/forms.py:108 gatekeeper/forms.py:254 +#: gatekeeper/forms.py:109 gatekeeper/forms.py:281 msgid "Invalid TOTP PIN." msgstr "Neplatný PIN TOTP." -#: gatekeeper/forms.py:110 gatekeeper/forms.py:256 +#: gatekeeper/forms.py:111 gatekeeper/forms.py:283 msgid "Invalid TOTP secret format. Must be a valid Base32 string." msgstr "Neplatný formát tajomstva TOTP. Musí to byť platný reťazec Base32." -#: gatekeeper/forms.py:130 templates/gatekeeper/gatekeeper_list.html:120 +#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121 msgid "Group Name" msgstr "Názov skupiny" -#: gatekeeper/forms.py:131 templates/gatekeeper/gatekeeper_list.html:121 +#: gatekeeper/forms.py:132 templates/gatekeeper/gatekeeper_list.html:122 msgid "Members" msgstr "Členovia" +#: gatekeeper/forms.py:169 +#, fuzzy +#| msgid "Expiration" +msgid "Session Expiration" +msgstr "Expirácia" + #: gatekeeper/forms.py:175 +msgid "Unit" +msgstr "" + +#: gatekeeper/forms.py:176 +msgid "Hour(s)" +msgstr "" + +#: gatekeeper/forms.py:176 +msgid "Day(s)" +msgstr "" + +#: gatekeeper/forms.py:189 msgid "Authentication Type" msgstr "Typ autentifikácie" -#: gatekeeper/forms.py:176 +#: gatekeeper/forms.py:190 msgid "Global TOTP Secret" msgstr "Globálne TOTP tajomstvo" -#: gatekeeper/forms.py:177 +#: gatekeeper/forms.py:191 msgid "OIDC Provider URL" msgstr "URL poskytovateľa OIDC" -#: gatekeeper/forms.py:178 +#: gatekeeper/forms.py:192 msgid "OIDC Client ID" msgstr "ID klienta OIDC" -#: gatekeeper/forms.py:179 +#: gatekeeper/forms.py:193 msgid "OIDC Client Secret" msgstr "Secret klienta OIDC" -#: gatekeeper/forms.py:230 +#: gatekeeper/forms.py:257 msgid "TOTP secret must be empty for Local Password authentication." msgstr "TOTP tajomstvo musí byť prázdne pre autentifikáciu miestnym heslom." -#: gatekeeper/forms.py:232 +#: gatekeeper/forms.py:259 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:234 +#: gatekeeper/forms.py:261 msgid "OIDC fields must be empty for Local Password authentication." msgstr "Polia OIDC musia byť prázdne pre autentifikáciu miestnym heslom." -#: gatekeeper/forms.py:240 +#: gatekeeper/forms.py:267 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:243 +#: gatekeeper/forms.py:270 msgid "OIDC fields must be empty for TOTP authentication." msgstr "Polia OIDC musia byť prázdne pre autentifikáciu TOTP." -#: gatekeeper/forms.py:245 +#: gatekeeper/forms.py:272 msgid "TOTP secret is required for TOTP authentication." msgstr "TOTP tajomstvo je povinné pre autentifikáciu TOTP." -#: gatekeeper/forms.py:259 +#: gatekeeper/forms.py:285 +msgid "" +"OIDC authentication is temporarily unavailable and will be available soon." +msgstr "" + +#: gatekeeper/forms.py:287 msgid "TOTP secret must be empty for OIDC authentication." msgstr "TOTP tajomstvo musí byť prázdne pre autentifikáciu OIDC." -#: gatekeeper/forms.py:261 +#: gatekeeper/forms.py:289 msgid "TOTP validation PIN must be empty for OIDC authentication." msgstr "Validačný PIN TOTP musí byť prázdny pre autentifikáciu OIDC." -#: gatekeeper/forms.py:270 gatekeeper/forms.py:312 gatekeeper/forms.py:343 +#: gatekeeper/forms.py:314 gatekeeper/forms.py:375 gatekeeper/forms.py:406 msgid "Authentication Method" msgstr "Metóda autentifikácie" -#: gatekeeper/forms.py:272 templates/gatekeeper/gatekeeper_list.html:273 +#: gatekeeper/forms.py:316 templates/gatekeeper/gatekeeper_list.html:274 msgid "Prefix Length" msgstr "Dĺžka prefixu" -#: gatekeeper/forms.py:273 templates/firewall/firewall_rule_list.html:47 +#: gatekeeper/forms.py:317 templates/firewall/firewall_rule_list.html:47 #: templates/firewall/manage_firewall_rule.html:360 -#: templates/gatekeeper/gatekeeper_list.html:274 +#: templates/gatekeeper/gatekeeper_list.html:275 msgid "Action" msgstr "Akcia" -#: gatekeeper/forms.py:313 templates/gatekeeper/gatekeeper_list.html:237 +#: gatekeeper/forms.py:332 +#, python-format +msgid "Prefix length for IPv%(version)d must be between 0 and %(max)d." +msgstr "" + +#: gatekeeper/forms.py:376 templates/gatekeeper/gatekeeper_list.html:238 msgid "Domain" msgstr "Doména" -#: gatekeeper/models.py:10 +#: gatekeeper/models.py:27 msgid "Local Password" msgstr "Miestne heslo" -#: gatekeeper/models.py:11 +#: gatekeeper/models.py:28 msgid "One-Time Password (TOTP)" msgstr "Jednorazové heslo (TOTP)" -#: gatekeeper/models.py:12 +#: gatekeeper/models.py:29 msgid "OpenID Connect (OIDC)" msgstr "OpenID Connect (OIDC)" -#: gatekeeper/models.py:13 +#: gatekeeper/models.py:30 msgid "IP Address List" msgstr "Zoznam IP adries" -#: gatekeeper/models.py:17 +#: gatekeeper/models.py:34 msgid "Shared/global TOTP secret key" msgstr "Zdieľaný/globálny tajný kľúč TOTP" -#: gatekeeper/models.py:68 +#: gatekeeper/models.py:39 +#, fuzzy +#| msgid "Expiration (minutes)" +msgid "Session expiration time in minutes" +msgstr "Expirácia (minúty)" + +#: gatekeeper/models.py:96 msgid "Password for local authentication (leave blank if not using)" msgstr "Heslo pre miestnu autentifikáciu (ak nepoužívate, nechajte prázdne)" -#: gatekeeper/models.py:69 +#: gatekeeper/models.py:97 msgid "Per-user TOTP secret key" msgstr "Tajný kľúč TOTP pre jednotlivých používateľov" -#: gatekeeper/models.py:108 templates/gatekeeper/gatekeeper_list.html:286 +#: gatekeeper/models.py:142 templates/gatekeeper/gatekeeper_list.html:287 msgid "Allow" msgstr "Povoliť" -#: gatekeeper/views.py:54 +#: gatekeeper/views.py:58 msgid "Edit Gatekeeper User" msgstr "Upraviť používateľa Gatekeeper" -#: gatekeeper/views.py:57 +#: gatekeeper/views.py:61 msgid "Create Gatekeeper User" msgstr "Vytvoriť používateľa Gatekeeper" -#: gatekeeper/views.py:64 +#: gatekeeper/views.py:68 msgid "Gatekeeper User saved successfully." msgstr "Používateľ Gatekeeper bol úspešne uložený." -#: gatekeeper/views.py:69 +#: gatekeeper/views.py:73 msgid "" "\n" "

Gatekeeper User

\n" @@ -1481,75 +1544,96 @@ msgid "" msgstr "" "\n" "

Používateľ Gatekeeper

\n" -"

Používatelia Gatekeeper sa používajú na autentifikáciu voči chráneným " -"aplikáciám spravovaným touto bránou.

\n" +"

Používatelia Gatekeeper sa používajú na autentifikáciu voči " +"chráneným aplikáciám spravovaným touto bránou.

\n" "\n" "
Heslo
\n" -"

Vyžaduje sa pri vytváraní používateľa. Pri úprave ponechajte obe polia pre heslo " -"prázdne, aby sa zachovalo aktuálne heslo.\n" +"

Vyžaduje sa pri vytváraní používateľa. Pri úprave ponechajte obe " +"polia pre heslo prázdne, aby sa zachovalo aktuálne heslo.\n" " Heslá sa ukladajú pomocou hašovania Argon2id.

\n" "\n" "
TOTP tajomstvo
\n" -"

Voliteľné TOTP tajomstvo pre konkrétneho používateľa. Keď je nastavené, tento používateľ sa " -"bude autentifikovať pomocou vlastného tajomstva namiesto\n" -" globálneho TOTP tajomstva konfigurovaného v metóde autentifikácie. Pomocou " -"tlačidiel pod poľom vygenerujte\n" -" náhodné tajomstvo a naskenujte QR kód pomocou vašej aplikácie autentifikátora. " -"Pred uložením overte tajomstvo zadaním aktuálneho\n" +"

Voliteľné TOTP tajomstvo pre konkrétneho používateľa. Keď je " +"nastavené, tento používateľ sa bude autentifikovať pomocou vlastného " +"tajomstva namiesto\n" +" globálneho TOTP tajomstva konfigurovaného v metóde autentifikácie. " +"Pomocou tlačidiel pod poľom vygenerujte\n" +" náhodné tajomstvo a naskenujte QR kód pomocou vašej aplikácie " +"autentifikátora. Pred uložením overte tajomstvo zadaním aktuálneho\n" " 6-miestneho kódu PIN.

\n" " " -#: gatekeeper/views.py:106 +#: gatekeeper/views.py:110 msgid "Gatekeeper User deleted successfully." msgstr "Používateľ Gatekeeper bol úspešne odstránený." -#: gatekeeper/views.py:111 +#: gatekeeper/views.py:115 msgid "Delete Gatekeeper User" msgstr "Odstrániť používateľa Gatekeeper" -#: gatekeeper/views.py:113 +#: gatekeeper/views.py:117 #, python-format msgid "Are you sure you want to delete the user \"%(username)s\"?" msgstr "Naozaj chcete odstrániť používateľa \"%(username)s\"?" -#: gatekeeper/views.py:127 +#: gatekeeper/views.py:131 msgid "Edit Gatekeeper Group" msgstr "Upraviť skupinu Gatekeeper" -#: gatekeeper/views.py:130 +#: gatekeeper/views.py:134 msgid "Create Gatekeeper Group" msgstr "Vytvoriť skupinu Gatekeeper" -#: gatekeeper/views.py:137 +#: gatekeeper/views.py:141 msgid "Gatekeeper Group saved successfully." msgstr "Skupina Gatekeeper bola úspešne uložená." -#: gatekeeper/views.py:159 +#: gatekeeper/views.py:163 msgid "Gatekeeper Group deleted successfully." msgstr "Skupina Gatekeeper bola úspešne odstránená." -#: gatekeeper/views.py:164 +#: gatekeeper/views.py:168 msgid "Delete Gatekeeper Group" msgstr "Odstrániť skupinu Gatekeeper" -#: gatekeeper/views.py:166 +#: gatekeeper/views.py:170 #, python-format msgid "Are you sure you want to delete the group \"%(name)s\"?" msgstr "Naozaj chcete odstrániť skupinu \"%(name)s\"?" -#: gatekeeper/views.py:180 +#: gatekeeper/views.py:184 msgid "Edit Authentication Method" msgstr "Upraviť metódu autentifikácie" -#: gatekeeper/views.py:183 +#: gatekeeper/views.py:187 msgid "Create Authentication Method" msgstr "Vytvoriť metódu autentifikácie" -#: gatekeeper/views.py:190 +#: gatekeeper/views.py:194 msgid "Authentication Method saved successfully." msgstr "Metóda autentifikácie bola úspešne uložená." -#: gatekeeper/views.py:195 +#: gatekeeper/views.py:199 +#, fuzzy +#| msgid "" +#| "\n" +#| "

Authentication Types

\n" +#| "

Select how users will authenticate through this method.

\n" +#| " \n" +#| "
Local Password
\n" +#| "

Users will authenticate using a standard username and password " +#| "stored locally. Only one of this type can be created.

\n" +#| " \n" +#| "
OIDC (OpenID Connect)
\n" +#| "

Users will authenticate via an external identity provider " +#| "(like Keycloak, Google, or Authelia). Requires Provider URL, Client ID, " +#| "and Client Secret.

\n" +#| " \n" +#| "
TOTP (Time-Based One-Time Password)
\n" +#| "

Users will need to enter a rotating token from an " +#| "authenticator app. If a user does not have a personal TOTP configured, " +#| "the Global TOTP Secret will be used instead.

\n" +#| " " msgid "" "\n" "

Authentication Types

\n" @@ -1561,8 +1645,8 @@ msgid "" " \n" "
OIDC (OpenID Connect)
\n" "

Users will authenticate via an external identity provider (like " -"Keycloak, Google, or Authelia). Requires Provider URL, Client ID, and Client " -"Secret.

\n" +"Keycloak or Google). Requires Provider URL, Client ID, and Client Secret.\n" " \n" "
TOTP (Time-Based One-Time Password)
\n" "

Users will need to enter a rotating token from an authenticator " @@ -1588,83 +1672,90 @@ msgstr "" "p>\n" " " -#: gatekeeper/views.py:230 +#: gatekeeper/views.py:237 +#, python-format +msgid "" +"Cannot delete authentication method \"%(method)s\" because it is used by the " +"following policies: %(policies)s." +msgstr "" + +#: gatekeeper/views.py:243 msgid "Authentication Method deleted successfully." msgstr "Metóda autentifikácie bola úspešne odstránená." -#: gatekeeper/views.py:235 +#: gatekeeper/views.py:248 msgid "Delete Authentication Method" msgstr "Odstrániť metódu autentifikácie" -#: gatekeeper/views.py:237 +#: gatekeeper/views.py:250 #, python-format msgid "Are you sure you want to delete the authentication method \"%(name)s\"?" msgstr "Naozaj chcete odstrániť metódu autentifikácie \"%(name)s\"?" -#: gatekeeper/views.py:287 +#: gatekeeper/views.py:303 msgid "Edit Allowed Domain" msgstr "Upraviť povolenú doménu" -#: gatekeeper/views.py:290 templates/gatekeeper/gatekeeper_list.html:202 +#: gatekeeper/views.py:306 templates/gatekeeper/gatekeeper_list.html:203 msgid "Add Allowed Domain" msgstr "Pridať povolenú doménu" -#: gatekeeper/views.py:297 +#: gatekeeper/views.py:313 msgid "Allowed Domain saved successfully." msgstr "Povolená doména bola úspešne uložená." -#: gatekeeper/views.py:319 +#: gatekeeper/views.py:335 msgid "Allowed Domain deleted successfully." msgstr "Povolená doména bola úspešne odstránená." -#: gatekeeper/views.py:324 +#: gatekeeper/views.py:340 msgid "Delete Allowed Domain" msgstr "Odstrániť povolenú doménu" -#: gatekeeper/views.py:326 +#: gatekeeper/views.py:342 #, python-format msgid "Are you sure you want to delete the allowed domain \"%(domain)s\"?" msgstr "Naozaj chcete odstrániť povolenú doménu \"%(domain)s\"?" -#: gatekeeper/views.py:340 +#: gatekeeper/views.py:356 msgid "Edit Allowed Email" msgstr "Upraviť povolený e-mail" -#: gatekeeper/views.py:343 templates/gatekeeper/gatekeeper_list.html:199 +#: gatekeeper/views.py:359 templates/gatekeeper/gatekeeper_list.html:200 msgid "Add Allowed Email" msgstr "Pridať povolený e-mail" -#: gatekeeper/views.py:350 +#: gatekeeper/views.py:366 msgid "Allowed Email saved successfully." msgstr "Povolený e-mail bol úspešne uložený." -#: gatekeeper/views.py:372 +#: gatekeeper/views.py:388 msgid "Allowed Email deleted successfully." msgstr "Povolený e-mail bol úspešne odstránený." -#: gatekeeper/views.py:377 +#: gatekeeper/views.py:393 msgid "Delete Allowed Email" msgstr "Odstrániť povolený e-mail" -#: gatekeeper/views.py:379 +#: gatekeeper/views.py:395 #, python-format msgid "Are you sure you want to delete the allowed email \"%(email)s\"?" msgstr "Naozaj chcete odstrániť povolený e-mail \"%(email)s\"?" -#: gatekeeper/views.py:393 +#: gatekeeper/views.py:409 msgid "Edit IP Address" msgstr "Upraviť IP adresu" -#: gatekeeper/views.py:396 templates/gatekeeper/gatekeeper_list.html:263 +#: gatekeeper/views.py:412 templates/gatekeeper/gatekeeper_list.html:264 #: templates/wireguard/wireguard_manage_peer.html:171 msgid "Add IP Address" msgstr "Pridať IP adresu" -#: gatekeeper/views.py:403 +#: gatekeeper/views.py:419 msgid "IP Address saved successfully." msgstr "IP adresa bola úspešne uložená." -#: gatekeeper/views.py:408 +#: gatekeeper/views.py:424 msgid "" "\n" "

IP Address List
\n" @@ -1711,24 +1802,25 @@ msgstr "" "(napr. „Kancelárska sieť“, „Blokovaný útočník“).

\n" " " -#: gatekeeper/views.py:444 +#: gatekeeper/views.py:460 msgid "IP Address deleted successfully." msgstr "IP adresa bola úspešne odstránená." -#: gatekeeper/views.py:449 +#: gatekeeper/views.py:465 msgid "Delete IP Address" msgstr "Odstrániť IP adresu" -#: gatekeeper/views.py:451 +#: gatekeeper/views.py:467 #, python-format msgid "Are you sure you want to delete the IP address \"%(address)s\"?" msgstr "Naozaj chcete odstrániť IP adresu \"%(address)s\"?" -#: intl_tools/forms.py:11 templates/accounts/login.html:36 +#: intl_tools/forms.py:11 msgid "Language" msgstr "Jazyk" -#: intl_tools/forms.py:24 templates/template_parts/base_navbar.html:14 +#: intl_tools/forms.py:24 templates/accounts/login.html:35 +#: templates/template_parts/base_navbar.html:19 msgid "Change Language" msgstr "Zmeniť jazyk" @@ -2051,6 +2143,11 @@ msgstr "Prosím kontaktujte správcu systému ak si myslíte, že je to chyba." msgid "Login" msgstr "Prihlásiť sa" +#: templates/accounts/login.html:40 +#: templates/template_parts/base_navbar.html:14 +msgid "Toggle Dark Mode" +msgstr "" + #: templates/accounts/logout.html:11 msgid "You have been successfully logged out." msgstr "Boli ste úspešne odhlásený." @@ -2073,8 +2170,8 @@ msgid "In" msgstr "Vstup" #: templates/api_v2/api_documentation.html:49 -#: templates/gatekeeper/gatekeeper_list.html:166 -#: templates/gatekeeper/gatekeeper_list.html:211 +#: templates/gatekeeper/gatekeeper_list.html:167 +#: templates/gatekeeper/gatekeeper_list.html:212 #: templates/wireguard/apply_route_template.html:27 msgid "Type" msgstr "Typ" @@ -2084,13 +2181,13 @@ msgid "Required" msgstr "Povinné" #: templates/api_v2/api_documentation.html:62 -#: templates/gatekeeper/gatekeeper_list.html:75 +#: templates/gatekeeper/gatekeeper_list.html:76 #: templates/scheduler/scheduleprofile_form.html:175 msgid "Yes" msgstr "Áno" #: templates/api_v2/api_documentation.html:64 -#: templates/gatekeeper/gatekeeper_list.html:77 +#: templates/gatekeeper/gatekeeper_list.html:78 #: templates/scheduler/scheduleprofile_form.html:177 msgid "No" msgstr "Nie" @@ -2130,17 +2227,17 @@ msgid "Disabled" msgstr "Zakázané" #: templates/api_v2/list.html:68 -#: templates/app_gateway/app_gateway_list.html:154 -#: templates/app_gateway/application_details.html:71 -#: templates/app_gateway/application_details.html:121 +#: templates/app_gateway/app_gateway_list.html:162 +#: templates/app_gateway/application_details.html:99 +#: templates/app_gateway/application_details.html:150 #: templates/cluster/workers_list.html:77 #: templates/dns/static_host_list.html:74 -#: templates/gatekeeper/gatekeeper_list.html:89 -#: templates/gatekeeper/gatekeeper_list.html:132 -#: templates/gatekeeper/gatekeeper_list.html:177 -#: templates/gatekeeper/gatekeeper_list.html:225 -#: templates/gatekeeper/gatekeeper_list.html:242 -#: templates/gatekeeper/gatekeeper_list.html:294 +#: templates/gatekeeper/gatekeeper_list.html:90 +#: templates/gatekeeper/gatekeeper_list.html:133 +#: templates/gatekeeper/gatekeeper_list.html:178 +#: templates/gatekeeper/gatekeeper_list.html:226 +#: templates/gatekeeper/gatekeeper_list.html:243 +#: templates/gatekeeper/gatekeeper_list.html:295 #: templates/routing_templates/list.html:29 #: templates/scheduler/scheduleprofile_form.html:123 #: templates/scheduler/scheduleprofile_list.html:25 @@ -2172,78 +2269,83 @@ msgstr "Vyžadovať overenie pomocou špecifikovaných metód alebo skupín." msgid "Deny all access." msgstr "Odmietnuť všetok prístup." -#: templates/app_gateway/app_gateway_list.html:12 -#: templates/app_gateway/app_gateway_list.html:30 +#: templates/app_gateway/app_gateway_list.html:13 +#: templates/app_gateway/app_gateway_list.html:31 msgid "Applications" msgstr "Aplikácie" -#: templates/app_gateway/app_gateway_list.html:18 +#: templates/app_gateway/app_gateway_list.html:19 msgid "Access Policies" msgstr "Politiky prístupu" -#: templates/app_gateway/app_gateway_list.html:34 -#: templates/app_gateway/app_gateway_list.html:60 +#: templates/app_gateway/app_gateway_list.html:35 +#: templates/app_gateway/app_gateway_list.html:68 #: templates/dns/static_host_list.html:70 msgid "Hosts" msgstr "Hostiteľia" -#: templates/app_gateway/app_gateway_list.html:42 +#: templates/app_gateway/app_gateway_list.html:44 +#: templates/app_gateway/app_gateway_list.html:50 msgid "Export Configuration" msgstr "Exportovať konfiguráciu" -#: templates/app_gateway/app_gateway_list.html:46 +#: templates/app_gateway/app_gateway_list.html:49 +msgid "Export is not available because Caddy is not enabled." +msgstr "" + +#: templates/app_gateway/app_gateway_list.html:54 msgid "Add Application" msgstr "Pridať aplikáciu" -#: templates/app_gateway/app_gateway_list.html:61 +#: templates/app_gateway/app_gateway_list.html:69 msgid "Routes" msgstr "Trasy" -#: templates/app_gateway/app_gateway_list.html:80 -#: templates/app_gateway/application_details.html:39 +#: templates/app_gateway/app_gateway_list.html:88 +#: templates/app_gateway/application_details.html:47 msgid "Default (Deny)" msgstr "Predvolené (Zamietnuť)" -#: templates/app_gateway/app_gateway_list.html:90 +#: templates/app_gateway/app_gateway_list.html:98 msgid "No Applications found." msgstr "Nenašli sa žiadne aplikácie." -#: templates/app_gateway/app_gateway_list.html:102 +#: templates/app_gateway/app_gateway_list.html:110 msgid "Application" msgstr "Aplikácia" -#: templates/app_gateway/app_gateway_list.html:121 +#: templates/app_gateway/app_gateway_list.html:129 msgid "No Hosts found." msgstr "Nenašli sa žiadni hostitelia." -#: templates/app_gateway/app_gateway_list.html:129 +#: templates/app_gateway/app_gateway_list.html:137 msgid "Add Access Policy" msgstr "Pridať politiku prístupu" -#: templates/app_gateway/app_gateway_list.html:140 -#: templates/gatekeeper/gatekeeper_list.html:43 -#: templates/gatekeeper/gatekeeper_list.html:64 +#: templates/app_gateway/app_gateway_list.html:148 +#: templates/gatekeeper/gatekeeper_list.html:44 +#: templates/gatekeeper/gatekeeper_list.html:65 msgid "Groups" msgstr "Skupiny" -#: templates/app_gateway/app_gateway_list.html:141 +#: templates/app_gateway/app_gateway_list.html:149 msgid "Auth Methods" msgstr "Metódy autentifikácie" -#: templates/app_gateway/app_gateway_list.html:142 -#: templates/app_gateway/application_details.html:62 -#: templates/app_gateway/application_details.html:109 -#: templates/gatekeeper/gatekeeper_list.html:65 -#: templates/gatekeeper/gatekeeper_list.html:122 -#: templates/gatekeeper/gatekeeper_list.html:167 -#: templates/gatekeeper/gatekeeper_list.html:214 +#: templates/app_gateway/app_gateway_list.html:150 +#: templates/app_gateway/application_details.html:76 +#: templates/app_gateway/application_details.html:138 +#: templates/gatekeeper/gatekeeper_list.html:66 +#: templates/gatekeeper/gatekeeper_list.html:123 +#: templates/gatekeeper/gatekeeper_list.html:168 +#: templates/gatekeeper/gatekeeper_list.html:215 #: templates/scheduler/scheduleprofile_form.html:111 #: templates/scheduler/scheduleprofile_list.html:15 #: templates/wireguard/apply_route_template.html:28 msgid "Actions" msgstr "Akcie" -#: templates/app_gateway/app_gateway_list.html:169 +#: templates/app_gateway/app_gateway_list.html:177 msgid "No Access Policies found." msgstr "Nenašli sa žiadne politiky prístupu." @@ -2252,34 +2354,79 @@ msgstr "Nenašli sa žiadne politiky prístupu." msgid "Back to List" msgstr "Späť na zoznam" -#: templates/app_gateway/application_details.html:41 +#: templates/app_gateway/application_details.html:15 +#: templates/app_gateway/application_details.html:59 +#: templates/app_gateway/application_details.html:91 +#: templates/app_gateway/application_details.html:94 +msgid "This application cannot be modified" +msgstr "" + +#: templates/app_gateway/application_details.html:18 +#, fuzzy +#| msgid "Application Route deleted successfully." +msgid "This application cannot be deleted" +msgstr "Trasa aplikácie bola úspešne odstránená." + +#: templates/app_gateway/application_details.html:49 msgid "Set Policy" msgstr "Nastaviť politiku" -#: templates/app_gateway/application_details.html:48 +#: templates/app_gateway/application_details.html:56 msgid "Application Hosts" msgstr "Hostitelia aplikácie" -#: templates/app_gateway/application_details.html:52 +#: templates/app_gateway/application_details.html:60 +#: templates/app_gateway/application_details.html:65 msgid "Add Host" msgstr "Pridať hostiteľa" -#: templates/app_gateway/application_details.html:86 +#: templates/app_gateway/application_details.html:115 msgid "No Hosts configured for this application." msgstr "Pre túto aplikáciu nie sú konfigurovaní žiadni hostitelia." -#: templates/app_gateway/application_details.html:92 +#: templates/app_gateway/application_details.html:121 msgid "Application Routes" msgstr "Trasy aplikácie" -#: templates/app_gateway/application_details.html:96 +#: templates/app_gateway/application_details.html:125 msgid "Add Route" msgstr "Pridať trasu" -#: templates/app_gateway/application_details.html:136 +#: templates/app_gateway/application_details.html:165 msgid "No Routes configured for this application." msgstr "Pre túto aplikáciu nie sú konfigurované žiadne trasy." +#: templates/app_gateway/caddy_disabled_alert.html:5 +#, fuzzy +#| msgid "Cluster is not enabled" +msgid "Caddy is not enabled" +msgstr "Cluster nie je povolený" + +#: templates/app_gateway/caddy_disabled_alert.html:6 +msgid "" +"The App Gateway and Gatekeeper modules require Caddy and the auth-gateway " +"container to be running. Please start the application using docker-" +"compose-caddy.yml." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:7 +msgid "" +"Depending on your custom firewall or proxy rules, the way you access " +"wireguard_webadmin may change slightly after enabling Caddy." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:8 +msgid "" +"Switching to Caddy is simple, but it may require a bit of time and attention " +"to review your current setup." +msgstr "" + +#: templates/app_gateway/caddy_disabled_alert.html:9 +#, fuzzy +#| msgid "For more information, please visit:" +msgid "For more information, see the discussion:" +msgstr "Pre viac informácií navštívte prosím:" + #: templates/cluster/workers_list.html:9 templates/dns/static_host_list.html:72 #: templates/scheduler/scheduleprofile_form.html:82 #: templates/template_parts/base_sidebar.html:13 vpn_invite/forms.py:78 @@ -2789,85 +2936,92 @@ msgstr "" msgid "Create Port forwarding Rule" msgstr "Vytvoriť pravidlo presmerovania portov" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:63 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:67 #: templates/gatekeeper/gatekeeper_user_form.html:43 msgid "View QR Code" msgstr "Zobraziť QR kód" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:64 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:68 #: templates/gatekeeper/gatekeeper_user_form.html:44 msgid "Generate TOTP Secret" msgstr "Generovať TOTP tajomstvo" -#: templates/gatekeeper/gatekeeper_auth_method_form.html:93 -#: templates/gatekeeper/gatekeeper_user_form.html:73 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:105 +#: templates/gatekeeper/gatekeeper_user_form.html:81 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:18 +#: templates/gatekeeper/gatekeeper_auth_method_form.html:127 +#: templates/gatekeeper/gatekeeper_user_form.html:103 +#, fuzzy +#| msgid "Error creating invite." +msgid "Error generating QR code." +msgstr "Chyba pri vytváraní pozvánky." + +#: templates/gatekeeper/gatekeeper_list.html:19 msgid "Gatekeeper Users" msgstr "Používatelia Gatekeeper" -#: templates/gatekeeper/gatekeeper_list.html:24 +#: templates/gatekeeper/gatekeeper_list.html:25 msgid "Allowed Emails & Domains" msgstr "Povolené e-maily a domény" -#: templates/gatekeeper/gatekeeper_list.html:30 +#: templates/gatekeeper/gatekeeper_list.html:31 msgid "IP Addresses" msgstr "IP adresy" -#: templates/gatekeeper/gatekeeper_list.html:40 +#: templates/gatekeeper/gatekeeper_list.html:41 #: templates/user_manager/peer_group_list.html:11 msgid "Users" msgstr "Používatelia" -#: templates/gatekeeper/gatekeeper_list.html:51 +#: templates/gatekeeper/gatekeeper_list.html:52 #: templates/user_manager/list_buttons.html:2 user_manager/views.py:111 msgid "Add User" msgstr "Pridať používateľa" -#: templates/gatekeeper/gatekeeper_list.html:63 +#: templates/gatekeeper/gatekeeper_list.html:64 msgid "TOTP" msgstr "TOTP" -#: templates/gatekeeper/gatekeeper_list.html:104 +#: templates/gatekeeper/gatekeeper_list.html:105 msgid "No Gatekeeper Users found." msgstr "Nenašli sa žiadni používatelia Gatekeeper." -#: templates/gatekeeper/gatekeeper_list.html:111 +#: templates/gatekeeper/gatekeeper_list.html:112 msgid "Add Group" msgstr "Pridať skupinu" -#: templates/gatekeeper/gatekeeper_list.html:147 +#: templates/gatekeeper/gatekeeper_list.html:148 msgid "No Gatekeeper Groups found." msgstr "Nenašli sa žiadne skupiny Gatekeeper." -#: templates/gatekeeper/gatekeeper_list.html:156 +#: templates/gatekeeper/gatekeeper_list.html:157 msgid "Add Auth Method" msgstr "Pridať metódu autentifikácie" -#: templates/gatekeeper/gatekeeper_list.html:192 +#: templates/gatekeeper/gatekeeper_list.html:193 msgid "No Authentication Methods found." msgstr "Nenašli sa žiadne metódy autentifikácie." -#: templates/gatekeeper/gatekeeper_list.html:212 +#: templates/gatekeeper/gatekeeper_list.html:213 msgid "Identity" msgstr "Identita" -#: templates/gatekeeper/gatekeeper_list.html:213 -#: templates/gatekeeper/gatekeeper_list.html:275 +#: templates/gatekeeper/gatekeeper_list.html:214 +#: templates/gatekeeper/gatekeeper_list.html:276 msgid "Auth Method" msgstr "Metóda autentifikácie" -#: templates/gatekeeper/gatekeeper_list.html:257 +#: templates/gatekeeper/gatekeeper_list.html:258 msgid "No Allowed Emails or Domains found." msgstr "Nenašli sa žiadne povolené e-maily ani domény." -#: templates/gatekeeper/gatekeeper_list.html:276 +#: templates/gatekeeper/gatekeeper_list.html:277 msgid "Manage" msgstr "Spravovať" -#: templates/gatekeeper/gatekeeper_list.html:309 +#: templates/gatekeeper/gatekeeper_list.html:310 msgid "No IP Addresses found." msgstr "Nenašli sa žiadne IP adresy." @@ -3489,6 +3643,10 @@ msgstr "Vymazať peer" msgid "Please type \\\"delete\\\" to remove peer configuration." msgstr "Prosím napíšte \\\"delete\\\" pre odstránenie konfigurácie peer." +#: templates/wireguard/wireguard_manage_server.html:25 wireguard/forms.py:15 +msgid "Display Name" +msgstr "Zobrazovací názov" + #: templates/wireguard/wireguard_manage_server.html:27 msgid "" "\n" @@ -4468,5 +4626,25 @@ msgstr "" "Neboli nájdené rozhrania|Neboli nájdené žiadne WireGuard rozhrania na " "spracovanie." +#~ msgid "This is a reserved system name." +#~ msgstr "Toto je vyhradený systémový názov." + +#~ msgid "" +#~ "TOTP must be combined with a Local Password or OpenID Connect " +#~ "authentication method." +#~ msgstr "" +#~ "TOTP musí byť kombinované s metódou autentifikácie Lokálne heslo alebo " +#~ "OpenID Connect." + +#~ msgid "Route identifier, used in export (e.g.: public_area)" +#~ msgstr "Identifikátor trasy, použitý v exporte (napr.: public_area)" + +#~ msgid "" +#~ "Caddy is not active. Configuration files were exported for debugging " +#~ "purposes." +#~ msgstr "" +#~ "Caddy nie je aktívny. Konfiguračné súbory boli exportované na účely " +#~ "ladenia." + #~ msgid "Global TOTP Before Authentication" #~ msgstr "Globálne TOTP pred autentifikáciou"