Improve display of keep-alive options in OpenVPN configuration (#1038)

Timeout was not displayed. Move options to a separate section.
This commit is contained in:
Davide 2024-12-22 10:55:56 +01:00 committed by GitHub
parent a187fd56e0
commit 6d62953eff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 83 additions and 54 deletions

View File

@ -61,6 +61,7 @@ extension OpenVPNView {
if !isServerPushed {
moduleSection(for: tlsRows, header: Strings.Unlocalized.tls)
}
moduleSection(for: keepAliveRows, header: Strings.Global.Nouns.keepAlive)
moduleSection(for: otherRows, header: Strings.Global.Nouns.other)
}
}
@ -316,11 +317,19 @@ private extension OpenVPNView.ConfigurationView {
return rows.nilIfEmpty
}
var otherRows: [ModuleRow]? {
var keepAliveRows: [ModuleRow]? {
var rows: [ModuleRow] = []
configuration.localizedDescription(optionalStyle: .keepAlive).map {
rows.append(.text(caption: Strings.Global.Nouns.keepAlive, value: $0))
rows.append(.text(caption: Strings.Global.Nouns.interval, value: $0))
}
configuration.localizedDescription(optionalStyle: .keepAliveTimeout).map {
rows.append(.text(caption: Strings.Global.Nouns.timeout, value: $0))
}
return rows.nilIfEmpty
}
var otherRows: [ModuleRow]? {
var rows: [ModuleRow] = []
configuration.localizedDescription(optionalStyle: .renegotiatesAfter).map {
rows.append(.text(caption: Strings.Modules.Openvpn.renegotiation, value: $0))
}

View File

@ -136,7 +136,7 @@ extension PassepartoutError.Code: StyledLocalizableEntity {
return V.dns
case .timeout:
return V.timeout
return Strings.Global.Nouns.timeout
case .OpenVPN.compressionMismatch:
return V.compression

View File

@ -160,6 +160,8 @@ extension OpenVPN.Configuration.Builder: StyledOptionalLocalizableEntity {
public enum OptionalStyle {
case keepAlive
case keepAliveTimeout
case renegotiatesAfter
case randomizeEndpoint
@ -172,6 +174,9 @@ extension OpenVPN.Configuration.Builder: StyledOptionalLocalizableEntity {
case .keepAlive:
return keepAliveInterval?.localizedDescription(style: .timeString)
case .keepAliveTimeout:
return keepAliveTimeout?.localizedDescription(style: .timeString)
case .renegotiatesAfter:
return renegotiatesAfter?.localizedDescription(style: .timeString)

View File

@ -156,8 +156,6 @@ public enum Strings {
public static let routing = Strings.tr("Localizable", "errors.tunnel.routing", fallback: "Missing routing")
/// Server shutdown
public static let shutdown = Strings.tr("Localizable", "errors.tunnel.shutdown", fallback: "Server shutdown")
/// Timeout
public static let timeout = Strings.tr("Localizable", "errors.tunnel.timeout", fallback: "Timeout")
/// TLS failed
public static let tls = Strings.tr("Localizable", "errors.tunnel.tls", fallback: "TLS failed")
}
@ -272,6 +270,8 @@ public enum Strings {
public static let hostname = Strings.tr("Localizable", "global.nouns.hostname", fallback: "Hostname")
/// Interface
public static let interface = Strings.tr("Localizable", "global.nouns.interface", fallback: "Interface")
/// Interval
public static let interval = Strings.tr("Localizable", "global.nouns.interval", fallback: "Interval")
/// Keep-alive
public static let keepAlive = Strings.tr("Localizable", "global.nouns.keep_alive", fallback: "Keep-alive")
/// Key
@ -340,6 +340,8 @@ public enum Strings {
public static let status = Strings.tr("Localizable", "global.nouns.status", fallback: "Status")
/// Subnet
public static let subnet = Strings.tr("Localizable", "global.nouns.subnet", fallback: "Subnet")
/// Timeout
public static let timeout = Strings.tr("Localizable", "global.nouns.timeout", fallback: "Timeout")
/// Unknown
public static let unknown = Strings.tr("Localizable", "global.nouns.unknown", fallback: "Unknown")
/// Username

View File

@ -45,7 +45,6 @@
"errors.tunnel.ineligible" = "Kauf erforderlich";
"errors.tunnel.routing" = "Routing fehlt";
"errors.tunnel.shutdown" = "Server heruntergefahren";
"errors.tunnel.timeout" = "Zeitüberschreitung";
"errors.tunnel.tls" = "TLS fehlgeschlagen";
"features.appletv" = "%@";
"features.dns" = "DNS-Einstellungen";
@ -90,12 +89,14 @@
"global.nouns.empty" = "Leer";
"global.nouns.enabled" = "Aktiviert";
"global.nouns.endpoint" = "Endpunkt";
"global.nouns.features" = "Funktionen";
"global.nouns.filters" = "Filter";
"global.nouns.folder" = "Ordner";
"global.nouns.gateway" = "Gateway";
"global.nouns.general" = "Allgemein";
"global.nouns.hostname" = "Host-Name";
"global.nouns.interface" = "Schnittstelle";
"global.nouns.interval" = "Intervall";
"global.nouns.keep_alive" = "Am Leben halten";
"global.nouns.key" = "Schlüssel";
"global.nouns.last_update" = "Letztes Update";
@ -114,10 +115,12 @@
"global.nouns.password" = "Passwort";
"global.nouns.port" = "Port";
"global.nouns.private_key" = "Privater Schlüssel";
"global.nouns.products" = "Produkte"; // German
"global.nouns.profile" = "Profil";
"global.nouns.protocol" = "Protokoll";
"global.nouns.provider" = "Anbieter";
"global.nouns.public_key" = "Öffentlicher Schlüssel";
"global.nouns.purchases" = "Käufe";
"global.nouns.region" = "Region";
"global.nouns.route" = "Route";
"global.nouns.routes" = "Routen";
@ -127,6 +130,7 @@
"global.nouns.settings" = "Einstellungen";
"global.nouns.status" = "Status";
"global.nouns.subnet" = "Subnetz";
"global.nouns.timeout" = "Zeitüberschreitung";
"global.nouns.unknown" = "Unbekannt";
"global.nouns.username" = "Benutzername";
"global.nouns.version" = "Version";
@ -271,8 +275,6 @@
"views.purchased.rows.build_number" = "Build-Nummer";
"views.purchased.rows.download_date" = "Download-Datum";
"views.purchased.sections.download.header" = "Erster Download";
"global.nouns.features" = "Funktionen";
"global.nouns.purchases" = "Käufe";
"views.purchased.title" = "Gekauft";
"views.ui.connection_status.on_demand_suffix" = " (auf Anfrage)";
"views.ui.purchase_required.purchase.help" = "Kauf erforderlich";
@ -281,4 +283,3 @@
"views.vpn.category.any" = "Alle Kategorien";
"views.vpn.no_servers" = "Keine Server";
"views.vpn.preset" = "Voreinstellung";
"global.nouns.products" = "Produkte"; // German

View File

@ -45,7 +45,6 @@
"errors.tunnel.ineligible" = "Απαιτείται αγορά";
"errors.tunnel.routing" = "Η δρομολόγηση λείπει";
"errors.tunnel.shutdown" = "Ο διακομιστής τερματίστηκε";
"errors.tunnel.timeout" = "Λήξη χρόνου";
"errors.tunnel.tls" = "Το TLS απέτυχε";
"features.appletv" = "%@";
"features.dns" = "Ρυθμίσεις DNS";
@ -90,12 +89,14 @@
"global.nouns.empty" = "Κενό";
"global.nouns.enabled" = "Ενεργοποιημένο";
"global.nouns.endpoint" = "Τελικό σημείο";
"global.nouns.features" = "Λειτουργίες";
"global.nouns.filters" = "Φίλτρα";
"global.nouns.folder" = "Φάκελος";
"global.nouns.gateway" = "Πύλη";
"global.nouns.general" = "Γενικά";
"global.nouns.hostname" = "Όνομα κεντρικού υπολογιστή";
"global.nouns.interface" = "Διασύνδεση";
"global.nouns.interval" = "Διάστημα";
"global.nouns.keep_alive" = "Διατήρηση ενεργού";
"global.nouns.key" = "Κλειδί";
"global.nouns.last_update" = "Τελευταία ενημέρωση";
@ -114,10 +115,12 @@
"global.nouns.password" = "Κωδικός πρόσβασης";
"global.nouns.port" = "Θύρα";
"global.nouns.private_key" = "Ιδιωτικό κλειδί";
"global.nouns.products" = "Προϊόντα"; // Greek
"global.nouns.profile" = "Προφίλ";
"global.nouns.protocol" = "Πρωτόκολλο";
"global.nouns.provider" = "Πάροχος";
"global.nouns.public_key" = "Δημόσιο κλειδί";
"global.nouns.purchases" = "Αγορές";
"global.nouns.region" = "Περιοχή";
"global.nouns.route" = "Διαδρομή";
"global.nouns.routes" = "Διαδρομές";
@ -127,6 +130,7 @@
"global.nouns.settings" = "Ρυθμίσεις";
"global.nouns.status" = "Κατάσταση";
"global.nouns.subnet" = "Υποδίκτυο";
"global.nouns.timeout" = "Λήξη χρόνου";
"global.nouns.unknown" = "Άγνωστο";
"global.nouns.username" = "Όνομα χρήστη";
"global.nouns.version" = "Έκδοση";
@ -271,8 +275,6 @@
"views.purchased.rows.build_number" = "Αριθμός κατασκευής";
"views.purchased.rows.download_date" = "Ημερομηνία λήψης";
"views.purchased.sections.download.header" = "Πρώτη λήψη";
"global.nouns.features" = "Λειτουργίες";
"global.nouns.purchases" = "Αγορές";
"views.purchased.title" = "Αγορασμένα";
"views.ui.connection_status.on_demand_suffix" = " (κατ' απαίτηση)";
"views.ui.purchase_required.purchase.help" = "Απαιτείται αγορά";
@ -281,4 +283,3 @@
"views.vpn.category.any" = "Όλες οι κατηγορίες";
"views.vpn.no_servers" = "Δεν υπάρχουν διακομιστές";
"views.vpn.preset" = "Προκαθορισμένο";
"global.nouns.products" = "Προϊόντα"; // Greek

View File

@ -275,6 +275,7 @@
"global.nouns.general" = "General";
"global.nouns.hostname" = "Hostname";
"global.nouns.interface" = "Interface";
"global.nouns.interval" = "Interval";
"global.nouns.keep_alive" = "Keep-alive";
"global.nouns.key" = "Key";
"global.nouns.last_update" = "Last update";
@ -308,6 +309,7 @@
"global.nouns.settings" = "Settings";
"global.nouns.status" = "Status";
"global.nouns.subnet" = "Subnet";
"global.nouns.timeout" = "Timeout";
"global.nouns.unknown" = "Unknown";
"global.nouns.username" = "Username";
"global.nouns.version" = "Version";
@ -358,7 +360,6 @@
"errors.tunnel.ineligible" = "Purchase required";
"errors.tunnel.routing" = "Missing routing";
"errors.tunnel.shutdown" = "Server shutdown";
"errors.tunnel.timeout" = "Timeout";
"errors.tunnel.tls" = "TLS failed";
// MARK: Global (Theme)

View File

@ -45,7 +45,6 @@
"errors.tunnel.ineligible" = "Compra requerida";
"errors.tunnel.routing" = "Enrutamiento faltante";
"errors.tunnel.shutdown" = "Apagado del servidor";
"errors.tunnel.timeout" = "Tiempo de espera";
"errors.tunnel.tls" = "TLS fallido";
"features.appletv" = "%@";
"features.dns" = "Configuración de DNS";
@ -90,12 +89,14 @@
"global.nouns.empty" = "Vacío";
"global.nouns.enabled" = "Habilitado";
"global.nouns.endpoint" = "Punto final";
"global.nouns.features" = "Funciones";
"global.nouns.filters" = "Filtros";
"global.nouns.folder" = "Carpeta";
"global.nouns.gateway" = "Puerta de enlace";
"global.nouns.general" = "General";
"global.nouns.hostname" = "Nombre de host";
"global.nouns.interface" = "Interfaz";
"global.nouns.interval" = "Intervalo";
"global.nouns.keep_alive" = "Mantener vivo";
"global.nouns.key" = "Clave";
"global.nouns.last_update" = "Última actualización";
@ -114,10 +115,12 @@
"global.nouns.password" = "Contraseña";
"global.nouns.port" = "Puerto";
"global.nouns.private_key" = "Clave privada";
"global.nouns.products" = "Productos"; // Spanish
"global.nouns.profile" = "Perfil";
"global.nouns.protocol" = "Protocolo";
"global.nouns.provider" = "Proveedor";
"global.nouns.public_key" = "Clave pública";
"global.nouns.purchases" = "Compras";
"global.nouns.region" = "Región";
"global.nouns.route" = "Ruta";
"global.nouns.routes" = "Rutas";
@ -127,6 +130,7 @@
"global.nouns.settings" = "Configuración";
"global.nouns.status" = "Estado";
"global.nouns.subnet" = "Subred";
"global.nouns.timeout" = "Tiempo de espera";
"global.nouns.unknown" = "Desconocido";
"global.nouns.username" = "Nombre de usuario";
"global.nouns.version" = "Versión";
@ -271,8 +275,6 @@
"views.purchased.rows.build_number" = "Número de versión";
"views.purchased.rows.download_date" = "Fecha de descarga";
"views.purchased.sections.download.header" = "Primer descarga";
"global.nouns.features" = "Funciones";
"global.nouns.purchases" = "Compras";
"views.purchased.title" = "Comprado";
"views.ui.connection_status.on_demand_suffix" = " (a demanda)";
"views.ui.purchase_required.purchase.help" = "Compra requerida";
@ -281,4 +283,3 @@
"views.vpn.category.any" = "Todas las categorías";
"views.vpn.no_servers" = "No hay servidores";
"views.vpn.preset" = "Preestablecido";
"global.nouns.products" = "Productos"; // Spanish

View File

@ -45,7 +45,6 @@
"errors.tunnel.ineligible" = "Achat requis";
"errors.tunnel.routing" = "Routage manquant";
"errors.tunnel.shutdown" = "Arrêt du serveur";
"errors.tunnel.timeout" = "Délai d'attente";
"errors.tunnel.tls" = "Échec du TLS";
"features.appletv" = "%@";
"features.dns" = "Paramètres DNS";
@ -90,12 +89,14 @@
"global.nouns.empty" = "Vide";
"global.nouns.enabled" = "Activé";
"global.nouns.endpoint" = "Point final";
"global.nouns.features" = "Fonctionnalités";
"global.nouns.filters" = "Filtres";
"global.nouns.folder" = "Dossier";
"global.nouns.gateway" = "Passerelle";
"global.nouns.general" = "Général";
"global.nouns.hostname" = "Nom d'hôte";
"global.nouns.interface" = "Interface";
"global.nouns.interval" = "Intervalle";
"global.nouns.keep_alive" = "Maintenir actif";
"global.nouns.key" = "Clé";
"global.nouns.last_update" = "Dernière mise à jour";
@ -114,10 +115,12 @@
"global.nouns.password" = "Mot de passe";
"global.nouns.port" = "Port";
"global.nouns.private_key" = "Clé privée";
"global.nouns.products" = "Produits"; // French
"global.nouns.profile" = "Profil";
"global.nouns.protocol" = "Protocole";
"global.nouns.provider" = "Fournisseur";
"global.nouns.public_key" = "Clé publique";
"global.nouns.purchases" = "Achats";
"global.nouns.region" = "Région";
"global.nouns.route" = "Route";
"global.nouns.routes" = "Routes";
@ -127,6 +130,7 @@
"global.nouns.settings" = "Paramètres";
"global.nouns.status" = "Statut";
"global.nouns.subnet" = "Sous-réseau";
"global.nouns.timeout" = "Délai d'attente";
"global.nouns.unknown" = "Inconnu";
"global.nouns.username" = "Nom d'utilisateur";
"global.nouns.version" = "Version";
@ -271,8 +275,6 @@
"views.purchased.rows.build_number" = "Numéro de version";
"views.purchased.rows.download_date" = "Date de téléchargement";
"views.purchased.sections.download.header" = "Premier téléchargement";
"global.nouns.features" = "Fonctionnalités";
"global.nouns.purchases" = "Achats";
"views.purchased.title" = "Acheté";
"views.ui.connection_status.on_demand_suffix" = " (à la demande)";
"views.ui.purchase_required.purchase.help" = "Achat requis";
@ -281,4 +283,3 @@
"views.vpn.category.any" = "Toutes les catégories";
"views.vpn.no_servers" = "Aucun serveur";
"views.vpn.preset" = "Préréglé";
"global.nouns.products" = "Produits"; // French

View File

@ -45,7 +45,6 @@
"errors.tunnel.ineligible" = "Acquisto richiesto";
"errors.tunnel.routing" = "Routing mancante";
"errors.tunnel.shutdown" = "Spegnimento del server";
"errors.tunnel.timeout" = "Timeout";
"errors.tunnel.tls" = "TLS fallito";
"features.appletv" = "%@";
"features.dns" = "Impostazioni DNS";
@ -90,12 +89,14 @@
"global.nouns.empty" = "Vuoto";
"global.nouns.enabled" = "Abilitato";
"global.nouns.endpoint" = "Endpoint";
"global.nouns.features" = "Funzionalità";
"global.nouns.filters" = "Filtri";
"global.nouns.folder" = "Cartella";
"global.nouns.gateway" = "Gateway";
"global.nouns.general" = "Generale";
"global.nouns.hostname" = "Nome host";
"global.nouns.interface" = "Interfaccia";
"global.nouns.interval" = "Intervallo";
"global.nouns.keep_alive" = "Keep-alive";
"global.nouns.key" = "Chiave";
"global.nouns.last_update" = "Ultimo aggiornamento";
@ -114,10 +115,12 @@
"global.nouns.password" = "Password";
"global.nouns.port" = "Porta";
"global.nouns.private_key" = "Chiave privata";
"global.nouns.products" = "Prodotti"; // Italian
"global.nouns.profile" = "Profilo";
"global.nouns.protocol" = "Protocollo";
"global.nouns.provider" = "Provider";
"global.nouns.public_key" = "Chiave pubblica";
"global.nouns.purchases" = "Acquisti";
"global.nouns.region" = "Regione";
"global.nouns.route" = "Rotta";
"global.nouns.routes" = "Rotte";
@ -127,6 +130,7 @@
"global.nouns.settings" = "Impostazioni";
"global.nouns.status" = "Stato";
"global.nouns.subnet" = "Subnet";
"global.nouns.timeout" = "Timeout";
"global.nouns.unknown" = "Sconosciuto";
"global.nouns.username" = "Nome utente";
"global.nouns.version" = "Versione";
@ -271,8 +275,6 @@
"views.purchased.rows.build_number" = "Numero di build";
"views.purchased.rows.download_date" = "Data di download";
"views.purchased.sections.download.header" = "Primo download";
"global.nouns.features" = "Funzionalità";
"global.nouns.purchases" = "Acquisti";
"views.purchased.title" = "Acquistato";
"views.ui.connection_status.on_demand_suffix" = " (on-demand)";
"views.ui.purchase_required.purchase.help" = "Acquisto richiesto";
@ -281,4 +283,3 @@
"views.vpn.category.any" = "Tutte le categorie";
"views.vpn.no_servers" = "Nessun server";
"views.vpn.preset" = "Preimpostato";
"global.nouns.products" = "Prodotti"; // Italian

View File

@ -45,7 +45,6 @@
"errors.tunnel.ineligible" = "Aankoop vereist";
"errors.tunnel.routing" = "Routering ontbreekt";
"errors.tunnel.shutdown" = "Server uitgeschakeld";
"errors.tunnel.timeout" = "Time-out";
"errors.tunnel.tls" = "TLS mislukt";
"features.appletv" = "%@";
"features.dns" = "DNS-instellingen";
@ -90,12 +89,14 @@
"global.nouns.empty" = "Leeg";
"global.nouns.enabled" = "Ingeschakeld";
"global.nouns.endpoint" = "Eindpunt";
"global.nouns.features" = "Functies";
"global.nouns.filters" = "Filters";
"global.nouns.folder" = "Map";
"global.nouns.gateway" = "Gateway";
"global.nouns.general" = "Algemeen";
"global.nouns.hostname" = "Hostnaam";
"global.nouns.interface" = "Interface";
"global.nouns.interval" = "Interval";
"global.nouns.keep_alive" = "Actief houden";
"global.nouns.key" = "Sleutel";
"global.nouns.last_update" = "Laatste update";
@ -114,10 +115,12 @@
"global.nouns.password" = "Wachtwoord";
"global.nouns.port" = "Poort";
"global.nouns.private_key" = "Privésleutel";
"global.nouns.products" = "Producten"; // Dutch
"global.nouns.profile" = "Profiel";
"global.nouns.protocol" = "Protocol";
"global.nouns.provider" = "Provider";
"global.nouns.public_key" = "Publieke sleutel";
"global.nouns.purchases" = "Aankopen";
"global.nouns.region" = "Regio";
"global.nouns.route" = "Route";
"global.nouns.routes" = "Routes";
@ -127,6 +130,7 @@
"global.nouns.settings" = "Instellingen";
"global.nouns.status" = "Status";
"global.nouns.subnet" = "Subnet";
"global.nouns.timeout" = "Time-out";
"global.nouns.unknown" = "Onbekend";
"global.nouns.username" = "Gebruikersnaam";
"global.nouns.version" = "Versie";
@ -271,8 +275,6 @@
"views.purchased.rows.build_number" = "Buildnummer";
"views.purchased.rows.download_date" = "Downloaddatum";
"views.purchased.sections.download.header" = "Eerste download";
"global.nouns.features" = "Functies";
"global.nouns.purchases" = "Aankopen";
"views.purchased.title" = "Aangekocht";
"views.ui.connection_status.on_demand_suffix" = " (op aanvraag)";
"views.ui.purchase_required.purchase.help" = "Aankoop vereist";
@ -281,4 +283,3 @@
"views.vpn.category.any" = "Alle categorieën";
"views.vpn.no_servers" = "Geen servers";
"views.vpn.preset" = "Voorinstelling";
"global.nouns.products" = "Producten"; // Dutch

View File

@ -45,7 +45,6 @@
"errors.tunnel.ineligible" = "Wymagana zakup";
"errors.tunnel.routing" = "Brak trasowania";
"errors.tunnel.shutdown" = "Serwer zamknięty";
"errors.tunnel.timeout" = "Przekroczono limit czasu";
"errors.tunnel.tls" = "Błąd TLS";
"features.appletv" = "%@";
"features.dns" = "Ustawienia DNS";
@ -90,12 +89,14 @@
"global.nouns.empty" = "Pusty";
"global.nouns.enabled" = "Włączony";
"global.nouns.endpoint" = "Punkt końcowy";
"global.nouns.features" = "Funkcje";
"global.nouns.filters" = "Filtry";
"global.nouns.folder" = "Folder";
"global.nouns.gateway" = "Brama";
"global.nouns.general" = "Ogólny";
"global.nouns.hostname" = "Nazwa hosta";
"global.nouns.interface" = "Interfejs";
"global.nouns.interval" = "Interwał";
"global.nouns.keep_alive" = "Utrzymaj połączenie";
"global.nouns.key" = "Klucz";
"global.nouns.last_update" = "Ostatnia aktualizacja";
@ -114,10 +115,12 @@
"global.nouns.password" = "Hasło";
"global.nouns.port" = "Port";
"global.nouns.private_key" = "Klucz prywatny";
"global.nouns.products" = "Produkty"; // Polish
"global.nouns.profile" = "Profil";
"global.nouns.protocol" = "Protokół";
"global.nouns.provider" = "Dostawca";
"global.nouns.public_key" = "Klucz publiczny";
"global.nouns.purchases" = "Zakupy";
"global.nouns.region" = "Region";
"global.nouns.route" = "Trasa";
"global.nouns.routes" = "Trasy";
@ -127,6 +130,7 @@
"global.nouns.settings" = "Ustawienia";
"global.nouns.status" = "Status";
"global.nouns.subnet" = "Podsieć";
"global.nouns.timeout" = "Przekroczono limit czasu";
"global.nouns.unknown" = "Nieznane";
"global.nouns.username" = "Nazwa użytkownika";
"global.nouns.version" = "Wersja";
@ -271,8 +275,6 @@
"views.purchased.rows.build_number" = "Numer kompilacji";
"views.purchased.rows.download_date" = "Data pobrania";
"views.purchased.sections.download.header" = "Pierwsze pobranie";
"global.nouns.features" = "Funkcje";
"global.nouns.purchases" = "Zakupy";
"views.purchased.title" = "Zakupione";
"views.ui.connection_status.on_demand_suffix" = " (na żądanie)";
"views.ui.purchase_required.purchase.help" = "Wymagana zakup";
@ -281,4 +283,3 @@
"views.vpn.category.any" = "Wszystkie kategorie";
"views.vpn.no_servers" = "Brak serwerów";
"views.vpn.preset" = "Wstępna konfiguracja";
"global.nouns.products" = "Produkty"; // Polish

View File

@ -45,7 +45,6 @@
"errors.tunnel.ineligible" = "Compra necessária";
"errors.tunnel.routing" = "Roteamento ausente";
"errors.tunnel.shutdown" = "Servidor desligado";
"errors.tunnel.timeout" = "Tempo esgotado";
"errors.tunnel.tls" = "Falha no TLS";
"features.appletv" = "%@";
"features.dns" = "Configurações de DNS";
@ -90,12 +89,14 @@
"global.nouns.empty" = "Vazio";
"global.nouns.enabled" = "Ativado";
"global.nouns.endpoint" = "Ponto final";
"global.nouns.features" = "Recursos";
"global.nouns.filters" = "Filtros";
"global.nouns.folder" = "Pasta";
"global.nouns.gateway" = "Gateway";
"global.nouns.general" = "Geral";
"global.nouns.hostname" = "Hostname";
"global.nouns.interface" = "Interface";
"global.nouns.interval" = "Intervalo";
"global.nouns.keep_alive" = "Manter ativo";
"global.nouns.key" = "Chave";
"global.nouns.last_update" = "Última atualização";
@ -114,10 +115,12 @@
"global.nouns.password" = "Senha";
"global.nouns.port" = "Porta";
"global.nouns.private_key" = "Chave privada";
"global.nouns.products" = "Produtos"; // Portuguese
"global.nouns.profile" = "Perfil";
"global.nouns.protocol" = "Protocolo";
"global.nouns.provider" = "Provedor";
"global.nouns.public_key" = "Chave pública";
"global.nouns.purchases" = "Compras";
"global.nouns.region" = "Região";
"global.nouns.route" = "Rota";
"global.nouns.routes" = "Rotas";
@ -127,6 +130,7 @@
"global.nouns.settings" = "Configurações";
"global.nouns.status" = "Status";
"global.nouns.subnet" = "Sub-rede";
"global.nouns.timeout" = "Tempo esgotado";
"global.nouns.unknown" = "Desconhecido";
"global.nouns.username" = "Nome de usuário";
"global.nouns.version" = "Versão";
@ -271,8 +275,6 @@
"views.purchased.rows.build_number" = "Número da compilação";
"views.purchased.rows.download_date" = "Data do download";
"views.purchased.sections.download.header" = "Primeiro download";
"global.nouns.features" = "Recursos";
"global.nouns.purchases" = "Compras";
"views.purchased.title" = "Comprado";
"views.ui.connection_status.on_demand_suffix" = " (sob demanda)";
"views.ui.purchase_required.purchase.help" = "Compra necessária";
@ -281,4 +283,3 @@
"views.vpn.category.any" = "Todas as categorias";
"views.vpn.no_servers" = "Nenhum servidor";
"views.vpn.preset" = "Predefinição";
"global.nouns.products" = "Produtos"; // Portuguese

View File

@ -45,7 +45,6 @@
"errors.tunnel.ineligible" = "Требуется покупка";
"errors.tunnel.routing" = "Маршрутизация отсутствует";
"errors.tunnel.shutdown" = "Сервер отключен";
"errors.tunnel.timeout" = "Превышено время ожидания";
"errors.tunnel.tls" = "Ошибка TLS";
"features.appletv" = "%@";
"features.dns" = "Настройки DNS";
@ -90,12 +89,14 @@
"global.nouns.empty" = "Пусто";
"global.nouns.enabled" = "Включено";
"global.nouns.endpoint" = "Конечная точка";
"global.nouns.features" = "Функции";
"global.nouns.filters" = "Фильтры";
"global.nouns.folder" = "Папка";
"global.nouns.gateway" = "Шлюз";
"global.nouns.general" = "Общий";
"global.nouns.hostname" = "Имя хоста";
"global.nouns.interface" = "Интерфейс";
"global.nouns.interval" = "Интервал";
"global.nouns.keep_alive" = "Поддерживать";
"global.nouns.key" = "Ключ";
"global.nouns.last_update" = "Последнее обновление";
@ -114,10 +115,12 @@
"global.nouns.password" = "Пароль";
"global.nouns.port" = "Порт";
"global.nouns.private_key" = "Приватный ключ";
"global.nouns.products" = "Продукты"; // Russian
"global.nouns.profile" = "Профиль";
"global.nouns.protocol" = "Протокол";
"global.nouns.provider" = "Поставщик";
"global.nouns.public_key" = "Публичный ключ";
"global.nouns.purchases" = "Покупки";
"global.nouns.region" = "Регион";
"global.nouns.route" = "Маршрут";
"global.nouns.routes" = "Маршруты";
@ -127,6 +130,7 @@
"global.nouns.settings" = "Настройки";
"global.nouns.status" = "Состояние";
"global.nouns.subnet" = "Подсеть";
"global.nouns.timeout" = "Превышено время ожидания";
"global.nouns.unknown" = "Неизвестно";
"global.nouns.username" = "Имя пользователя";
"global.nouns.version" = "Версия";
@ -271,8 +275,6 @@
"views.purchased.rows.build_number" = "Номер сборки";
"views.purchased.rows.download_date" = "Дата скачивания";
"views.purchased.sections.download.header" = "Первое скачивание";
"global.nouns.features" = "Функции";
"global.nouns.purchases" = "Покупки";
"views.purchased.title" = "Куплено";
"views.ui.connection_status.on_demand_suffix" = " (по требованию)";
"views.ui.purchase_required.purchase.help" = "Требуется покупка";
@ -281,4 +283,3 @@
"views.vpn.category.any" = "Все категории";
"views.vpn.no_servers" = "Нет серверов";
"views.vpn.preset" = "Предустановка";
"global.nouns.products" = "Продукты"; // Russian

View File

@ -45,7 +45,6 @@
"errors.tunnel.ineligible" = "Köp krävs";
"errors.tunnel.routing" = "Routning saknas";
"errors.tunnel.shutdown" = "Server avstängd";
"errors.tunnel.timeout" = "Timeout";
"errors.tunnel.tls" = "TLS misslyckades";
"features.appletv" = "%@";
"features.dns" = "DNS-inställningar";
@ -90,12 +89,14 @@
"global.nouns.empty" = "Tom";
"global.nouns.enabled" = "Aktiverad";
"global.nouns.endpoint" = "Slutpunkt";
"global.nouns.features" = "Funktioner";
"global.nouns.filters" = "Filter";
"global.nouns.folder" = "Mapp";
"global.nouns.gateway" = "Gateway";
"global.nouns.general" = "Allmänt";
"global.nouns.hostname" = "Värdnamn";
"global.nouns.interface" = "Gränssnitt";
"global.nouns.interval" = "Intervall";
"global.nouns.keep_alive" = "Håll vid liv";
"global.nouns.key" = "Nyckel";
"global.nouns.last_update" = "Senaste uppdatering";
@ -114,10 +115,12 @@
"global.nouns.password" = "Lösenord";
"global.nouns.port" = "Port";
"global.nouns.private_key" = "Privat nyckel";
"global.nouns.products" = "Produkter"; // Swedish
"global.nouns.profile" = "Profil";
"global.nouns.protocol" = "Protokoll";
"global.nouns.provider" = "Leverantör";
"global.nouns.public_key" = "Offentlig nyckel";
"global.nouns.purchases" = "Köp";
"global.nouns.region" = "Region";
"global.nouns.route" = "Rutt";
"global.nouns.routes" = "Rutter";
@ -127,6 +130,7 @@
"global.nouns.settings" = "Inställningar";
"global.nouns.status" = "Status";
"global.nouns.subnet" = "Undernät";
"global.nouns.timeout" = "Timeout";
"global.nouns.unknown" = "Okänd";
"global.nouns.username" = "Användarnamn";
"global.nouns.version" = "Version";
@ -271,8 +275,6 @@
"views.purchased.rows.build_number" = "Byggnummer";
"views.purchased.rows.download_date" = "Nedladdningsdatum";
"views.purchased.sections.download.header" = "Första nedladdning";
"global.nouns.features" = "Funktioner";
"global.nouns.purchases" = "Köp";
"views.purchased.title" = "Köpt";
"views.ui.connection_status.on_demand_suffix" = " (på begäran)";
"views.ui.purchase_required.purchase.help" = "Köp krävs";
@ -281,4 +283,3 @@
"views.vpn.category.any" = "Alla kategorier";
"views.vpn.no_servers" = "Inga servrar";
"views.vpn.preset" = "Förinställning";
"global.nouns.products" = "Produkter"; // Swedish

View File

@ -45,7 +45,6 @@
"errors.tunnel.ineligible" = "Потрібна покупка";
"errors.tunnel.routing" = "Маршрутизація відсутня";
"errors.tunnel.shutdown" = "Сервер вимкнено";
"errors.tunnel.timeout" = "Перевищено час очікування";
"errors.tunnel.tls" = "Помилка TLS";
"features.appletv" = "%@";
"features.dns" = "Налаштування DNS";
@ -90,12 +89,14 @@
"global.nouns.empty" = "Порожньо";
"global.nouns.enabled" = "Увімкнено";
"global.nouns.endpoint" = "Кінцева точка";
"global.nouns.features" = "Функції";
"global.nouns.filters" = "Фільтри";
"global.nouns.folder" = "Папка";
"global.nouns.gateway" = "Шлюз";
"global.nouns.general" = "Загальне";
"global.nouns.hostname" = "Ім'я хоста";
"global.nouns.interface" = "Інтерфейс";
"global.nouns.interval" = "Інтервал";
"global.nouns.keep_alive" = "Підтримувати активність";
"global.nouns.key" = "Ключ";
"global.nouns.last_update" = "Останнє оновлення";
@ -114,10 +115,12 @@
"global.nouns.password" = "Пароль";
"global.nouns.port" = "Порт";
"global.nouns.private_key" = "Приватний ключ";
"global.nouns.products" = "Продукти"; // Ukrainian
"global.nouns.profile" = "Профіль";
"global.nouns.protocol" = "Протокол";
"global.nouns.provider" = "Постачальник";
"global.nouns.public_key" = "Публічний ключ";
"global.nouns.purchases" = "Придбання";
"global.nouns.region" = "Регіон";
"global.nouns.route" = "Маршрут";
"global.nouns.routes" = "Маршрути";
@ -127,6 +130,7 @@
"global.nouns.settings" = "Налаштування";
"global.nouns.status" = "Стан";
"global.nouns.subnet" = "Підмережа";
"global.nouns.timeout" = "Перевищено час очікування";
"global.nouns.unknown" = "Невідомо";
"global.nouns.username" = "Ім'я користувача";
"global.nouns.version" = "Версія";
@ -271,8 +275,6 @@
"views.purchased.rows.build_number" = "Номер збірки";
"views.purchased.rows.download_date" = "Дата завантаження";
"views.purchased.sections.download.header" = "Перший завантаження";
"global.nouns.features" = "Функції";
"global.nouns.purchases" = "Придбання";
"views.purchased.title" = "Придбано";
"views.ui.connection_status.on_demand_suffix" = " (за запитом)";
"views.ui.purchase_required.purchase.help" = "Потрібна покупка";
@ -281,4 +283,3 @@
"views.vpn.category.any" = "Усі категорії";
"views.vpn.no_servers" = "Немає серверів";
"views.vpn.preset" = "Попередньо встановлено";
"global.nouns.products" = "Продукти"; // Ukrainian

View File

@ -45,7 +45,6 @@
"errors.tunnel.ineligible" = "需要购买";
"errors.tunnel.routing" = "缺少路由";
"errors.tunnel.shutdown" = "服务器关闭";
"errors.tunnel.timeout" = "超时";
"errors.tunnel.tls" = "TLS 失败";
"features.appletv" = "%@";
"features.dns" = "DNS 设置";
@ -90,12 +89,14 @@
"global.nouns.empty" = "空";
"global.nouns.enabled" = "已启用";
"global.nouns.endpoint" = "端点";
"global.nouns.features" = "功能";
"global.nouns.filters" = "筛选器";
"global.nouns.folder" = "文件夹";
"global.nouns.gateway" = "网关";
"global.nouns.general" = "常规";
"global.nouns.hostname" = "主机名";
"global.nouns.interface" = "接口";
"global.nouns.interval" = "间隔";
"global.nouns.keep_alive" = "保持活动";
"global.nouns.key" = "密钥";
"global.nouns.last_update" = "最近更新";
@ -114,10 +115,12 @@
"global.nouns.password" = "密码";
"global.nouns.port" = "端口";
"global.nouns.private_key" = "私钥";
"global.nouns.products" = "产品"; // Chinese (Simplified)
"global.nouns.profile" = "配置文件";
"global.nouns.protocol" = "协议";
"global.nouns.provider" = "提供商";
"global.nouns.public_key" = "公钥";
"global.nouns.purchases" = "购买内容";
"global.nouns.region" = "区域";
"global.nouns.route" = "路由";
"global.nouns.routes" = "路由";
@ -127,6 +130,7 @@
"global.nouns.settings" = "设置";
"global.nouns.status" = "状态";
"global.nouns.subnet" = "子网";
"global.nouns.timeout" = "超时";
"global.nouns.unknown" = "未知";
"global.nouns.username" = "用户名";
"global.nouns.version" = "版本";
@ -271,8 +275,6 @@
"views.purchased.rows.build_number" = "构建编号";
"views.purchased.rows.download_date" = "下载日期";
"views.purchased.sections.download.header" = "首次下载";
"global.nouns.features" = "功能";
"global.nouns.purchases" = "购买内容";
"views.purchased.title" = "已购买";
"views.ui.connection_status.on_demand_suffix" = "(按需)";
"views.ui.purchase_required.purchase.help" = "需要购买";
@ -281,4 +283,3 @@
"views.vpn.category.any" = "所有类别";
"views.vpn.no_servers" = "无服务器";
"views.vpn.preset" = "预设";
"global.nouns.products" = "产品"; // Chinese (Simplified)