summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBug Magnet <marco.nikic@mullvad.net>2025-10-27 10:15:36 +0100
committerBug Magnet <marco.nikic@mullvad.net>2025-10-27 10:15:36 +0100
commit17cfab7afdd61bcf79fc1b411d63ff52a9a3ec4f (patch)
treedd2a90c8fd8840e458bf8cf2dfa9e300346aed1c
parent7b9537edb6d83f6d19c6b0d407cfd81780b3fef7 (diff)
parentf4955a2983d0d52dac4001573c7ac09498c0b780 (diff)
downloadmullvadvpn-17cfab7afdd61bcf79fc1b411d63ff52a9a3ec4f.tar.xz
mullvadvpn-17cfab7afdd61bcf79fc1b411d63ff52a9a3ec4f.zip
Merge branch 'update-remaining-string-differences-with-others-ios'
-rw-r--r--ios/Assets/Localizable.xcstrings4503
-rw-r--r--ios/MullvadVPN.xcodeproj/project.pbxproj16
-rw-r--r--ios/MullvadVPN/Coordinators/CustomLists/AddCustomListCoordinator.swift2
-rw-r--r--ios/MullvadVPN/Coordinators/CustomLists/AddLocationsCoordinator.swift2
-rw-r--r--ios/MullvadVPN/Coordinators/CustomLists/CustomListItemIdentifier.swift6
-rw-r--r--ios/MullvadVPN/Coordinators/CustomLists/EditLocationsCoordinator.swift2
-rw-r--r--ios/MullvadVPN/Coordinators/LocationCoordinator.swift4
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodCoordinator.swift2
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodItemIdentifier.swift2
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift5
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodView.swift2
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodValidationError.swift8
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodViewModel.swift14
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/DAITA/DAITASettingsCoordinator.swift2
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/DAITA/SettingsDAITAView.swift2
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideInteractor.swift2
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatus.swift47
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatusView.swift2
-rw-r--r--ios/MullvadVPN/Extensions/StorePaymentManagerError+Display.swift2
-rw-r--r--ios/MullvadVPN/Notifications/Notification Providers/NewDeviceNotificationProvider.swift2
-rw-r--r--ios/MullvadVPN/Notifications/Notification Providers/TunnelStatusNotificationProvider.swift3
-rw-r--r--ios/MullvadVPN/StorePaymentManager/StoreSubscription.swift6
-rw-r--r--ios/MullvadVPN/View controllers/CreationAccount/Completed/SetupAccountCompletedContentView.swift2
-rw-r--r--ios/MullvadVPN/View controllers/Login/AccountInputGroupView.swift2
-rw-r--r--ios/MullvadVPN/View controllers/Login/LoginViewController.swift6
-rw-r--r--ios/MullvadVPN/View controllers/RedeemVoucher/RedeemVoucherContentView.swift2
-rw-r--r--ios/MullvadVPN/View controllers/RelayFilter/FilterDescriptor.swift2
-rw-r--r--ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSourceItem.swift4
-rw-r--r--ios/MullvadVPN/View controllers/RelayFilter/RelayFilterViewModel.swift2
-rw-r--r--ios/MullvadVPN/View controllers/Settings/Obfuscation/UDPOverTCPObfuscationSettingsView.swift5
-rw-r--r--ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift2
-rw-r--r--ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift26
-rw-r--r--ios/MullvadVPN/View controllers/Tunnel/ConnectionView/HeaderView.swift1
-rw-r--r--ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsInfoButtonItem.swift5
-rw-r--r--ios/MullvadVPNUITests/Pages/AddCustomListLocationsPage.swift2
-rw-r--r--ios/MullvadVPNUITests/Pages/EditCustomListLocationsPage.swift2
-rw-r--r--ios/translation/locales/de.xliff2133
-rw-r--r--ios/translation/locales/en.xliff374
-rw-r--r--ios/translation/locales/fr.xliff2133
-rw-r--r--ios/translation/locales/sv.xliff2133
-rw-r--r--ios/translation/scripts/Readme.md7
-rwxr-xr-xios/translation/scripts/localizations.sh106
42 files changed, 543 insertions, 11042 deletions
diff --git a/ios/Assets/Localizable.xcstrings b/ios/Assets/Localizable.xcstrings
index 63b6c56f03..c6f014e845 100644
--- a/ios/Assets/Localizable.xcstrings
+++ b/ios/Assets/Localizable.xcstrings
@@ -5,26 +5,7 @@
},
"**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.**" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "**Achtung! Dies erhöht den Netzwerkverkehr und wirkt sich auch negativ auf die Geschwindigkeit, die Latenz und den Akkuverbrauch aus. Bei begrenzten Tarifen ist Vorsicht geboten.**"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "**Attention : cette option augmente le trafic sur le réseau et peut avoir un impact négatif sur la vitesse, la latence et l'utilisation de la batterie. À utiliser avec précaution pour les forfaits limités.**"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "**Obs! Detta ökar nätverkstrafiken men påverkar också hastighet, fördröjning och batterianvändning negativt. Var försiktig om du har ett abonnemang med begränsad datamängd.**"
- }
- }
- }
+
},
"**Tap here** to see what’s new" : {
@@ -34,75 +15,25 @@
},
"%@ (%@) hides patterns in your encrypted VPN traffic." : {
"localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%1$@ (%2$@) verbirgt Muster in Ihrem verschlüsselten VPN-Traffic."
- }
- },
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "%1$@ (%2$@) hides patterns in your encrypted VPN traffic."
}
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%1$@ (%2$@) masque les schémas de votre trafic VPN chiffré."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%1$@ (%2$@) döljer mönster i din krypterade VPN-trafik."
- }
}
}
},
"%@ cannot be empty." : {
- "localizations" : {
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%@ ne peut pas être vide."
- }
- }
- }
+
},
"%@ does this by carefully adding network noise and making all network packets the same size." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%@ tut dies, indem es Netzwerkrauschen gezielt hinzufügt und alle Netzwerkpakete gleich groß macht."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%@ y parvient en ajoutant soigneusement du bruit au réseau et en faisant en sorte que tous les paquets du réseau aient la même taille."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%@ gör det genom att noggrant lägga till nätverksbrus och se till så att alla nätverkspaket har samma storlek."
- }
- }
- }
+
},
"%@ left on this account" : {
},
"%@ via %@" : {
"localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%1$@ über %2$@"
- }
- },
"en" : {
"stringUnit" : {
"state" : "new",
@@ -114,6 +45,9 @@
"%@ was added to your account." : {
},
+ "%@-enabled" : {
+
+ },
"%@, %@" : {
"localizations" : {
"en" : {
@@ -124,133 +58,29 @@
}
}
},
- "%@: Multihop" : {
-
- },
"%d more..." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%d weitere …"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%d de plus…"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%d till ..."
- }
- }
- }
- },
- "%lld more..." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%lld weitere …"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%lld de plus…"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%lld till ..."
- }
- }
- }
- },
- "About API access…" : {
},
- "About Direct method..." : {
+ "%lld more..." : {
},
- "About Encrypted DNS proxy method..." : {
+ "About %@ method..." : {
},
- "About Mullvad bridges method..." : {
+ "About API access…" : {
},
"About Server IP override..." : {
},
"Account" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Konto"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Compte"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Konto"
- }
- }
- }
+
},
"Account created" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Konto erstellt"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Compte créé"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontot har skapats"
- }
- }
- }
+
},
"Account credit expires soon" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontoguthaben läuft bald ab"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Les crédits du compte expirent bientôt"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontokrediten slutar snart gälla"
- }
- }
- }
+
},
"Account credit has expired" : {
@@ -259,330 +89,58 @@
},
"Account number" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontonummer"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Numéro de compte"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontonummer"
- }
- }
- }
+
},
"Active features" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktive Funktionen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fonctionnalités activées"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiva funktioner"
- }
- }
- }
+
},
"Add" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hinzufügen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ajouter"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lägg till"
- }
- }
- }
+
},
- "Add 30 days" : {
+ "Add 30 days time (%@)" : {
},
- "Add 90 days" : {
+ "Add 90 days time (%@)" : {
},
"Add a server" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Server hinzufügen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ajouter un serveur"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lägg till en server"
- }
- }
- }
- },
- "Add locations" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Standorte hinzufügen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ajouter des localisations"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lägg till platser"
- }
- }
- }
- },
- "Add method" : {
},
- "Add new list" : {
+ "Add method" : {
},
"Add time" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Zeit hinzufügen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ajouter du temps"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lägg till tid"
- }
- }
- }
+
},
"Ads" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Werbung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Publicités"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Annonser"
- }
- }
- }
+
},
"Adult content" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inhalte für Erwachsene"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Contenu pour adultes"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vuxet innehåll"
- }
- }
- }
+
},
"Agree and continue" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Akzeptieren und weiter"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Accepter et continuer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Godkänn och fortsätt"
- }
- }
- }
+
},
"All" : {
},
"All locations" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Alle Standorte"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Toutes les localisations"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Alla platser"
- }
- }
- }
+
},
"All providers" : {
},
"Any" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Beliebige"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "N'importe lequel"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Valfri"
- }
- }
- }
+
},
"API access" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-Zugriff"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Accès à l'API"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-åtkomst"
- }
- }
- }
+
},
"API reachable" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API erreichbar"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API joignable"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API kan nås"
- }
- }
- }
+
},
"API unreachable" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API nicht erreichbar"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API injoignable"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API kan inte nås"
- }
- }
- }
+
},
"API unreachable, save method anyway?" : {
@@ -597,101 +155,25 @@
},
"At least one method needs to be enabled." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mindestens eine Methode muss aktiviert sein."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Au moins une méthode doit être activée."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Minst en metod måste vara aktiverad."
- }
- }
- }
+
},
- "Attention: this setting cannot be used in combination with **“%@“**." : {
+ "Attention: this setting cannot be used in combination with **%@**" : {
},
"Attention: toggling “Local network sharing” requires restarting the VPN connection." : {
},
"Authentication" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Authentifizierung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Authentification"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Autentisering"
- }
- }
- }
+
},
"Automatic" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Automatisch"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Automatique"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Automatisk"
- }
- }
- }
+
},
- "Blocked connection" : {
+ "BLOCKED CONNECTION" : {
},
"BLOCKING INTERNET" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "INTERNET SPERREN"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "BLOCAGE D'INTERNET"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "BLOCKERAR INTERNET"
- }
- }
- }
+
},
"Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN." : {
@@ -707,48 +189,10 @@
}
},
"By using sophisticated AI it’s possible to analyze the traffic of data packets going in and out of your device (even if the traffic is encrypted)." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Durch den Einsatz hochentwickelter KI ist es möglich, den Traffic von Datenpaketen zu analysieren, die auf Ihrem Gerät ein- und ausgehen (selbst wenn der Verkehr verschlüsselt ist)."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Utiliser une IA sophistiquée peut permettre d'analyser le trafic des paquets de données entrant et sortant de votre appareil (même si le trafic est chiffré)."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Med sofistikerad AI är det möjligt att analysera trafiken för datapaket som går in och ut från din enhet (även om trafiken är krypterad)."
- }
- }
- }
+
},
"Cancel" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Abbrechen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Annuler"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Avbryt"
- }
- }
- }
+
},
"Cannot complete the purchase" : {
@@ -763,136 +207,22 @@
},
"Checking account number" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ihre Kontonummer wird geprüft"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vérification du numéro de compte"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontrollerar kontonummer"
- }
- }
- }
+
},
"Cipher" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Chiffre"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Chiffre"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Chiffrering"
- }
- }
- }
+
},
"Clear" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Löschen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Effacer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rensa"
- }
- }
- }
+
},
"Clear all overrides" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Alle Überschreibungen löschen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Effacer toutes les substitutions"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rensa alla åsidosättningar"
- }
- }
- }
+
},
"Clear all overrides?" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Alle Überschreibungen löschen?"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Effacer toutes les substitutions ?"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rensa alla åsidosättningar?"
- }
- }
- }
+
},
"Clearing the imported overrides changes the server IPs, in the Select location view, back to default." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Wenn Sie die importierten Überschreibungen löschen, werden die Server-IPs in der Ortsauswahl wieder auf die Standardwerte zurückgesetzt."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "L'effacement des substitutions importées rétablit la valeur par défaut des adresses IP des serveurs dans la vue Sélection d'un emplacement."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Om du rensar de importerade åsidosättningarna ändras servrarnas IP:adresser tillbaka till standard i Välj platsvy."
- }
- }
- }
+
},
"Client is not allowed to issue the request." : {
@@ -904,303 +234,61 @@
},
"Congrats!" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Glückwunsch!"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Félicitations !"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Grattis!"
- }
- }
- }
+
},
"Connect" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verbinden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Connexion"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anslut"
- }
- }
- }
+
},
- "Connected" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verbunden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Connecté"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ansluten"
- }
- }
- }
+ "CONNECTED" : {
+
},
- "Connected to %@, %@" : {
- "localizations" : {
- "en" : {
- "stringUnit" : {
- "state" : "new",
- "value" : "Connected to %1$@, %2$@"
- }
- }
- }
+ "Connected to %@" : {
+
},
- "Connecting to %@, %@" : {
- "localizations" : {
- "en" : {
- "stringUnit" : {
- "state" : "new",
- "value" : "Connecting to %1$@, %2$@"
- }
- }
- }
+ "Connecting to %@" : {
+
},
- "Connecting..." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verbinden …"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Connexion..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ansluter ..."
- }
- }
- }
+ "CONNECTING..." : {
+
},
"Connection details" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verbindungsdetails"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Détails de la connexion"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anslutningsinformation"
- }
- }
- }
+
},
"Continue with login" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Weiter mit Anmeldung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Continuer avec la connexion"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fortsätt med inloggning"
- }
- }
- }
- },
- "Copied Mullvad account number to pasteboard" : {
},
- "Correct account number" : {
+ "Copied Mullvad account number to pasteboard" : {
},
"Create" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Erstellen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Créer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skapa"
- }
- }
- }
+
},
"Create account" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Konto erstellen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Créer un compte"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skapa konto"
- }
- }
- }
+
},
"Create new account" : {
},
+ "Create new list" : {
+
+ },
"Created: %@" : {
},
- "Creating new account" : {
+ "Creating account..." : {
},
"Current device" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktuelles Gerät"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Appareil actuel"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktuell enhet"
- }
- }
- }
+
},
"Custom" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Benutzerdefiniert"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Personnalisé"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anpassad"
- }
- }
- }
+
},
"Custom DNS" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eigenes DNS"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "DNS personnalisé"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anpassad DNS"
- }
- }
- }
+
},
"Custom lists" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eigene Listen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Listes personnalisées"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anpassade listor"
- }
- }
- }
+
},
"DAITA" : {
@@ -1211,33 +299,8 @@
"DAITA isn't available on the current entry server. After enabling, please go to the \"Select location\" view and select an entry location that supports DAITA." : {
},
- "DAITA-enabled" : {
-
- },
- "Defense against AI-guided Traffic Analysis" : {
-
- },
"Delete" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Löschen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Supprimer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ta bort"
- }
- }
- }
+
},
"Delete %@?" : {
@@ -1246,258 +309,46 @@
},
"Delete list" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Liste löschen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Supprimer la liste"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ta bort lista"
- }
- }
- }
+
},
"Delete method" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Methode löschen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Supprimer la méthode"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Radera metod"
- }
- }
- }
+
},
"Deleting account..." : {
},
"Device is inactive" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gerät ist inaktiv"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "L'appareil est inactif"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Enheten är inaktiv"
- }
- }
- }
+
},
"Device name" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gerätename"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nom de l'appareil"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Enhetens namn"
- }
- }
- }
+
},
"Device name: %@" : {
},
"Direct only" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nur direkt"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Directe uniquement"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Endast direkt"
- }
- }
- }
+
},
"Disable all \"%@\" above to activate this setting." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Deaktivieren Sie oben alle „%@“, um diese Einstellung zu aktivieren."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Désactivez tous les « %@ » ci-dessus pour activer ce paramètre."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inaktivera alla \"%@\" ovan för att aktivera inställningen."
- }
- }
- }
- },
- "Disabled" : {
},
"Disabling" : {
},
"Discard changes" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Änderungen verwerfen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Annuler les modifications "
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ignorera ändringarna"
- }
- }
- }
+
},
"Disconnect" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Trennen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Déconnexion"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Koppla från"
- }
- }
- }
+
},
- "Disconnected" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verbindung getrennt"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Déconnecté"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Frånkopplad"
- }
- }
- }
+ "DISCONNECTED" : {
+
},
- "Disconnecting..." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verbindung wird getrennt …"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Déconnexion en cours..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kopplar från ..."
- }
- }
- }
+ "DISCONNECTING..." : {
+
},
"DNS content blockers" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "DNS-Inhaltssperren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bloqueurs de contenu DNS"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "DNS-innehållsblockerare"
- }
- }
- }
+
},
"DNS settings" : {
@@ -1512,26 +363,7 @@
},
"Don’t have an account number?" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sie haben keine Kontonummer?"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vous n'avez pas de numéro de compte ?"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Har du inget kontonummer?"
- }
- }
- }
+
},
"Done" : {
@@ -1539,256 +371,44 @@
"Edit custom list" : {
},
- "Edit lists" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Listen bearbeiten"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modifier les listes"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Redigera listor"
- }
- }
- }
- },
- "Edit locations" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Standorte bearbeiten"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modifier les localisations"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Redigera platser"
- }
- }
- }
+ "Edit custom lists" : {
+
},
"Edit message" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nachricht bearbeiten"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modifier le message"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Redigera meddelande"
- }
- }
- }
+
+ },
+ "Edit method" : {
+
},
"Either buy credit on our website or make an in-app purchase via the **Add time** button below." : {
},
"Either buy credit on our website or redeem a voucher." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kaufen Sie entweder Guthaben über unsere Seite oder lösen Sie einen Gutschein ein."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Achetez du crédit sur notre site web ou échangez un bon."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Du kan antingen köpa kredit på vår webbplats eller lösa in en kupong."
- }
- }
- }
+
},
"Enable" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera"
- }
- }
- }
- },
- "Enable \"%@\"" : {
},
"Enable method" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Methode aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer la méthode"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera metod"
- }
- }
- }
+
},
"Enabling" : {
},
"Enter IP" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "IP eingeben"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Saisir l'IP"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ange IP"
- }
- }
- }
+
},
"Enter voucher code" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gutscheincode eingeben"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Saisissez un code de bon"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ange kupongkod"
- }
- }
- }
+
},
"Enter your account number" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Geben Sie Ihre Kontonummer ein"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Saisissez votre numéro de compte"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ange ditt kontonummer"
- }
- }
- }
+
},
"Entry" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eingang"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Entrée"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ingång"
- }
- }
- }
+
},
"Exit" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ausgang"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sortie"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Utgång"
- }
- }
- }
+
},
"Expand %@" : {
@@ -1800,26 +420,7 @@
},
"Failed to send" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fehler beim Senden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Échec de l'envoi"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Det gick inte att skicka"
- }
- }
- }
+
},
"Failed to send the receipt to server: %@" : {
@@ -1836,416 +437,74 @@
"Failed to stop the tunnel." : {
},
- "Failed to validate account number: %@" : {
-
- },
"FAQs & Guides" : {
},
"Fetching devices..." : {
},
- "file" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "datei"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "fichier"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "fil"
- }
- }
- }
- },
"Filter" : {
- "localizations" : {
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filtrer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filtrera"
- }
- }
- }
+
},
"Filtered:" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gefiltert:"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filtré :"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filtrerat:"
- }
- }
- }
+
},
"Gambling" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Glücksspiel"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Jeux d'argent"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hasardspel"
- }
- }
- }
+
},
"Go ahead and start using the app to begin reclaiming your online privacy." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Legen Sie los und erobern Sie Ihre Online-Privatsphäre mit dieser App zurück!"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Commencez à utiliser l'application pour reprendre votre confidentialité en ligne en main."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sätt igång och börja använda appen för att ta tillbaka din onlinesekretess."
- }
- }
- }
+
},
"Go to login" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Zur Anmeldung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aller à la connexion"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gå till inloggning"
- }
- }
- }
+
},
"Going to login will unblock the Internet on this device." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Wenn Sie mit der Anmeldung fortfahren, wird die Internetsperre auf diesem Gerät aufgehoben."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aller à la connexion débloquera la connexion Internet sur cet appareil."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Om du loggar in avblockeras internet på den här enheten."
- }
- }
- }
+
},
"Got it!" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verstanden!"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Compris !"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Jag förstår!"
- }
- }
- }
+
},
"Here’s your account number. Save it!" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hier ist Ihre Kontonummer. Verlieren Sie sie nicht!"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Voici votre numéro de compte. Gardez-le !"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Här är ditt kontonummer. Spara det!"
- }
- }
- }
+
},
"Hide account number" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontonummer verbergen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Masquer le numéro de compte"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dölj kontonummer"
- }
- }
- }
+
},
"If an observer monitors these data packets, %@ makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Wenn ein Beobachter diese Datenpakete überwacht, macht %@ es für ihn wesentlich schwieriger zu erkennen, welche Websites Sie besuchen oder mit wem Sie kommunizieren."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Si un observateur surveille ces paquets de données, %@ rend beaucoup plus difficile l'identification des sites web que vous visitez ou des personnes avec lesquelles vous communiquez."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Om dessa datapaket övervakas av en observatör, gör %@ det svårare för dem att identifiera vilka webbplatser du besöker eller vem du kommunicerar med."
- }
- }
- }
+
},
"If needed we will contact you at %@" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bei Bedarf werden wir Sie über %@ kontaktieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Si nécessaire, nous vous contacterons à l'adresse %@"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Om det behövs kontaktar vi dig på %@"
- }
- }
- }
+
},
"If you are having issues connecting to VPN servers, please contact support." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Wenn Sie Probleme mit der Verbindung zu VPN-Servern haben, wenden Sie sich bitte an den Support."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Si vous rencontrez des problèmes de connexion aux serveurs VPN, veuillez contacter l'assistance."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontakta supporten om du har problem med att ansluta till VPN-servrar."
- }
- }
- }
+
},
- "If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare." : {
+ "If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or CloudFlare." : {
},
"If you disconnect now, you won’t be able to secure your connection until the device is online." : {
},
"If you exit the form and try again later, the information you already entered will still be here." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Die Informationen, die Sie bereits eingegeben haben, werden immer noch da sein, wenn Sie das Formular schließen und es später erneut versuchen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Si vous quittez le formulaire et réessayez plus tard, les informations que vous avez déjà saisies seront toujours là."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Om du lämnar formuläret och försöker igen senare kommer informationen du anger att finnas kvar."
- }
- }
- }
+
},
"If you haven’t received additional VPN time after purchasing" : {
},
"If you log out, the device and the device name is removed. When you log back in again, the device will get a new name." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Wenn Sie sich abmelden, werden das Gerät und der Gerätename entfernt. Wenn Sie sich wieder anmelden, erhält das Gerät einen neuen Namen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Si vous vous déconnectez, l'appareil et son nom sont supprimés. Lorsque vous vous reconnectez, l'appareil reçoit un nouveau nom."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Om du loggar ut tas enheten och enhetsnamnet bort. När du loggar in igen får enheten ett nytt namn."
- }
- }
- }
+
},
"If you still experience issues you can email our support directly at **%@**. Please attach your app log to your email." : {
},
"Import" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importera"
- }
- }
- }
+
},
"Import file" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Datei importieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importer un fichier"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importera fil"
- }
- }
- }
+
},
"Import files or text with new IP addresses for the servers in the Select location view." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importieren Sie Dateien oder Text mit neuen IP-Adressen für die Server in der Ortsauswahl."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importez des fichiers ou du texte contenant les nouvelles adresses IP des serveurs dans la vue Sélectionner un emplacement."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importera filer eller text med nya IP-adresser för servrarna i Välj platsvy."
- }
- }
- }
+
},
"Import of %@ was successful, overrides are now active." : {
@@ -2253,68 +512,23 @@
"Import of %@ was unsuccessful, please try again." : {
},
- "Import successful" : {
+ "Import of text was successful, overrides are now active." : {
+
+ },
+ "Import of text was unsuccessful, please try again." : {
+
+ },
+ "IMPORT SUCCESSFUL" : {
},
"Import via text" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Import via Text"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importer par texte"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importera via text"
- }
- }
- }
+
},
"In" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eingehend"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Entrante"
- }
- }
- }
+
},
"In use" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Wird verwendet"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "En cours d'utilisation"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Används"
- }
- }
- }
+
},
"Include all networks" : {
@@ -2328,6 +542,9 @@
"Invalid account number" : {
},
+ "Invalid account number: %@" : {
+
+ },
"Invalid device state." : {
},
@@ -2335,70 +552,13 @@
},
"It does this by performing an extra key exchange using a quantum safe algorithm and mixing the result into WireGuard’s regular encryption. This extra step uses approximately 500 kiB of traffic every time a new tunnel is established." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dazu wird ein zusätzlicher Schlüsselaustausch mit einem quantensicheren Algorithmus durchgeführt und das Ergebnis mit der regulären Verschlüsselung von WireGuard vermischt. Dieser zusätzliche Schritt verbraucht jedes Mal, wenn ein neuer Tunnel aufgebaut wird, etwa 500 KiB an Datenverkehr."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Pour ce faire, il effectue un échange de clés supplémentaire à l'aide d'un algorithme à sécurité quantique et mélange le résultat au chiffrement habituel de WireGuard. Cette étape supplémentaire utilise environ 500 kiB de trafic chaque fois qu'un nouveau tunnel est établi."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Den gör det genom att göra ett extra nyckelutbyte med en kvantsäker algoritm och kombinera resultatet med WireGuards vanliga kryptering. Det här extra steget använder ungefär 500 KiB i trafik varje gång en ny tunnel upprättas."
- }
- }
- }
+
},
"It looks like you’ve entered an account number instead of a voucher code. If you would like to change the active account, please log out first." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anscheinend haben Sie eine Kontonummer statt eines Gutscheincodes eingegeben. Wenn Sie das aktive Konto wechseln möchten, melden Sie sich bitte zuerst ab."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vous semblez avoir saisi un numéro de compte plutôt qu'un code de bon. Si vous souhaitez modifier le compte actif, veuillez d'abord vous déconnecter."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Det verkar som om du angett ett kontonummer istället för en kupongkod. Logga först ut om du vill ändra den aktiva koden."
- }
- }
- }
+
},
"Language" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sprache"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Langue"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Språk"
- }
- }
- }
+
},
"Last four digits of the account number are incorrect" : {
@@ -2407,275 +567,64 @@
},
"Learn about privacy" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mehr über Privatsphäre erfahren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Plus d'informations sur la confidentialité"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Läs mer om sekretess"
- }
- }
- }
+
},
"Less than a day" : {
},
"Local network sharing" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Teilen im lokalen Netzwerk"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Partage réseau local"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lokal nätverksdelning"
- }
- }
- }
+
},
- "Log in" : {
+ "Locations" : {
},
"Log out" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Abmelden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Déconnexion"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Logga ut"
- }
- }
- }
+
},
"Logged in" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Angemeldet"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Connecté"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inloggad"
- }
- }
- }
+
},
"Logging in..." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anmeldung läuft..."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Connexion..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Loggar in..."
- }
- }
- }
+
},
"Logging out..." : {
},
"Login" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anmelden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Connexion"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Logga in"
- }
- }
- }
+
},
"Login failed" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anmeldung fehlgeschlagen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Échec de la connexion"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inloggningen misslyckades"
- }
- }
- }
+
},
"Make a purchase with StoreKit2" : {
},
"Malware" : {
- "localizations" : {
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skadlig kod"
- }
- }
- }
+
},
"Manage and add custom methods to access the Mullvad API." : {
},
"Manage devices" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Geräte verwalten"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gérer les appareils"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hantera enheter"
- }
- }
- }
- },
- "method" : {
},
- "Method settings" : {
+ "Mullvad owned only" : {
},
"multihop" : {
- "localizations" : {
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "multihopp"
- }
- }
- }
+
},
"Multihop" : {
- "localizations" : {
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Multihopp"
- }
- }
- }
+
},
"Multihop is being used to enable DAITA for your selected location." : {
},
"Multihop routes your traffic into one WireGuard server and out another, making it harder to trace. This results in increased latency but increases anonymity online." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Multihop leitet Ihren Traffic in einen WireGuard-Server hinein und aus einem anderen heraus, so dass er schwerer zu verfolgen ist. Dies führt zu einer erhöhten Latenzzeit, erhöht aber die Anonymität im Internet."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Le multihop fait passer votre trafic par un serveur WireGuard et le fait sortir par un autre, ce qui le rend plus difficile à tracer. Cela se traduit par une latence accrue, mais plus d'anonymat en ligne."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Multihopp dirigerar din trafik till en WireGuard-server och ut genom en annan, vilket gör det svårare att spåra. Detta leder till ökad fördröjning men bättre anonymitet online."
- }
- }
- }
- },
- "Multiple validation errors occurred." : {
},
"Name" : {
- "localizations" : {
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nom"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Namn"
- }
- }
- }
+
},
"Name is already taken." : {
@@ -2689,74 +638,14 @@
"NETWORK ISSUES" : {
},
- "New custom list" : {
-
- },
"NEW DEVICE CREATED" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "NEUES GERÄT ERSTELLT"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "NOUVEL APPAREIL CRÉÉ"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "NY ENHET HAR SKAPATS"
- }
- }
- }
+
},
"NEW VERSION INSTALLED" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "NEUE VERSION INSTALLIERT"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "NOUVELLE VERSION INSTALLÉE"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "NY VERSION INSTALLERAD"
- }
- }
- }
+
},
"Next" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Weiter"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Suivant"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nästa"
- }
- }
- }
+
},
"No DAITA compatible servers match your location settings. Try changing location." : {
@@ -2764,13 +653,13 @@
"No matching relays found, check your filter settings." : {
},
- "No matching servers" : {
+ "No matching servers found." : {
},
- "No network" : {
+ "NO NETWORK" : {
},
- "No overrides imported" : {
+ "NO OVERRIDES IMPORTED" : {
},
"No servers match your location filter. Try changing filter settings." : {
@@ -2780,208 +669,44 @@
},
"No servers match your settings, try changing server or other settings." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kein Server entspricht Ihren Einstellungen. Versuchen Sie, den Server oder andere Einstellungen zu ändern."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aucun serveur ne correspond à vos paramètres, essayez de modifier les paramètres du serveur ou d'autres paramètres."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inga servrar matchar dina inställningar. Försök att byta server eller ändra inställningarna."
- }
- }
- }
+
},
"Not all our servers are %@-enabled. Therefore, we use multihop automatically to enable %@ with any server." : {
"localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nicht alle unsere Server sind %1$@-fähig. Daher verwenden wir automatisch Multihop, um %2$@ mit jedem Server zu aktivieren."
- }
- },
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Not all our servers are %1$@-enabled. Therefore, we use multihop automatically to enable %2$@ with any server."
}
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tous nos serveurs ne sont pas compatibles %1$@. C'est pourquoi nous utilisons automatiquement le multihop pour activer %2$@ avec n'importe quel serveur."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Det är inte alla våra servrar som är %1$@-aktiverade. Därför använder vi multihopp automatiskt för att aktivera %2$@ med alla servrar."
- }
}
}
},
"Obfuscation" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verschleierung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dissimulation"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Obfuskering"
- }
- }
- }
+
},
"Obfuscation hides the WireGuard traffic inside another protocol. It can be used to help circumvent censorship and other types of filtering, where a plain WireGuard connection would be blocked." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bei der Verschleierung wird der WireGuard-Datenverkehr in einem anderen Protokoll versteckt. Sie kann dazu verwendet werden, Zensur und andere Arten von Filtern zu umgehen, bei denen eine reine WireGuard-Verbindung blockiert würde."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "La dissimulation cache le trafic WireGuard à l'intérieur d'un autre protocole. Elle peut être utilisée pour aider à contourner la censure et d'autres types de filtrage, où une connexion WireGuard simple serait bloquée."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Obfuskering döljer WireGuard-trafik inne i ett annat protokoll. Det kan användas för att kringgå censur och andra filtertyper där en vanlig WireGuard-anslutning skulle blockeras."
- }
- }
- }
+
},
"Obscured" : {
},
"Off" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aus"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Désactivé"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Av"
- }
- }
- }
+
},
"On" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ein"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activé"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "På"
- }
- }
- }
+
},
"On some networks, where various types of censorship are being used, our server IP addresses are sometimes blocked." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "In einigen Netzwerken, in denen verschiedene Arten der Zensur eingesetzt werden, werden die IP-Adressen unserer Server manchmal blockiert."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sur certains réseaux, où divers types de censure sont utilisés, les adresses IP de notre serveur sont parfois bloquées."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "På vissa nätverk där olika typer av censureringar används blockeras blir ibland vår servers IP-adresser blockerade."
- }
- }
- }
+
},
"On some networks, where various types of censorship are being used, the API servers might not be directly reachable." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "In einigen Netzwerken, in denen verschiedene Arten der Zensur eingesetzt werden, sind die API-Server möglicherweise nicht direkt erreichbar."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sur certains réseaux, où divers types de censure sont utilisés, les serveurs API peuvent ne pas être directement accessibles."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Det kanske inte går att nå API-servrarna direkt på nätverk som använder olika censureringstyper."
- }
- }
- }
+
},
"Open %@ settings" : {
},
"Optional" : {
- "localizations" : {
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Facultatif"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Valfritt"
- }
- }
- }
+
},
"Out IPv4" : {
@@ -2990,208 +715,34 @@
},
"Out of time" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Zeit abgelaufen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Plus de temps"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ingen tid kvar"
- }
- }
- }
+
},
"OUT OF TIME" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "ZEIT ABGELAUFEN"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "PLUS DE TEMPS"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "INGEN TID KVAR"
- }
- }
- }
- },
- "Overrides active" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Überschreibungen aktiv"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Substitutions actives"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Åsidosättningar aktiva"
- }
- }
- }
+
},
- "Owned" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "In Besitz"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Possédé"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ägd"
- }
- }
- }
+ "OVERRIDES ACTIVE" : {
+
},
"Ownership" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eigentümerschaft"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Propriété"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ägarskap"
- }
- }
- }
+
},
"Paid until" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bezahlt bis"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Payé jusqu'au"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Betalat till"
- }
- }
- }
+
},
"Password" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Passwort"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mot de passe"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lösenord"
- }
- }
- }
+
},
"Performs a connection test to a Mullvad API server via this access method." : {
},
"Please enter a valid IPv4 or IPv6 address." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bitte geben Sie eine gültige IPv4- oder IPv6-Adresse ein."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Merci de saisir une adresse IPv4 ou IPv6 valide."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ange en giltig IPv4- eller IPv6-adress."
- }
- }
- }
+
},
- "Please enter a valid port." : {
+ "Please enter a valid remote server port." : {
},
"Please log out of at least one by removing it from the list below. You can find the corresponding device name under the device’s Account settings." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bitte melden Sie sich von mindestens einem Gerät ab, indem Sie es aus der Liste unten entfernen. Sie finden den entsprechenden Gerätenamen unter den Kontoeinstellungen des Geräts."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Merci de vous déconnecter d'au moins un appareil en le supprimant de la liste ci-dessous. Vous trouverez le nom de l'appareil correspondant dans les paramètres du compte de l'appareil."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Logga ut på minst en enhet genom att ta bort den från listan nedan. Du hittar motsvarande enhetsnamn i enhetens kontoinställningar."
- }
- }
- }
+
},
"Please retry by using the \"Restore purchases\" button." : {
@@ -3206,152 +757,31 @@
},
"Providers" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anbieter"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fournisseurs"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Leverantörer"
- }
- }
- }
+
},
"Providers: %d" : {
},
"Quantum resistance" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Quantenresistenz"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Résistance quantique"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kvantresistens"
- }
- }
- }
+
},
"Quantum-resistant tunnel" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Quantenresistenter Tunnel"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tunnel résistant aux attaques quantiques"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kvantresistent tunnel"
- }
- }
- }
+
},
"QUIC" : {
},
- "Reconnecting" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Wiederherstellen der Verbindung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Reconnexion"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Återansluter"
- }
- }
- }
+ "RECONNECTING" : {
+
},
- "Reconnecting to %@, %@" : {
- "localizations" : {
- "en" : {
- "stringUnit" : {
- "state" : "new",
- "value" : "Reconnecting to %1$@, %2$@"
- }
- }
- }
+ "Reconnecting to %@" : {
+
},
"Redeem" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Einlösen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Échanger"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lös in"
- }
- }
- }
+
},
"Redeem voucher" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gutschein einlösen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Échangez un bon"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lös in kupong"
- }
- }
- }
+
},
"Refund last purchase with StoreKit2" : {
@@ -3360,48 +790,10 @@
},
"Remove" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Entfernen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Supprimer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ta bort"
- }
- }
- }
+
},
"Remove %@?" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%@ entfernen?"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Supprimer %@ ?"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ta bort %@?"
- }
- }
- }
+
},
"Remove last used account" : {
@@ -3409,313 +801,59 @@
"Removing the saved account number from this device cannot be undone.\nDo you want to remove the saved account number?" : {
},
- "Rented" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gemietet"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Loué"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hyrd"
- }
- }
- }
+ "Rented only" : {
+
},
"Report a problem" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Problem melden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Signaler un problème"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rapportera ett problem"
- }
- }
- }
+
},
"Required" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Erforderlich"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Requis"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Obligatoriskt"
- }
- }
- }
+
},
"Restore purchases" : {
},
"Save" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Speichern"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Enregistrer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Spara"
- }
- }
- }
+
},
"Saving changes..." : {
},
"Search for..." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Suchen nach …"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rechercher..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sök efter …"
- }
- }
- }
+
},
"Select location" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ort auswählen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sélectionner une localisation"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Välj plats"
- }
- }
- }
+
},
"Selected" : {
},
"Send" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Senden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Envoyer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skicka"
- }
- }
- }
+
},
"Send anyway" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Trotzdem senden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Envoyer quand même"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skicka ändå"
- }
- }
- }
+
},
"Sending..." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Wird gesendet..."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Envoi..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skicka..."
- }
- }
- }
+
},
"Sent" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gesendet"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Envoyé"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skickat"
- }
- }
- }
+
},
"Server" : {
- "localizations" : {
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Serveur"
- }
- }
- }
+
},
"Server details" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Serverdaten"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Détails du serveur"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Serverinformation"
- }
- }
- }
+
},
"Server IP override" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Server-IP überschreiben"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Substitution d'IP de serveur"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Åsidosättning av serverns IP-adress"
- }
- }
- }
+
},
"Setting: %@" : {
},
"Settings" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Einstellungen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Paramètres"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inställningar"
- }
- }
- }
+
},
"Settings migration error" : {
@@ -3724,105 +862,22 @@
},
"Show account number" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontonummer anzeigen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Afficher le numéro de compte"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Visa kontonummer"
- }
- }
- }
+
},
"Social media" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Social Media"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Réseaux sociaux"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sociala medier"
- }
- }
- }
+
},
"Socks5" : {
},
"Start using the app" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mit dem Benutzen der App anfangen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Commencer à utiliser l'application"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Börja använda appen"
- }
- }
- }
+
},
"Super!" : {
- "localizations" : {
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Super !"
- }
- }
- }
+
},
"Switch location" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ort wechseln"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Changer de localisation"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Växla plats"
- }
- }
- }
+
},
"Tap **Edit** to add at least one DNS server." : {
@@ -3831,83 +886,16 @@
},
"Test method" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Methode testen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tester la méthode"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Testmetod"
- }
- }
- }
+
},
"Testing..." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Testen …"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Test..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Testar ..."
- }
- }
- }
- },
- "text" : {
- "localizations" : {
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "texte"
- }
- }
- }
+
},
"Thanks for your purchase" : {
},
"Thanks!" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Danke!"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Merci !"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tack!"
- }
- }
- }
+
},
"The app communicates with a Mullvad API server directly." : {
@@ -3919,95 +907,19 @@
},
"The app needs to communicate with a Mullvad API server to log you in, fetch server lists, and other critical operations." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Die App muss mit einem Mullvad API-Server kommunizieren, um Sie anzumelden, Serverlisten abzurufen und andere wichtige Vorgänge durchzuführen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "L'application doit communiquer avec un serveur d'API Mullvad pour vous connecter, récupérer des listes de serveurs et effectuer d'autres opérations critiques."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Appen måste kommunicera med en Mullvad API-server för att logga in dig, hämta serverlistor och andra viktiga åtgärder."
- }
- }
- }
+
},
"The app will test the method before saving." : {
},
"The automatic setting will randomly choose from the valid port ranges shown below." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Die automatische Einstellung wählt zufällig aus den unten gezeigten gültigen Portbereichen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Le réglage automatique choisira au hasard parmi la plage de ports valide affichée ci-dessous."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Den automatiska inställningen väljer slumpmässigt från giltiga portintervall som visas nedan."
- }
- }
- }
+
},
"The custom port can be any value inside the valid ranges: %@." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Der benutzerdefinierte Port kann ein beliebiger Wert innerhalb dieser gültigen Bereiche sein: %@."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Le port personnalisé peut prendre n'importe quelle valeur dans les plages valides : %@."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Den anpassade porten kan vara ett värde inom de giltiga intervallen: %@."
- }
- }
- }
+
},
"The device will be removed from the list and logged out." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Das Gerät wird aus der Liste entfernt und abgemeldet."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "L'appareil sera supprimé de la liste et déconnecté."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Enheten kommer att tas bort från listan och loggas ut."
- }
- }
- }
+
},
"The entry and exit servers cannot be the same. Try changing one to a new server or location." : {
@@ -4032,258 +944,49 @@
},
"This can be useful if the API is censored but Mullvad’s bridge servers are not." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dies kann nützlich sein, wenn die API zensiert ist, die Brückenserver von Mullvad aber nicht."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Cela peut être utile si l'API est censurée, mais que les serveurs de pont Mullvad ne le sont pas."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Detta kan vara användbart om API:n är censurerad men Mullvads broservrar inte är det."
- }
- }
- }
+
},
"This can be useful when you are not affected by censorship." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dies kann nützlich sein, wenn Sie nicht von Zensur betroffen sind."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Cela peut être utile lorsque vous n'êtes pas concerné par la censure."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Detta kan vara användbart när du inte påverkas av censurering."
- }
- }
- }
+
},
"This device is not allowed to make the payment." : {
},
+ "This device is now named **%@**. See more under \"Manage devices\" in Account." : {
+
+ },
"This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Diese Funktion ermöglicht den Zugriff auf andere Geräte im lokalen Netzwerk, z. B. zum Teilen, Drucken, Streamen usw."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Cette fonctionnalité permet d'accéder à d'autres appareils sur le réseau local, par exemple pour le partage, l'impression, le streaming, etc."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Funktionen tillåter åtkomst till andra enheter på det lokala nätverket, t.ex. för att dela, skriva ut, streama osv."
- }
- }
- }
+
},
"This feature allows you to circumvent that censorship by adding custom ways to access the API via proxies and similar methods." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mit dieser Funktion können Sie diese Zensur umgehen, indem Sie benutzerdefinierte Wege zum Zugriff auf die API über Proxys und ähnliche Methoden hinzufügen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Cette fonctionnalité vous permet de contourner cette censure en ajoutant des moyens personnalisés d'accéder à l'API via des proxys et des méthodes similaires."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Men den här funktionen kan du kringgå censureringen genom att lägga till anpassade sätt att komma åt API:n via proxyservrar och liknande metoder."
- }
- }
- }
+
},
"This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Diese Funktion macht den WireGuard-Tunnel resistent gegen mögliche Angriffe von Quantencomputern."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Cette fonctionnalité rend le tunnel WireGuard résistant aux attaques potentielles des ordinateurs quantiques."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Den här funktionen gör WireGuard-tunneln resistent mot potentiella attacker från kvantdatorer."
- }
- }
- }
+
},
"This is the name assigned to the device. Each device logged in on a Mullvad account gets a unique name that helps you identify it when you manage your devices in the app or on the website." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dies ist der dem Gerät zugewiesene Name. Jedes Gerät, das in einem Mullvad-Konto angemeldet ist, erhält einen eindeutigen Namen, mit dem Sie es identifizieren können, wenn Sie Ihre Geräte in der App oder auf der Website verwalten."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Il s'agit du nom attribué à l'appareil. Chaque appareil connecté à un compte Mullvad reçoit un nom unique qui vous aide à l'identifier lorsque vous gérez vos appareils dans l'application ou sur le site Web."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Det här är namnet som tilldelas enheten. Varje enhet som är inloggad på ett Mullvad-konto får ett unikt namn som hjälper dig att identifiera den när du hanterar dina enheter i appen eller på webbplatsen."
- }
- }
- }
+
},
"This logs out all devices using this account and all VPN access will be denied even if there is time left on the account. Enter the last 4 digits of the account number and hit \"Delete account\" if you really want to delete the account:" : {
},
"This might cause issues on certain websites, services, and apps." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dies kann bei bestimmten Websites, Diensten und Apps zu Problemen führen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Cela peut causer des problèmes sur certains sites Web, services et applications."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Detta kan orsaka problem på vissa webbplatser, tjänster och appar."
- }
- }
- }
- },
- "This voucher code has already been used." : {
},
"Time left: %@" : {
},
"To add more, you will need to disconnect and access the Internet with an unsecure connection." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Um mehr hinzuzufügen, müssen Sie Ihre Verbindung trennen und mit einer unsicheren Verbindung auf das Internet zugreifen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Pour en ajouter d'autres, vous devrez vous déconnecter et accéder à internet avec une connexion non sécurisée."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Om du vill lägga till mer måste du koppla från och öppna internet med en oskyddad anslutning."
- }
- }
- }
+
},
"To assist you better, please write in English or Swedish and include which country you are connecting from." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Um Ihnen besser weiterhelfen zu können, schreiben Sie uns bitte auf Englisch oder Schwedisch und geben Sie an, aus welchem Land Sie die Verbindung herstellen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Pour nous permettre de mieux vous assister, merci d'écrire en anglais ou en suédois et d'indiquer le pays à partir duquel vous vous connectez."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skriv på engelska eller svenska och ange från vilket land du är ansluten så att vi kan hjälpa dig bättre."
- }
- }
- }
+
},
"To circumvent this you can import a file or a text, provided by our support team, with new IP addresses that override the default addresses of the servers in the Select location view." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Um dies zu umgehen, können Sie eine Datei oder einen von unserem Support-Team bereitgestellten Text mit neuen IP-Adressen importieren, die die Standardadressen der Server in der Ortsauswahl außer Kraft setzen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Pour contourner ce problème, vous pouvez importer un fichier ou du texte fourni par notre équipe d'assistance, avec de nouvelles adresses IP qui remplacent les adresses par défaut des serveurs dans la vue Sélectionner un emplacement."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "För att kringgå detta kan du importera en fil eller text, som tillhandahålls av vårt supportteam, med nya IP-adresser som åsidosätter servrarnas standardadresser i Välj platsvy."
- }
- }
- }
+
},
"To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Besuchen Sie unsere Website, um mehr über datenschutzfreundliche Gewohnheiten & Tools zu erfahren und Ihre Reise als Datenschutz-Ninja fortzufahren."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Pour continuer votre voyage de ninja de la confidentialité, visitez notre site Web pour découvrir d'autres outils et habitudes pour protéger votre vie privée."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Om du vill fortsätta din resa som sekretessninja kan du gå till vår webbplats för att lära dig sekretessvänliga vanor och verktyg."
- }
- }
- }
+
},
"To create a custom list, tap on \"...\" " : {
@@ -4292,108 +995,19 @@
},
"To help you more effectively, your app’s log file will be attached to this message. Your data will remain secure and private, as it is anonymised before being sent over an encrypted channel." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Damit wir Ihnen besser helfen können, wird die Protokolldatei Ihrer App an diese Nachricht angehängt. Ihre Daten bleiben sicher und privat, da sie vor dem Senden über einen verschlüsselten Kanal anonymisiert werden."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Pour mieux vous aider, le fichier journal de l'application est joint à ce message. Vos données restent privées et en sécurité dans la mesure où elles sont rendues anonymes avant d'être envoyées via un canal chiffré."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "För att hjälpa dig mer effektivt kommer appens loggfil att bifogas i detta meddelande. Dina uppgifter förblir säkra och privata, eftersom de anonymiseras innan de skickas över en krypterad kanal."
- }
- }
- }
+
},
"To start using the app, you first need to add time to your account." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Um mit der Nutzung dieser App zu beginnen, müssen Sie erst einmal Zeit zu Ihrem Konto hinzufügen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Pour commencer à utiliser l'application, vous devez d'abord ajouter du temps à votre compte."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Om du vill börja använda appen måste du först lägga till tid i ditt konto."
- }
- }
- }
+
},
"Too many devices" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Zu viele Geräte"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Trop d'appareils"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "För många enheter"
- }
- }
- }
+
},
"Trackers" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tracker"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Spårare"
- }
- }
- }
+
},
"Try again" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Erneut versuchen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Réessayer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Försök igen"
- }
- }
- }
+
},
"TUNNEL ERROR" : {
@@ -4402,39 +1016,13 @@
},
"Type" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Typ"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Typ"
- }
- }
- }
+
},
"UDP" : {
},
"UDP-over-TCP" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "UDP über TCP"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "UDP över TCP"
- }
- }
- }
+
},
"Unable to authenticate account. Please log out and log back in." : {
@@ -4443,26 +1031,7 @@
},
"Unable to start tunnel connection. Please send a problem report." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Die Tunnelverbindung konnte nicht gestartet werden. Bitte senden Sie einen Problembericht."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Impossible de démarrer la connexion au tunnel. Veuillez envoyer un rapport de problème."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Det går inte att starta tunnelanslutning. Skicka en problemrapport."
- }
- }
- }
+
},
"Unexpected server response: %1$@ (HTTP status: %2$d)" : {
@@ -4471,96 +1040,24 @@
},
"Unknown error." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Unbekannter Fehler."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Erreur inconnue."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Okänt fel."
- }
- }
- }
+
},
"Use custom DNS server" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Benutzerdefinierten DNS-Server verwenden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Utiliser un serveur DNS personnalisé"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Använd anpassad DNS-server"
- }
- }
- }
+
},
"Username" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Benutzername"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nom d'utilisateur"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Användarnamn"
- }
- }
- }
+
+ },
+ "Valid account number" : {
+
},
"Valid range: %d - %d" : {
"localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gültiger Bereich: %1$d–%2$d"
- }
- },
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Valid range: %1$d - %2$d"
}
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Plage valide : %1$d - %2$d"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Giltigt intervall: %1$d–%2$d"
- }
}
}
},
@@ -4568,484 +1065,85 @@
},
"Verifying voucher..." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gutschein wird verifiziert ..."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vérification du bon…"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verifierar kupong ..."
- }
- }
- }
+
},
"View and manage all your logged in devices. You can have up to 5 devices on one account at a time. Each device gets a name when logged in to help you tell them apart easily." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lassen Sie all Ihre angemeldeten Geräte anzeigen und verwalten Sie sie. Sie können bis zu fünf Geräte gleichzeitig bei einem Konto haben. Jedes Gerät bekommt beim Anmelden einen Namen, damit Sie sie leicht unterscheiden können."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Affichez et gérez tous vos appareils connectés. Vous pouvez avoir jusqu'à 5 appareils sur un même compte. Chaque appareil reçoit un nom lorsqu'il est connecté, ce qui vous permet de le distinguer facilement."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Visa och hantera alla dina inloggade enheter. Du kan ha upp till fem enheter åt gången på ett konto. Varje enhet får ett namn när den loggas in så att du enklare kan skilja dem åt."
- }
- }
- }
+
},
"View app logs" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "App-Protokolle anzeigen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Afficher les journaux de l'application"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Visa appens loggar"
- }
- }
- }
+
+ },
+ "Voucher code has already been used." : {
+
},
"Voucher code is invalid." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Der Gutscheincode ist ungültig."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Le code du bon n'est pas valide."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kupongkoden är ogiltig."
- }
- }
- }
+
},
"Voucher was successfully redeemed." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Der Gutschein wurde erfolgreich eingelöst."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Le bon a bien été échangé."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kupongen har lösts in."
- }
- }
- }
+
},
"VPN settings" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "VPN-Einstellungen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Paramètres VPN"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "VPN-inställningar"
- }
- }
- }
+
},
"Warning: The malware blocker is not an anti-virus and should not be treated as such, this is just an extra layer of protection." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Der Malware-Blocker ist kein Antivirusprogramm und sollte auch nicht als solches behandelt werden. Es dient lediglich als zusätzliche Schutzschicht."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Avertissement : le bloqueur de malware n'est pas un anti-virus et ne doit pas être traité comme tel, il s'agit juste d'une couche de protection supplémentaire."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Varning! Blockering av skadlig kod är inte ett antivirusprogram och bör inte behandlas som ett. Det här är bara ett extra skyddslager."
- }
- }
- }
+
},
"We are having some issues, please try again later" : {
},
"We will look into this." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Wir werden uns das anschauen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nous allons nous pencher dessus."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vi kommer att undersöka detta."
- }
- }
- }
- },
- "Welcome, this device is now called **%@**. For more details see the info button in Account." : {
},
"What’s new" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Was ist neu?"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Quoi de neuf"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vad är nytt"
- }
- }
- }
+
},
"When this feature is enabled it stops the device from contacting certain domains or websites known for distributing ads, malware, trackers and more." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Wenn diese Funktion aktiviert ist, wird das Gerät daran gehindert, bestimmte Domains oder Websites zu kontaktieren, die für die Verbreitung von Werbung, Malware, Trackern und mehr bekannt sind."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lorsque cette fonctionnalité est activée, elle empêche l'appareil de contacter certains domaines ou sites Web connus pour distribuer des publicités, des logiciels malveillants, des trackers et plus."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "När den här funktionen är aktiverad stoppas enheten från att kontakta vissa domäner eller webbplatser som är kända för att sprida annonser, skadlig kod, spårare med mera."
- }
- }
- }
+
},
"When using DAITA, one provider with DAITA-enabled servers is required." : {
},
"Which TCP port the UDP-over-TCP obfuscation protocol should connect to on the VPN server." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mit welchem TCP-Port sich das UDP-über-TCP-Verschleierungsprotokoll auf dem VPN-Server verbinden soll."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Le port TCP auquel le protocole de dissimulation UDP sur TCP doit se connecter sur le serveur VPN."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vilken TCP-port som UDP-över-TCP-obfuskeringsprotokoll bör ansluta till på VPN-servern."
- }
- }
- }
+
},
"WireGuard obfuscation" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "WireGuard-Verschleierung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Obfuscation WireGuard"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "WireGuard-obfuskering"
- }
- }
- }
+
},
"WireGuard port" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "WireGuard-Port"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Port WireGuard"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "WireGuard-port"
- }
- }
- }
+
},
"With the “Direct” method, the app communicates with a Mullvad API server directly without any intermediate proxies." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mit der Methode „Direkt“ kommuniziert die App direkt mit einem Mullvad API-Server ohne zwischengeschaltete Proxys."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Avec le mode « Direct », l'application communique directement avec un serveur d'API Mullvad, sans passer par des proxys intermédiaires."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Med metoden \"Direkt\" kommunicerar appen med en Mullvad API-server direkt utan mellanliggande proxyservrar."
- }
- }
- }
+
},
"With the “Encrypted DNS proxy” method, the app will communicate with our Mullvad API through a proxy address. It does this by retrieving an address from a DNS over HTTPS (DoH) server and then using that to reach our API servers." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mit der Methode „Verschlüsseltes-DNS-Proxy“ kommuniziert die App mit unserer Mullvad-API über eine Proxy-Adresse. Sie tut dies, indem sie eine Adresse von einem DNS-over-HTTPS-Server (DoH) abruft und dann diese verwendet, um unsere API-Server zu erreichen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Avec la méthode « proxy DNS chiffré », l'application communiquera avec notre API Mullvad par le biais d'une adresse proxy. Pour ce faire, elle récupère une adresse auprès d'un serveur DNS over HTTPS (DoH) et l'utilise pour atteindre nos serveurs API."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Med metoden \"Krypterad DNS-proxy\" kommunicerar appen med vår Mullvad API via en proxyadress. Den gör det genom att hämta en adress från en DNS over HTTPS-server (DoH) och sedan använda den för att nå våra API-servrar."
- }
- }
- }
+
},
"With the “Mullvad bridges” method, the app communicates with a Mullvad API server via a Mullvad bridge server. It does this by sending the traffic obfuscated by Shadowsocks." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mit „Mullvad-Brücken“ kommuniziert die App mit einem Mullvad API-Server über einen Mullvad Brücken-Server. Dazu sendet sie den von Shadowsocks verschleierten Traffic."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dans la méthode « Ponts Mullvad », l'application communique avec un serveur d'API Mullvad via un serveur pont Mullvad. Pour ce faire, elle envoie le trafic obscurci par Shadowsocks."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Med metoden \"Mullvad-broar\" kommunicerar appen med en Mullvad API-server via en Mullvad-broserver. Den gör det genom att skicka trafiken som obfuskeras av Shadowsocks."
- }
- }
- }
+
},
"Yes, continue" : {
},
"Yes, log out device" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ja, von Gerät abmelden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Oui, déconnecter l'appareil"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ja, logga ut enheten"
- }
- }
- }
+
},
"You already have a saved account number, by creating a new account the saved account number will be removed from this device. This cannot be undone." : {
},
"You are about to send the problem report without a way for us to get back to you. If you want an answer to your report you will have to enter an email address." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sie wollen einen Problembericht senden, ohne uns die Möglichkeit zu geben, Sie zu erreichen. Wenn Sie sich eine Antwort zu Ihrem Problem wünschen, müssen Sie eine E-Mail-Adresse eingeben."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vous êtes sur le point d'envoyer un signalement de problème sans nous fournir un moyen de vous contacter. Si vous désirez une réponse à votre signalement, vous devez saisir une adresse e-mail."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Du är på väg att skicka problemrapporten utan att vi har möjlighet att besvara dig. Om du vill ha svar på din rapport måste du ange en e-postadress."
- }
- }
- }
+
},
"You are logged in with an invalid account number. Please log out and try another one." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sie sind mit einer ungültigen Kontonummer angemeldet. Bitte melden Sie sich ab und versuchen Sie es mit einer anderen."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vous vous êtes connecté(e) avec un numéro de compte non valide. Veuillez vous déconnecter et en essayer un autre."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Du är inloggad med ett ogiltigt kontonummer. Logga ut och försök med ett annat."
- }
- }
- }
+
},
"You can add more time via the account view or website to continue using the VPN." : {
},
"You can have up to 5 devices logged in on one Mullvad account." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Es sind pro Mullvad-Konto bis zu 5 angemeldete Geräte möglich."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vous pouvez connecter jusqu'à 5 appareils au même compte Mullvad."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Upp till fem enheter kan vara inloggade på ett Mullvad-konto."
- }
- }
- }
+
},
"You can now continue logging in on this device." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sie können jetzt mit der Anmeldung auf diesem Gerät fortfahren."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vous pouvez maintenant continuer la connexion sur cet appareil."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Du kan nu fortsätta med att logga in på den här enheten."
- }
- }
- }
+
},
"You can use the \"restore purchases\" function to check for any in-app payments made via Apple services. If there is a payment that has not been credited, it will add the time to the currently logged in Mullvad account." : {
@@ -5057,117 +1155,28 @@
},
"You have no more VPN time left on this account. " : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sie haben keine VPN-Zeit mehr auf diesem Konto. "
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vous n'avez plus de temps de VPN sur ce compte. "
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Du har ingen VPN-tid kvar på det här kontot. "
- }
- }
- }
+
},
"You have one day left on this account. Please add more time to continue using the VPN." : {
},
"You have removed this device. To connect again, you will need to log back in." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sie haben dieses Gerät entfernt. Um sich erneut zu verbinden, müssen Sie sich erneut anmelden."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vous avez supprimé cet appareil. Vous devrez vous reconnecter pour connecter cet appareil à nouveau."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Du har tagit bort den här enheten. Du måste logga in igen för att återansluta."
- }
- }
- }
+
},
"You have unsaved changes." : {
},
- "You’re all set!!" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sie sind startklar!!"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Du är klar!!"
- }
- }
- }
+ "You’re all set!" : {
+
},
"Your device is offline. The tunnel will automatically connect once your device is back online." : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ihr Gerät ist offline. Der Tunnel wird automatisch verbunden, sobald Ihr Gerät wieder online ist."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Votre appareil est hors ligne. Le tunnel se connectera automatiquement une fois votre appareil à nouveau en ligne."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Din enhet är offline. Tunneln ansluts automatiskt när din enhet är online igen."
- }
- }
- }
+
},
"Your device is offline. Try connecting again when the device has access to Internet." : {
},
"Your email (optional)" : {
- "localizations" : {
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ihre E-Mail-Adresse (optional)"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Votre e-mail (facultatif)"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Din e-postadress (valfritt)"
- }
- }
- }
+
},
"Your previous purchases have already been added to this account." : {
diff --git a/ios/MullvadVPN.xcodeproj/project.pbxproj b/ios/MullvadVPN.xcodeproj/project.pbxproj
index e69030542e..ef675466ee 100644
--- a/ios/MullvadVPN.xcodeproj/project.pbxproj
+++ b/ios/MullvadVPN.xcodeproj/project.pbxproj
@@ -999,9 +999,6 @@
F072D3CF2C07122400906F64 /* SettingsUpdaterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F072D3CE2C07122400906F64 /* SettingsUpdaterTests.swift */; };
F072D3D22C071AD100906F64 /* ShadowsocksLoaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F072D3D12C071AD100906F64 /* ShadowsocksLoaderTests.swift */; };
F073FCB32C6617D70062EA1D /* TunnelStore+Stubs.swift in Sources */ = {isa = PBXBuildFile; fileRef = F073FCB22C6617D70062EA1D /* TunnelStore+Stubs.swift */; };
- F075C15C2E96A0C600B3C769 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F075C15B2E96A0C600B3C769 /* Localizable.xcstrings */; };
- F075C15D2E96A0C600B3C769 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F075C15B2E96A0C600B3C769 /* Localizable.xcstrings */; };
- F075C15E2E96A0C600B3C769 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F075C15B2E96A0C600B3C769 /* Localizable.xcstrings */; };
F07751552C50F149006E6A12 /* EphemeralPeerExchangeActorStub.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C4C9BF2C495E7500A79006 /* EphemeralPeerExchangeActorStub.swift */; };
F07751572C50F149006E6A12 /* EphemeralPeerExchangingPipelineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F053F4B92C4A94D300FBD937 /* EphemeralPeerExchangingPipelineTests.swift */; };
F07751582C50F149006E6A12 /* MultiHopEphemeralPeerExchangerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C4C9BD2C49477B00A79006 /* MultiHopEphemeralPeerExchangerTests.swift */; };
@@ -1058,6 +1055,9 @@
F0ADF1D12D01B55C00299F09 /* ChipModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0ADF1D02D01B55C00299F09 /* ChipModel.swift */; };
F0ADF1D32D01B6B400299F09 /* FeatureIndicatorsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0ADF1D22D01B6B400299F09 /* FeatureIndicatorsViewModel.swift */; };
F0ADF1D52D01DCFD00299F09 /* ChipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0ADF1D42D01DCFD00299F09 /* ChipView.swift */; };
+ F0B06BC22EAA4191008C0A0B /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0B06BC12EAA4191008C0A0B /* Localizable.xcstrings */; };
+ F0B06BC32EAA4191008C0A0B /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0B06BC12EAA4191008C0A0B /* Localizable.xcstrings */; };
+ F0B06BC42EAA4191008C0A0B /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0B06BC12EAA4191008C0A0B /* Localizable.xcstrings */; };
F0B0E6972AFE6E7E001DC66B /* XCTest+Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0B0E6962AFE6E7E001DC66B /* XCTest+Async.swift */; };
F0B495762D02025200CFEC2A /* ChipContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0B495752D02025200CFEC2A /* ChipContainerView.swift */; };
F0B495782D02038B00CFEC2A /* ChipViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0B495772D02038B00CFEC2A /* ChipViewModelProtocol.swift */; };
@@ -2475,7 +2475,6 @@
F072D3CE2C07122400906F64 /* SettingsUpdaterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsUpdaterTests.swift; sourceTree = "<group>"; };
F072D3D12C071AD100906F64 /* ShadowsocksLoaderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShadowsocksLoaderTests.swift; sourceTree = "<group>"; };
F073FCB22C6617D70062EA1D /* TunnelStore+Stubs.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "TunnelStore+Stubs.swift"; sourceTree = "<group>"; };
- F075C15B2E96A0C600B3C769 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; };
F0791F1A2D76377400449F6D /* RelayCandidates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayCandidates.swift; sourceTree = "<group>"; };
F07B53562C53B5270024F547 /* LocalNetworkIPs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalNetworkIPs.swift; sourceTree = "<group>"; };
F07BF2572A26112D00042943 /* InputTextFormatterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputTextFormatterTests.swift; sourceTree = "<group>"; };
@@ -2514,6 +2513,7 @@
F0ADF1D22D01B6B400299F09 /* FeatureIndicatorsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureIndicatorsViewModel.swift; sourceTree = "<group>"; };
F0ADF1D42D01DCFD00299F09 /* ChipView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChipView.swift; sourceTree = "<group>"; };
F0AE6DB72E4A3285001A7B23 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ F0B06BC12EAA4191008C0A0B /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; };
F0B0E6962AFE6E7E001DC66B /* XCTest+Async.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "XCTest+Async.swift"; sourceTree = "<group>"; };
F0B495752D02025200CFEC2A /* ChipContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChipContainerView.swift; sourceTree = "<group>"; };
F0B495772D02038B00CFEC2A /* ChipViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChipViewModelProtocol.swift; sourceTree = "<group>"; };
@@ -4224,7 +4224,7 @@
children = (
5859A55429CD9DD800F66591 /* changes.txt */,
587DCCEE287D84A500CE821E /* countries.geo.json */,
- F075C15B2E96A0C600B3C769 /* Localizable.xcstrings */,
+ F0B06BC12EAA4191008C0A0B /* Localizable.xcstrings */,
);
path = Assets;
sourceTree = "<group>";
@@ -5702,7 +5702,7 @@
58727283265D173C00F315B2 /* LaunchScreen.storyboard in Resources */,
5859A55529CD9DD900F66591 /* changes.txt in Resources */,
587DCCEF287D84A500CE821E /* countries.geo.json in Resources */,
- F075C15C2E96A0C600B3C769 /* Localizable.xcstrings in Resources */,
+ F0B06BC22EAA4191008C0A0B /* Localizable.xcstrings in Resources */,
58CE5E6B224146210008646E /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -5726,7 +5726,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- F075C15D2E96A0C600B3C769 /* Localizable.xcstrings in Resources */,
+ F0B06BC32EAA4191008C0A0B /* Localizable.xcstrings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -5783,7 +5783,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- F075C15E2E96A0C600B3C769 /* Localizable.xcstrings in Resources */,
+ F0B06BC42EAA4191008C0A0B /* Localizable.xcstrings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/ios/MullvadVPN/Coordinators/CustomLists/AddCustomListCoordinator.swift b/ios/MullvadVPN/Coordinators/CustomLists/AddCustomListCoordinator.swift
index b11bbda73d..6e99df6eb0 100644
--- a/ios/MullvadVPN/Coordinators/CustomLists/AddCustomListCoordinator.swift
+++ b/ios/MullvadVPN/Coordinators/CustomLists/AddCustomListCoordinator.swift
@@ -43,7 +43,7 @@ class AddCustomListCoordinator: Coordinator, Presentable, Presenting {
)
controller.delegate = self
- controller.navigationItem.title = NSLocalizedString("New custom list", comment: "")
+ controller.navigationItem.title = NSLocalizedString("Create new list", comment: "")
controller.saveBarButton.title = NSLocalizedString("Create", comment: "")
diff --git a/ios/MullvadVPN/Coordinators/CustomLists/AddLocationsCoordinator.swift b/ios/MullvadVPN/Coordinators/CustomLists/AddLocationsCoordinator.swift
index 018dc9257b..ae4fd28cbc 100644
--- a/ios/MullvadVPN/Coordinators/CustomLists/AddLocationsCoordinator.swift
+++ b/ios/MullvadVPN/Coordinators/CustomLists/AddLocationsCoordinator.swift
@@ -40,7 +40,7 @@ class AddLocationsCoordinator: Coordinator, Presentable, Presenting {
)
controller.delegate = self
- controller.navigationItem.title = NSLocalizedString("Add locations", comment: "")
+ controller.navigationItem.title = NSLocalizedString("Locations", comment: "")
navigationController.pushViewController(controller, animated: true)
}
diff --git a/ios/MullvadVPN/Coordinators/CustomLists/CustomListItemIdentifier.swift b/ios/MullvadVPN/Coordinators/CustomLists/CustomListItemIdentifier.swift
index 37a479681f..978dde21c9 100644
--- a/ios/MullvadVPN/Coordinators/CustomLists/CustomListItemIdentifier.swift
+++ b/ios/MullvadVPN/Coordinators/CustomLists/CustomListItemIdentifier.swift
@@ -41,10 +41,8 @@ enum CustomListItemIdentifier: Hashable, CaseIterable {
switch self {
case .name:
NSLocalizedString("Name", comment: "")
- case .addLocations:
- NSLocalizedString("Add locations", comment: "")
- case .editLocations:
- NSLocalizedString("Edit locations", comment: "")
+ case .addLocations, .editLocations:
+ NSLocalizedString("Locations", comment: "")
case .deleteList:
NSLocalizedString("Delete list", comment: "")
}
diff --git a/ios/MullvadVPN/Coordinators/CustomLists/EditLocationsCoordinator.swift b/ios/MullvadVPN/Coordinators/CustomLists/EditLocationsCoordinator.swift
index 4b426ff377..e36e02645c 100644
--- a/ios/MullvadVPN/Coordinators/CustomLists/EditLocationsCoordinator.swift
+++ b/ios/MullvadVPN/Coordinators/CustomLists/EditLocationsCoordinator.swift
@@ -41,7 +41,7 @@ class EditLocationsCoordinator: Coordinator, Presentable, Presenting {
)
controller.delegate = self
- controller.navigationItem.title = NSLocalizedString("Edit locations", comment: "")
+ controller.navigationItem.title = NSLocalizedString("Locations", comment: "")
navigationController.pushViewController(controller, animated: true)
}
}
diff --git a/ios/MullvadVPN/Coordinators/LocationCoordinator.swift b/ios/MullvadVPN/Coordinators/LocationCoordinator.swift
index 6a40cd0029..744f7f037f 100644
--- a/ios/MullvadVPN/Coordinators/LocationCoordinator.swift
+++ b/ios/MullvadVPN/Coordinators/LocationCoordinator.swift
@@ -191,7 +191,7 @@ extension LocationCoordinator: @preconcurrency LocationViewControllerWrapperDele
actionSheet.view.tintColor = .AlertController.tintColor
let addCustomListAction = UIAlertAction(
- title: NSLocalizedString("Add new list", comment: ""),
+ title: NSLocalizedString("Create new list", comment: ""),
style: .default,
handler: { [weak self] _ in
self?.showAddCustomList(nodes: nodes)
@@ -201,7 +201,7 @@ extension LocationCoordinator: @preconcurrency LocationViewControllerWrapperDele
actionSheet.addAction(addCustomListAction)
let editAction = UIAlertAction(
- title: NSLocalizedString("Edit lists", comment: ""),
+ title: NSLocalizedString("Edit custom lists", comment: ""),
style: .default,
handler: { [weak self] _ in
self?.showEditCustomLists(nodes: nodes)
diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodCoordinator.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodCoordinator.swift
index 997c3fd44d..d8fc48a887 100644
--- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodCoordinator.swift
+++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodCoordinator.swift
@@ -76,7 +76,7 @@ extension EditAccessMethodCoordinator: @preconcurrency EditAccessMethodViewContr
controller.navigationItem.prompt = NSLocalizedString("The app will test the method before saving.", comment: "")
- controller.navigationItem.title = NSLocalizedString("Method settings", comment: "")
+ controller.navigationItem.title = NSLocalizedString("Edit method", comment: "")
controller.saveBarButton.title = NSLocalizedString("Save", comment: "")
diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodItemIdentifier.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodItemIdentifier.swift
index f8cd3205c9..74a7332511 100644
--- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodItemIdentifier.swift
+++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodItemIdentifier.swift
@@ -56,7 +56,7 @@ enum EditAccessMethodItemIdentifier: Hashable {
case .enableMethod:
NSLocalizedString("Enable method", comment: "")
case .methodSettings:
- NSLocalizedString("Method settings", comment: "")
+ NSLocalizedString("Edit method", comment: "")
case .testMethod:
NSLocalizedString("Test method", comment: "")
case .cancelTest:
diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift
index d4b9e9763e..4f324bfcd3 100644
--- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift
+++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift
@@ -364,10 +364,7 @@ extension EditAccessMethodViewController: UITableViewDelegate {
}
private func onDelete() {
- let methodName =
- subject.value.name.isEmpty
- ? NSLocalizedString("method", comment: "")
- : subject.value.name
+ let methodName = subject.value.name
let presentation = AlertPresentation(
id: "api-access-methods-delete-method-alert",
diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodView.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodView.swift
index 6b8c418d31..b6c305e338 100644
--- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodView.swift
+++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodView.swift
@@ -68,7 +68,7 @@ struct ListAccessMethodView<ViewModel>: View where ViewModel: ListAccessViewMode
viewModel.itemInUse?.id == item.id
? NSLocalizedString("In use", comment: "")
: (!item.isEnabled
- ? NSLocalizedString("Disabled", comment: "")
+ ? NSLocalizedString("Off", comment: "")
: nil)
MullvadListNavigationItemView(
item: MullvadListNavigationItem(
diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodValidationError.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodValidationError.swift
index 503a6b5de8..ac6627d40d 100644
--- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodValidationError.swift
+++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodValidationError.swift
@@ -15,11 +15,7 @@ struct AccessMethodValidationError: LocalizedError, Equatable {
let fieldErrors: [AccessMethodFieldValidationError]
var errorDescription: String? {
- if fieldErrors.count > 1 {
- NSLocalizedString("Multiple validation errors occurred.", comment: "")
- } else {
- fieldErrors.first?.localizedDescription
- }
+ fieldErrors.map({ $0.localizedDescription }).joinedParagraphs(lineBreaks: 1)
}
}
@@ -74,7 +70,7 @@ struct AccessMethodFieldValidationError: LocalizedError, Equatable {
case .invalidIPAddress:
NSLocalizedString("Please enter a valid IPv4 or IPv6 address.", comment: "")
case .invalidPort:
- NSLocalizedString("Please enter a valid port.", comment: "")
+ NSLocalizedString("Please enter a valid remote server port.", comment: "")
case .nameTooLong:
String(
format: NSLocalizedString("Name should be no longer than %i characters.", comment: ""),
diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodViewModel.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodViewModel.swift
index 14ebb9ab60..0fb242f3dc 100644
--- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodViewModel.swift
+++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodViewModel.swift
@@ -82,7 +82,7 @@ extension AccessMethodViewModel {
case AccessMethodRepository.directId:
InfoHeaderConfig(
body: NSLocalizedString("The app communicates with a Mullvad API server directly.", comment: ""),
- link: NSLocalizedString("About Direct method...", comment: "")
+ link: String(format: NSLocalizedString("About %@ method...", comment: ""), "Direct")
)
case AccessMethodRepository.bridgeId:
InfoHeaderConfig(
@@ -90,7 +90,7 @@ extension AccessMethodViewModel {
"The app communicates with a Mullvad API server via a Mullvad bridge server.",
comment: ""
),
- link: NSLocalizedString("About Mullvad bridges method...", comment: "")
+ link: String(format: NSLocalizedString("About %@ method...", comment: ""), "Mullvad bridges")
)
case AccessMethodRepository.encryptedDNSId:
InfoHeaderConfig(
@@ -98,7 +98,7 @@ extension AccessMethodViewModel {
"The app communicates with a Mullvad API server via a proxy address.",
comment: ""
),
- link: NSLocalizedString("About Encrypted DNS proxy method...", comment: "")
+ link: String(format: NSLocalizedString("About %@ method...", comment: ""), "Encrypted DNS proxy")
)
default:
nil
@@ -155,9 +155,11 @@ extension AccessMethodViewModel {
comment: ""
),
NSLocalizedString(
- "If you are not connected to our VPN, then the Encrypted DNS proxy will use "
- + "your own non-VPN IP when connecting. The DoH servers are hosted by one of the "
- + "following providers: Quad9 or Cloudflare.",
+ """
+ If you are not connected to our VPN, then the Encrypted DNS proxy will \
+ use your own non-VPN IP when connecting. The DoH servers are hosted by \
+ one of the following providers: Quad9 or CloudFlare.
+ """,
comment: ""
),
]
diff --git a/ios/MullvadVPN/Coordinators/Settings/DAITA/DAITASettingsCoordinator.swift b/ios/MullvadVPN/Coordinators/Settings/DAITA/DAITASettingsCoordinator.swift
index bdcae2d1ec..aa3db3e6a9 100644
--- a/ios/MullvadVPN/Coordinators/Settings/DAITA/DAITASettingsCoordinator.swift
+++ b/ios/MullvadVPN/Coordinators/Settings/DAITA/DAITASettingsCoordinator.swift
@@ -86,7 +86,7 @@ class DAITASettingsCoordinator: Coordinator, SettingsChildCoordinator, Presentab
message: item.description,
buttons: [
AlertAction(
- title: String(format: NSLocalizedString("Enable \"%@\"", comment: ""), item.title),
+ title: "\(NSLocalizedString("Enable", comment: "")) \"\(item.title)\"",
style: .default,
accessibilityId: .daitaConfirmAlertEnableButton,
handler: { onSave() }
diff --git a/ios/MullvadVPN/Coordinators/Settings/DAITA/SettingsDAITAView.swift b/ios/MullvadVPN/Coordinators/Settings/DAITA/SettingsDAITAView.swift
index 4eea9be2ef..436d6c14fd 100644
--- a/ios/MullvadVPN/Coordinators/Settings/DAITA/SettingsDAITAView.swift
+++ b/ios/MullvadVPN/Coordinators/Settings/DAITA/SettingsDAITAView.swift
@@ -106,7 +106,7 @@ extension SettingsDAITAView {
extension SettingsDAITAView {
private var dataViewModel: SettingsInfoViewModel {
- let daitafullTitle = NSLocalizedString("Defense against AI-guided Traffic Analysis", comment: "")
+ let daitafullTitle = "Defense against AI-guided Traffic Analysis"
let daitaTitle = NSLocalizedString("DAITA", comment: "")
return SettingsInfoViewModel(
pages: [
diff --git a/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideInteractor.swift b/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideInteractor.swift
index f4076787e3..a2e888fa75 100644
--- a/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideInteractor.swift
+++ b/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideInteractor.swift
@@ -39,7 +39,7 @@ final class IPOverrideInteractor {
func `import`(url: URL) {
let data = (try? Data(contentsOf: url)) ?? Data()
- handleImport(of: data, context: .file)
+ handleImport(of: data, context: .file(fileName: url.lastPathComponent))
}
func `import`(text: String) {
diff --git a/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatus.swift b/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatus.swift
index f6c1b4d0f0..baca524964 100644
--- a/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatus.swift
+++ b/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatus.swift
@@ -13,28 +13,19 @@ enum IPOverrideStatus: Equatable, CustomStringConvertible {
case importSuccessful(Context)
case importFailed(Context)
- enum Context {
- case file, text
-
- // Used in "statusDescription" below to form a complete sentence and therefore not localized here.
- var description: String {
- switch self {
- case .file:
- NSLocalizedString("file", comment: "")
- case .text:
- NSLocalizedString("text", comment: "")
- }
- }
+ enum Context: Equatable {
+ case text
+ case file(fileName: String)
}
var title: String {
switch self {
case .active:
- NSLocalizedString("Overrides active", comment: "")
+ NSLocalizedString("OVERRIDES ACTIVE", comment: "")
case .noImports, .importFailed:
- NSLocalizedString("No overrides imported", comment: "")
+ NSLocalizedString("NO OVERRIDES IMPORTED", comment: "")
case .importSuccessful:
- NSLocalizedString("Import successful", comment: "")
+ NSLocalizedString("IMPORT SUCCESSFUL", comment: "")
}
}
@@ -62,15 +53,25 @@ enum IPOverrideStatus: Equatable, CustomStringConvertible {
case .active, .noImports:
""
case let .importFailed(context):
- String(
- format: NSLocalizedString("Import of %@ was unsuccessful, please try again.", comment: ""),
- context.description
- )
+ switch context {
+ case .file(let fileName):
+ String(
+ format: NSLocalizedString("Import of %@ was unsuccessful, please try again.", comment: ""),
+ fileName
+ )
+ case .text:
+ NSLocalizedString("Import of text was unsuccessful, please try again.", comment: "")
+ }
case let .importSuccessful(context):
- String(
- format: NSLocalizedString("Import of %@ was successful, overrides are now active.", comment: ""),
- context.description
- )
+ switch context {
+ case .file(let fileName):
+ String(
+ format: NSLocalizedString("Import of %@ was successful, overrides are now active.", comment: ""),
+ fileName
+ )
+ case .text:
+ NSLocalizedString("Import of text was successful, overrides are now active.", comment: "")
+ }
}
}
}
diff --git a/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatusView.swift b/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatusView.swift
index ba61d67066..1259215d50 100644
--- a/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatusView.swift
+++ b/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatusView.swift
@@ -64,7 +64,7 @@ class IPOverrideStatusView: UIView {
}
func setStatus(_ status: IPOverrideStatus) {
- titleLabel.text = status.title.uppercased()
+ titleLabel.text = status.title
titleLabel.numberOfLines = 0
statusIcon.image = status.icon
descriptionLabel.text = status.description
diff --git a/ios/MullvadVPN/Extensions/StorePaymentManagerError+Display.swift b/ios/MullvadVPN/Extensions/StorePaymentManagerError+Display.swift
index 39f00e8fac..aa2dda62f5 100644
--- a/ios/MullvadVPN/Extensions/StorePaymentManagerError+Display.swift
+++ b/ios/MullvadVPN/Extensions/StorePaymentManagerError+Display.swift
@@ -20,7 +20,7 @@ extension StorePaymentManagerError: DisplayError {
let reason = (error as? DisplayError)?.displayErrorDescription ?? ""
return String(
- format: NSLocalizedString("Failed to validate account number: %@", comment: ""), reason
+ format: NSLocalizedString("Invalid account number: %@", comment: ""), reason
)
case let .readReceipt(readReceiptError):
diff --git a/ios/MullvadVPN/Notifications/Notification Providers/NewDeviceNotificationProvider.swift b/ios/MullvadVPN/Notifications/Notification Providers/NewDeviceNotificationProvider.swift
index ec799437a7..dcdc7dc087 100644
--- a/ios/MullvadVPN/Notifications/Notification Providers/NewDeviceNotificationProvider.swift
+++ b/ios/MullvadVPN/Notifications/Notification Providers/NewDeviceNotificationProvider.swift
@@ -27,7 +27,7 @@ final class NewDeviceNotificationProvider: NotificationProvider,
private var attributedBody: NSAttributedString {
let formattedString = NSLocalizedString(
- "Welcome, this device is now called **%@**. For more details see the info button in Account.",
+ "This device is now named **%@**. See more under \"Manage devices\" in Account.",
comment: ""
)
let deviceName = storedDeviceData?.capitalizedName ?? ""
diff --git a/ios/MullvadVPN/Notifications/Notification Providers/TunnelStatusNotificationProvider.swift b/ios/MullvadVPN/Notifications/Notification Providers/TunnelStatusNotificationProvider.swift
index e3a7ba344b..12d626762e 100644
--- a/ios/MullvadVPN/Notifications/Notification Providers/TunnelStatusNotificationProvider.swift
+++ b/ios/MullvadVPN/Notifications/Notification Providers/TunnelStatusNotificationProvider.swift
@@ -206,8 +206,7 @@ final class TunnelStatusNotificationProvider: NotificationProvider, InAppNotific
body: .init(
string: NSLocalizedString(
"""
- Your device is offline. The tunnel will automatically connect once \
- your device is back online.
+ Your device is offline. The tunnel will automatically connect once your device is back online.
""",
comment: ""
)
diff --git a/ios/MullvadVPN/StorePaymentManager/StoreSubscription.swift b/ios/MullvadVPN/StorePaymentManager/StoreSubscription.swift
index f09bd8752f..76512558cc 100644
--- a/ios/MullvadVPN/StorePaymentManager/StoreSubscription.swift
+++ b/ios/MullvadVPN/StorePaymentManager/StoreSubscription.swift
@@ -17,9 +17,9 @@ enum StoreSubscription: String, CaseIterable {
var localizedTitle: String {
switch self {
case .thirtyDays:
- return NSLocalizedString("Add 30 days", comment: "")
+ return NSLocalizedString("Add 30 days time (%@)", comment: "")
case .ninetyDays:
- return NSLocalizedString("Add 90 days", comment: "")
+ return NSLocalizedString("Add 90 days time (%@)", comment: "")
}
}
}
@@ -31,7 +31,7 @@ extension SKProduct {
else {
return nil
}
- return "\(localizedTitle) (\(localizedPrice))"
+ return String(format: localizedTitle, localizedPrice)
}
}
diff --git a/ios/MullvadVPN/View controllers/CreationAccount/Completed/SetupAccountCompletedContentView.swift b/ios/MullvadVPN/View controllers/CreationAccount/Completed/SetupAccountCompletedContentView.swift
index 1267dc58bf..319c4107fd 100644
--- a/ios/MullvadVPN/View controllers/CreationAccount/Completed/SetupAccountCompletedContentView.swift
+++ b/ios/MullvadVPN/View controllers/CreationAccount/Completed/SetupAccountCompletedContentView.swift
@@ -21,7 +21,7 @@ class SetupAccountCompletedContentView: UIView {
label.adjustsFontForContentSizeCategory = true
label.lineBreakMode = .byWordWrapping
label.numberOfLines = .zero
- label.text = NSLocalizedString("You’re all set!!", comment: "")
+ label.text = NSLocalizedString("You’re all set!", comment: "")
return label
}()
diff --git a/ios/MullvadVPN/View controllers/Login/AccountInputGroupView.swift b/ios/MullvadVPN/View controllers/Login/AccountInputGroupView.swift
index 57e33bebf5..a5e79f70e4 100644
--- a/ios/MullvadVPN/View controllers/Login/AccountInputGroupView.swift
+++ b/ios/MullvadVPN/View controllers/Login/AccountInputGroupView.swift
@@ -25,7 +25,7 @@ final class AccountInputGroupView: UIView {
button.setImage(UIImage.Buttons.rightArrow, for: .normal)
button.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
button.setAccessibilityIdentifier(.loginTextFieldButton)
- button.accessibilityLabel = NSLocalizedString("Log in", comment: "")
+ button.accessibilityLabel = NSLocalizedString("Login", comment: "")
return button
}()
diff --git a/ios/MullvadVPN/View controllers/Login/LoginViewController.swift b/ios/MullvadVPN/View controllers/Login/LoginViewController.swift
index 13d0038c1e..7189409826 100644
--- a/ios/MullvadVPN/View controllers/Login/LoginViewController.swift
+++ b/ios/MullvadVPN/View controllers/Login/LoginViewController.swift
@@ -49,7 +49,7 @@ class LoginViewController: UIViewController, RootContainment {
private lazy var accountInputAccessoryLoginButton: UIBarButtonItem = {
let barButtonItem = UIBarButtonItem(
- title: NSLocalizedString("Log in", comment: ""),
+ title: NSLocalizedString("Login", comment: ""),
style: .done,
target: self,
action: #selector(doLogin)
@@ -415,7 +415,7 @@ private extension LoginState {
case .useExistingAccount:
return NSLocalizedString("Checking account number", comment: "")
case .createAccount:
- return NSLocalizedString("Creating new account", comment: "")
+ return NSLocalizedString("Creating account...", comment: "")
}
case let .failure(_, error):
@@ -424,7 +424,7 @@ private extension LoginState {
case let .success(method):
switch method {
case .useExistingAccount:
- return NSLocalizedString("Correct account number", comment: "")
+ return NSLocalizedString("Valid account number", comment: "")
case .createAccount:
return NSLocalizedString("Account created", comment: "")
}
diff --git a/ios/MullvadVPN/View controllers/RedeemVoucher/RedeemVoucherContentView.swift b/ios/MullvadVPN/View controllers/RedeemVoucher/RedeemVoucherContentView.swift
index 89fcc7004b..25586eb0e7 100644
--- a/ios/MullvadVPN/View controllers/RedeemVoucher/RedeemVoucherContentView.swift
+++ b/ios/MullvadVPN/View controllers/RedeemVoucher/RedeemVoucherContentView.swift
@@ -344,7 +344,7 @@ private extension REST.Error {
if compareErrorCode(.invalidVoucher) {
return NSLocalizedString("Voucher code is invalid.", comment: "")
} else if compareErrorCode(.usedVoucher) {
- return NSLocalizedString("This voucher code has already been used.", comment: "")
+ return NSLocalizedString("Voucher code has already been used.", comment: "")
}
return displayErrorDescription ?? ""
}
diff --git a/ios/MullvadVPN/View controllers/RelayFilter/FilterDescriptor.swift b/ios/MullvadVPN/View controllers/RelayFilter/FilterDescriptor.swift
index 093ca091de..501d754130 100644
--- a/ios/MullvadVPN/View controllers/RelayFilter/FilterDescriptor.swift
+++ b/ios/MullvadVPN/View controllers/RelayFilter/FilterDescriptor.swift
@@ -39,7 +39,7 @@ struct FilterDescriptor {
var title: String {
guard isEnabled else {
- return NSLocalizedString("No matching servers", comment: "")
+ return NSLocalizedString("No matching servers found.", comment: "")
}
return createTitleForAvailableServers()
}
diff --git a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSourceItem.swift b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSourceItem.swift
index 7a9d678473..825b4ba58a 100644
--- a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSourceItem.swift
+++ b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSourceItem.swift
@@ -25,13 +25,13 @@ struct RelayFilterDataSourceItem: Hashable, Comparable {
)
static let ownedOwnershipItem = RelayFilterDataSourceItem(
- name: NSLocalizedString("Owned", comment: ""),
+ name: NSLocalizedString("Mullvad owned only", comment: ""),
type: .ownershipOwned,
isEnabled: true
)
static let rentedOwnershipItem = RelayFilterDataSourceItem(
- name: NSLocalizedString("Rented", comment: ""),
+ name: NSLocalizedString("Rented only", comment: ""),
type: .ownershipRented,
isEnabled: true
)
diff --git a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterViewModel.swift b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterViewModel.swift
index 82686a300e..7108d465ed 100644
--- a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterViewModel.swift
+++ b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterViewModel.swift
@@ -109,7 +109,7 @@ final class RelayFilterViewModel {
return RelayFilterDataSourceItem(
name: providerName,
description: isDaitaEnabled && isProviderEnabled
- ? NSLocalizedString("DAITA-enabled", comment: "")
+ ? String(format: NSLocalizedString("%@-enabled", comment: ""), "DAITA")
: "",
type: .provider,
// If the current filter is valid, return true immediately.
diff --git a/ios/MullvadVPN/View controllers/Settings/Obfuscation/UDPOverTCPObfuscationSettingsView.swift b/ios/MullvadVPN/View controllers/Settings/Obfuscation/UDPOverTCPObfuscationSettingsView.swift
index 544ca5d24f..cf80d25437 100644
--- a/ios/MullvadVPN/View controllers/Settings/Obfuscation/UDPOverTCPObfuscationSettingsView.swift
+++ b/ios/MullvadVPN/View controllers/Settings/Obfuscation/UDPOverTCPObfuscationSettingsView.swift
@@ -20,10 +20,7 @@ struct UDPOverTCPObfuscationSettingsView<VM>: View where VM: UDPOverTCPObfuscati
value: $viewModel.value,
tableAccessibilityIdentifier: AccessibilityIdentifier.wireGuardObfuscationUdpOverTcpTable.asString,
itemDescription: { item in
- String(
- format: NSLocalizedString("%@", comment: ""),
- "\(item)"
- )
+ "\(item)"
}
).onDisappear {
viewModel.commit()
diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift
index 5c92ba303b..5fd4448157 100644
--- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift
+++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift
@@ -37,7 +37,7 @@ struct DaitaFeature: ChipFeature {
// When multihop is enabled via DAITA without being explicitly enabled
// by the user, display combined indicator instead.
state.isMultihop && !settings.tunnelMultihopState.isEnabled
- ? String(format: NSLocalizedString("%@: Multihop", comment: ""), NSLocalizedString("DAITA", comment: ""))
+ ? "\(NSLocalizedString("DAITA", comment: "")): \(NSLocalizedString("Multihop", comment: ""))"
: NSLocalizedString("DAITA", comment: "")
}
}
diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift
index e5b20db704..6bdc2cf69f 100644
--- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift
+++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift
@@ -102,19 +102,19 @@ extension ConnectionViewViewModel {
var localizedTitleForSecureLabel: LocalizedStringKey {
switch tunnelStatus.state {
case .connecting, .reconnecting, .negotiatingEphemeralPeer:
- LocalizedStringKey("Connecting...")
+ LocalizedStringKey("CONNECTING...")
case .connected:
- LocalizedStringKey("Connected")
+ LocalizedStringKey("CONNECTED")
case .disconnecting(.nothing):
- LocalizedStringKey("Disconnecting...")
+ LocalizedStringKey("DISCONNECTING...")
case .disconnecting(.reconnect), .pendingReconnect:
- LocalizedStringKey("Reconnecting")
+ LocalizedStringKey("RECONNECTING")
case .disconnected:
- LocalizedStringKey("Disconnected")
+ LocalizedStringKey("DISCONNECTED")
case .waitingForConnectivity(.noConnection), .error:
- LocalizedStringKey("Blocked connection")
+ LocalizedStringKey("BLOCKED CONNECTION")
case .waitingForConnectivity(.noNetwork):
- LocalizedStringKey("No network")
+ LocalizedStringKey("NO NETWORK")
}
}
@@ -134,17 +134,21 @@ extension ConnectionViewViewModel {
case .disconnected, .waitingForConnectivity, .disconnecting, .pendingReconnect, .error:
localizedTitleForSecureLabel
case let .connected(tunnelInfo, _, _):
- LocalizedStringKey("Connected to \(tunnelInfo.exit.location.city), \(tunnelInfo.exit.location.country)")
+ LocalizedStringKey(
+ "Connected to \([tunnelInfo.exit.location.city,tunnelInfo.exit.location.country].joined(separator: ", "))"
+ )
case let .connecting(tunnelInfo, _, _):
if let tunnelInfo {
LocalizedStringKey(
- "Connecting to \(tunnelInfo.exit.location.city), \(tunnelInfo.exit.location.country)"
+ "Connecting to \([tunnelInfo.exit.location.city,tunnelInfo.exit.location.country].joined(separator: ", "))"
)
} else {
localizedTitleForSecureLabel
}
case let .reconnecting(tunnelInfo, _, _), let .negotiatingEphemeralPeer(tunnelInfo, _, _, _):
- LocalizedStringKey("Reconnecting to \(tunnelInfo.exit.location.city), \(tunnelInfo.exit.location.country)")
+ LocalizedStringKey(
+ "Reconnecting to \([tunnelInfo.exit.location.city,tunnelInfo.exit.location.country].joined(separator: ", "))"
+ )
}
}
@@ -189,7 +193,7 @@ extension ConnectionViewViewModel {
return if let entryName {
LocalizedStringKey("\(exitName) via \(entryName)")
} else {
- LocalizedStringKey("\(exitName)")
+ "\(exitName)"
}
}
diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/HeaderView.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/HeaderView.swift
index e985474b4d..41eaeac39d 100644
--- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/HeaderView.swift
+++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/HeaderView.swift
@@ -22,7 +22,6 @@ extension ConnectionView {
VStack(alignment: .leading, spacing: 0) {
HStack(alignment: .top) {
Text(viewModel.localizedTitleForSecureLabel)
- .textCase(.uppercase)
.font(.title3.weight(.semibold))
.foregroundStyle(viewModel.textColorForSecureLabel.color)
.accessibilityIdentifier(viewModel.accessibilityIdForSecureLabel.asString)
diff --git a/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsInfoButtonItem.swift b/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsInfoButtonItem.swift
index badca766d5..3db30cbb19 100644
--- a/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsInfoButtonItem.swift
+++ b/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsInfoButtonItem.swift
@@ -23,8 +23,7 @@ enum VPNSettingsInfoButtonItem: CustomStringConvertible {
case .localNetworkSharing:
[
NSLocalizedString(
- "This feature allows access to other devices on the local network, "
- + "such as for sharing, printing, streaming, etc.",
+ "This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc.",
comment: ""
),
NSLocalizedString(
@@ -45,7 +44,7 @@ enum VPNSettingsInfoButtonItem: CustomStringConvertible {
),
String(
format: NSLocalizedString(
- "Attention: this setting cannot be used in combination with **“%@“**.",
+ "Attention: this setting cannot be used in combination with **%@**",
comment: ""
),
NSLocalizedString("Use custom DNS server", comment: "")
diff --git a/ios/MullvadVPNUITests/Pages/AddCustomListLocationsPage.swift b/ios/MullvadVPNUITests/Pages/AddCustomListLocationsPage.swift
index 9693d46e8b..279140e409 100644
--- a/ios/MullvadVPNUITests/Pages/AddCustomListLocationsPage.swift
+++ b/ios/MullvadVPNUITests/Pages/AddCustomListLocationsPage.swift
@@ -10,7 +10,7 @@ import XCTest
class AddCustomListLocationsPage: EditCustomListLocationsPage {
@discardableResult override func tapBackButton() -> Self {
- app.navigationBars["Add locations"].buttons.firstMatch.tap()
+ app.navigationBars["Locations"].buttons.firstMatch.tap()
return self
}
}
diff --git a/ios/MullvadVPNUITests/Pages/EditCustomListLocationsPage.swift b/ios/MullvadVPNUITests/Pages/EditCustomListLocationsPage.swift
index 9dd3836a4c..f72eaa7dc5 100644
--- a/ios/MullvadVPNUITests/Pages/EditCustomListLocationsPage.swift
+++ b/ios/MullvadVPNUITests/Pages/EditCustomListLocationsPage.swift
@@ -51,7 +51,7 @@ class EditCustomListLocationsPage: Page {
}
@discardableResult func tapBackButton() -> Self {
- app.navigationBars["Edit locations"].buttons.firstMatch.tap()
+ app.navigationBars["Locations"].buttons.firstMatch.tap()
return self
}
}
diff --git a/ios/translation/locales/de.xliff b/ios/translation/locales/de.xliff
deleted file mode 100644
index 8b898859cf..0000000000
--- a/ios/translation/locales/de.xliff
+++ /dev/null
@@ -1,2133 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd">
- <file original="Assets/Localizable.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="%@" xml:space="preserve">
- <source>%@</source>
- <target state="needs-translation">%@</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ (%@) hides patterns in your encrypted VPN traffic." xml:space="preserve">
- <source>%1$@ (%2$@) hides patterns in your encrypted VPN traffic.</source>
- <target state="translated">%1$@ (%2$@) verbirgt Muster in Ihrem verschlüsselten VPN-Traffic.</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ cannot be empty." xml:space="preserve">
- <source>%@ cannot be empty.</source>
- <target state="needs-translation">%@ cannot be empty.</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ does this by carefully adding network noise and making all network packets the same size." xml:space="preserve">
- <source>%@ does this by carefully adding network noise and making all network packets the same size.</source>
- <target state="translated">%@ tut dies, indem es Netzwerkrauschen gezielt hinzufügt und alle Netzwerkpakete gleich groß macht.</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ left on this account" xml:space="preserve">
- <source>%@ left on this account</source>
- <target state="needs-translation">%@ left on this account</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ via %@" xml:space="preserve">
- <source>%1$@ via %2$@</source>
- <target state="translated">%1$@ über %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ was added to your account." xml:space="preserve">
- <source>%@ was added to your account.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">%@ wurde zu Ihrem Konto hinzugefügt.</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@, %@" xml:space="preserve">
- <source>%1$@, %2$@</source>
- <target state="needs-translation">%1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@: Multihop" xml:space="preserve">
- <source>%@: Multihop</source>
- <target state="needs-translation">%@: Multihop</target>
- <note/>
- </trans-unit>
- <trans-unit id="%d more..." xml:space="preserve">
- <source>%d more...</source>
- <target state="translated">%d weitere …</target>
- <note/>
- </trans-unit>
- <trans-unit id="%lld more..." xml:space="preserve">
- <source>%lld more...</source>
- <target state="translated">%lld weitere …</target>
- <note/>
- </trans-unit>
- <trans-unit id="**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.**" xml:space="preserve">
- <source>**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.**</source>
- <target state="translated">**Achtung! Dies erhöht den Netzwerkverkehr und wirkt sich auch negativ auf die Geschwindigkeit, die Latenz und den Akkuverbrauch aus. Bei begrenzten Tarifen ist Vorsicht geboten.**</target>
- <note/>
- </trans-unit>
- <trans-unit id="**Tap here** to see what’s new" xml:space="preserve">
- <source>**Tap here** to see what’s new</source>
- <target state="needs-translation">**Tap here** to see what’s new</target>
- <note/>
- </trans-unit>
- <trans-unit id="API access" xml:space="preserve">
- <source>API access</source>
- <target state="translated">API-Zugriff</target>
- <note/>
- </trans-unit>
- <trans-unit id="API reachable" xml:space="preserve">
- <source>API reachable</source>
- <target state="translated">API erreichbar</target>
- <note/>
- </trans-unit>
- <trans-unit id="API unreachable" xml:space="preserve">
- <source>API unreachable</source>
- <target state="translated">API nicht erreichbar</target>
- <note/>
- </trans-unit>
- <trans-unit id="API unreachable, save method anyway?" xml:space="preserve">
- <source>API unreachable, save method anyway?</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">API nicht erreichbar, Methode dennoch speichern?</target>
- <note/>
- </trans-unit>
- <trans-unit id="About API access…" xml:space="preserve">
- <source>About API access…</source>
- <target state="needs-translation">About API access…</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Direct method..." xml:space="preserve">
- <source>About Direct method...</source>
- <target state="needs-translation">About Direct method...</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Encrypted DNS proxy method..." xml:space="preserve">
- <source>About Encrypted DNS proxy method...</source>
- <target state="needs-translation">About Encrypted DNS proxy method...</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Mullvad bridges method..." xml:space="preserve">
- <source>About Mullvad bridges method...</source>
- <target state="needs-translation">About Mullvad bridges method...</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Server IP override..." xml:space="preserve">
- <source>About Server IP override...</source>
- <target state="needs-translation">About Server IP override...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account" xml:space="preserve">
- <source>Account</source>
- <target state="translated">Konto</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account created" xml:space="preserve">
- <source>Account created</source>
- <target state="translated">Konto erstellt</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account credit expires soon" xml:space="preserve">
- <source>Account credit expires soon</source>
- <target state="translated">Kontoguthaben läuft bald ab</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account credit has expired" xml:space="preserve">
- <source>Account credit has expired</source>
- <target state="needs-translation">Account credit has expired</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account deletion" xml:space="preserve">
- <source>Account deletion</source>
- <target state="needs-translation">Account deletion</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account number" xml:space="preserve">
- <source>Account number</source>
- <target state="translated">Kontonummer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Active features" xml:space="preserve">
- <source>Active features</source>
- <target state="translated">Aktive Funktionen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add" xml:space="preserve">
- <source>Add</source>
- <target state="translated">Hinzufügen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add 30 days" xml:space="preserve">
- <source>Add 30 days</source>
- <target state="needs-translation">Add 30 days</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add 90 days" xml:space="preserve">
- <source>Add 90 days</source>
- <target state="needs-translation">Add 90 days</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add a server" xml:space="preserve">
- <source>Add a server</source>
- <target state="translated">Server hinzufügen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add locations" xml:space="preserve">
- <source>Add locations</source>
- <target state="translated">Standorte hinzufügen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add method" xml:space="preserve">
- <source>Add method</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Methode hinzufügen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add new list" xml:space="preserve">
- <source>Add new list</source>
- <target state="needs-translation">Add new list</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add time" xml:space="preserve">
- <source>Add time</source>
- <target state="translated">Zeit hinzufügen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Ads" xml:space="preserve">
- <source>Ads</source>
- <target state="translated">Werbung</target>
- <note/>
- </trans-unit>
- <trans-unit id="Adult content" xml:space="preserve">
- <source>Adult content</source>
- <target state="translated">Inhalte für Erwachsene</target>
- <note/>
- </trans-unit>
- <trans-unit id="Agree and continue" xml:space="preserve">
- <source>Agree and continue</source>
- <target state="translated">Akzeptieren und weiter</target>
- <note/>
- </trans-unit>
- <trans-unit id="All" xml:space="preserve">
- <source>All</source>
- <target state="needs-translation">All</target>
- <note/>
- </trans-unit>
- <trans-unit id="All locations" xml:space="preserve">
- <source>All locations</source>
- <target state="translated">Alle Standorte</target>
- <note/>
- </trans-unit>
- <trans-unit id="All providers" xml:space="preserve">
- <source>All providers</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Alle Anbieter</target>
- <note/>
- </trans-unit>
- <trans-unit id="Any" xml:space="preserve">
- <source>Any</source>
- <target state="translated">Beliebige</target>
- <note/>
- </trans-unit>
- <trans-unit id="App logs" xml:space="preserve">
- <source>App logs</source>
- <target state="needs-translation">App logs</target>
- <note/>
- </trans-unit>
- <trans-unit id="AppStore receipt is not found on disk." xml:space="preserve">
- <source>AppStore receipt is not found on disk.</source>
- <target state="needs-translation">AppStore receipt is not found on disk.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Are you sure you want to log %@ out?" xml:space="preserve">
- <source>Are you sure you want to log %@ out?</source>
- <target state="needs-translation">Are you sure you want to log %@ out?</target>
- <note/>
- </trans-unit>
- <trans-unit id="At least one method needs to be enabled." xml:space="preserve">
- <source>At least one method needs to be enabled.</source>
- <target state="translated">Mindestens eine Methode muss aktiviert sein.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Attention: this setting cannot be used in combination with **“%@“**." xml:space="preserve">
- <source>Attention: this setting cannot be used in combination with **“%@“**.</source>
- <target state="needs-translation">Attention: this setting cannot be used in combination with **“%@“**.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Attention: toggling “Local network sharing” requires restarting the VPN connection." xml:space="preserve">
- <source>Attention: toggling “Local network sharing” requires restarting the VPN connection.</source>
- <target state="needs-translation">Attention: toggling “Local network sharing” requires restarting the VPN connection.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Authentication" xml:space="preserve">
- <source>Authentication</source>
- <target state="translated">Authentifizierung</target>
- <note/>
- </trans-unit>
- <trans-unit id="Automatic" xml:space="preserve">
- <source>Automatic</source>
- <target state="translated">Automatisch</target>
- <note/>
- </trans-unit>
- <trans-unit id="BLOCKING INTERNET" xml:space="preserve">
- <source>BLOCKING INTERNET</source>
- <target state="translated">INTERNET SPERREN</target>
- <note/>
- </trans-unit>
- <trans-unit id="Blocked connection" xml:space="preserve">
- <source>Blocked connection</source>
- <target state="needs-translation">Blocked connection</target>
- <note/>
- </trans-unit>
- <trans-unit id="Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN." xml:space="preserve">
- <source>Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN.</source>
- <target state="needs-translation">Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN.</target>
- <note/>
- </trans-unit>
- <trans-unit id="By enabling “%@” you will have to manually select a server that is %@-enabled. %@ won't automatically be used to enable DAITA with any server." xml:space="preserve">
- <source>By enabling “%1$@” you will have to manually select a server that is %2$@-enabled. %3$@ won't automatically be used to enable DAITA with any server.</source>
- <target state="needs-translation">By enabling “%1$@” you will have to manually select a server that is %2$@-enabled. %3$@ won't automatically be used to enable DAITA with any server.</target>
- <note/>
- </trans-unit>
- <trans-unit id="By using sophisticated AI it’s possible to analyze the traffic of data packets going in and out of your device (even if the traffic is encrypted)." xml:space="preserve">
- <source>By using sophisticated AI it’s possible to analyze the traffic of data packets going in and out of your device (even if the traffic is encrypted).</source>
- <target state="translated">Durch den Einsatz hochentwickelter KI ist es möglich, den Traffic von Datenpaketen zu analysieren, die auf Ihrem Gerät ein- und ausgehen (selbst wenn der Verkehr verschlüsselt ist).</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cancel" xml:space="preserve">
- <source>Cancel</source>
- <target state="translated">Abbrechen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot complete the purchase" xml:space="preserve">
- <source>Cannot complete the purchase</source>
- <target state="needs-translation">Cannot complete the purchase</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot read the AppStore receipt from disk" xml:space="preserve">
- <source>Cannot read the AppStore receipt from disk</source>
- <target state="needs-translation">Cannot read the AppStore receipt from disk</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot refresh the AppStore receipt: %@" xml:space="preserve">
- <source>Cannot refresh the AppStore receipt: %@</source>
- <target state="needs-translation">Cannot refresh the AppStore receipt: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot restore purchases" xml:space="preserve">
- <source>Cannot restore purchases</source>
- <target state="needs-translation">Cannot restore purchases</target>
- <note/>
- </trans-unit>
- <trans-unit id="Checking account number" xml:space="preserve">
- <source>Checking account number</source>
- <target state="translated">Ihre Kontonummer wird geprüft</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cipher" xml:space="preserve">
- <source>Cipher</source>
- <target state="translated">Chiffre</target>
- <note/>
- </trans-unit>
- <trans-unit id="Clear" xml:space="preserve">
- <source>Clear</source>
- <target state="translated">Löschen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Clear all overrides" xml:space="preserve">
- <source>Clear all overrides</source>
- <target state="translated">Alle Überschreibungen löschen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Clear all overrides?" xml:space="preserve">
- <source>Clear all overrides?</source>
- <target state="translated">Alle Überschreibungen löschen?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Clearing the imported overrides changes the server IPs, in the Select location view, back to default." xml:space="preserve">
- <source>Clearing the imported overrides changes the server IPs, in the Select location view, back to default.</source>
- <target state="translated">Wenn Sie die importierten Überschreibungen löschen, werden die Server-IPs in der Ortsauswahl wieder auf die Standardwerte zurückgesetzt.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Client is not allowed to issue the request." xml:space="preserve">
- <source>Client is not allowed to issue the request.</source>
- <target state="needs-translation">Client is not allowed to issue the request.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Collapse %@" xml:space="preserve">
- <source>Collapse %@</source>
- <target state="needs-translation">Collapse %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Collapses this location." xml:space="preserve">
- <source>Collapses this location.</source>
- <target state="needs-translation">Collapses this location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Congrats!" xml:space="preserve">
- <source>Congrats!</source>
- <target state="translated">Glückwunsch!</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connect" xml:space="preserve">
- <source>Connect</source>
- <target state="translated">Verbinden</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connected" xml:space="preserve">
- <source>Connected</source>
- <target state="translated">Verbunden</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connected to %@, %@" xml:space="preserve">
- <source>Connected to %1$@, %2$@</source>
- <target state="needs-translation">Connected to %1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connecting to %@, %@" xml:space="preserve">
- <source>Connecting to %1$@, %2$@</source>
- <target state="needs-translation">Connecting to %1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connecting..." xml:space="preserve">
- <source>Connecting...</source>
- <target state="translated">Verbinden …</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connection details" xml:space="preserve">
- <source>Connection details</source>
- <target state="translated">Verbindungsdetails</target>
- <note/>
- </trans-unit>
- <trans-unit id="Continue with login" xml:space="preserve">
- <source>Continue with login</source>
- <target state="translated">Weiter mit Anmeldung</target>
- <note/>
- </trans-unit>
- <trans-unit id="Copied Mullvad account number to pasteboard" xml:space="preserve">
- <source>Copied Mullvad account number to pasteboard</source>
- <target state="needs-translation">Copied Mullvad account number to pasteboard</target>
- <note/>
- </trans-unit>
- <trans-unit id="Correct account number" xml:space="preserve">
- <source>Correct account number</source>
- <target state="needs-translation">Correct account number</target>
- <note/>
- </trans-unit>
- <trans-unit id="Create" xml:space="preserve">
- <source>Create</source>
- <target state="translated">Erstellen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Create account" xml:space="preserve">
- <source>Create account</source>
- <target state="translated">Konto erstellen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Create new account" xml:space="preserve">
- <source>Create new account</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Neues Konto erstellen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Created: %@" xml:space="preserve">
- <source>Created: %@</source>
- <target state="needs-translation">Created: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Creating new account" xml:space="preserve">
- <source>Creating new account</source>
- <target state="needs-translation">Creating new account</target>
- <note/>
- </trans-unit>
- <trans-unit id="Current device" xml:space="preserve">
- <source>Current device</source>
- <target state="translated">Aktuelles Gerät</target>
- <note/>
- </trans-unit>
- <trans-unit id="Custom" xml:space="preserve">
- <source>Custom</source>
- <target state="translated">Benutzerdefiniert</target>
- <note/>
- </trans-unit>
- <trans-unit id="Custom DNS" xml:space="preserve">
- <source>Custom DNS</source>
- <target state="translated">Eigenes DNS</target>
- <note/>
- </trans-unit>
- <trans-unit id="Custom lists" xml:space="preserve">
- <source>Custom lists</source>
- <target state="translated">Eigene Listen</target>
- <note/>
- </trans-unit>
- <trans-unit id="DAITA" xml:space="preserve">
- <source>DAITA</source>
- <target state="needs-translation">DAITA</target>
- <note/>
- </trans-unit>
- <trans-unit id="DAITA isn't available at the currently selected location. After enabling, please go to the &quot;Select location&quot; view and select a location that supports DAITA." xml:space="preserve">
- <source>DAITA isn't available at the currently selected location. After enabling, please go to the "Select location" view and select a location that supports DAITA.</source>
- <target state="needs-translation">DAITA isn't available at the currently selected location. After enabling, please go to the "Select location" view and select a location that supports DAITA.</target>
- <note/>
- </trans-unit>
- <trans-unit id="DAITA isn't available on the current entry server. After enabling, please go to the &quot;Select location&quot; view and select an entry location that supports DAITA." xml:space="preserve">
- <source>DAITA isn't available on the current entry server. After enabling, please go to the "Select location" view and select an entry location that supports DAITA.</source>
- <target state="needs-translation">DAITA isn't available on the current entry server. After enabling, please go to the "Select location" view and select an entry location that supports DAITA.</target>
- <note/>
- </trans-unit>
- <trans-unit id="DAITA-enabled" xml:space="preserve">
- <source>DAITA-enabled</source>
- <target state="needs-translation">DAITA-enabled</target>
- <note/>
- </trans-unit>
- <trans-unit id="DNS content blockers" xml:space="preserve">
- <source>DNS content blockers</source>
- <target state="translated">DNS-Inhaltssperren</target>
- <note/>
- </trans-unit>
- <trans-unit id="DNS settings" xml:space="preserve">
- <source>DNS settings</source>
- <target state="needs-translation">DNS settings</target>
- <note/>
- </trans-unit>
- <trans-unit id="Defense against AI-guided Traffic Analysis" xml:space="preserve">
- <source>Defense against AI-guided Traffic Analysis</source>
- <target state="needs-translation">Defense against AI-guided Traffic Analysis</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete" xml:space="preserve">
- <source>Delete</source>
- <target state="translated">Löschen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete %@?" xml:space="preserve">
- <source>Delete %@?</source>
- <target state="needs-translation">Delete %@?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete account" xml:space="preserve">
- <source>Delete account</source>
- <target state="needs-translation">Delete account</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete list" xml:space="preserve">
- <source>Delete list</source>
- <target state="translated">Liste löschen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete method" xml:space="preserve">
- <source>Delete method</source>
- <target state="translated">Methode löschen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Deleting account..." xml:space="preserve">
- <source>Deleting account...</source>
- <target state="needs-translation">Deleting account...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Device is inactive" xml:space="preserve">
- <source>Device is inactive</source>
- <target state="translated">Gerät ist inaktiv</target>
- <note/>
- </trans-unit>
- <trans-unit id="Device name" xml:space="preserve">
- <source>Device name</source>
- <target state="translated">Gerätename</target>
- <note/>
- </trans-unit>
- <trans-unit id="Device name: %@" xml:space="preserve">
- <source>Device name: %@</source>
- <target state="needs-translation">Device name: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Direct only" xml:space="preserve">
- <source>Direct only</source>
- <target state="translated">Nur direkt</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disable all &quot;%@&quot; above to activate this setting." xml:space="preserve">
- <source>Disable all "%@" above to activate this setting.</source>
- <target state="translated">Deaktivieren Sie oben alle „%@“, um diese Einstellung zu aktivieren.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disabled" xml:space="preserve">
- <source>Disabled</source>
- <target state="needs-translation">Disabled</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disabling" xml:space="preserve">
- <source>Disabling</source>
- <target state="needs-translation">Disabling</target>
- <note/>
- </trans-unit>
- <trans-unit id="Discard changes" xml:space="preserve">
- <source>Discard changes</source>
- <target state="translated">Änderungen verwerfen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disconnect" xml:space="preserve">
- <source>Disconnect</source>
- <target state="translated">Trennen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disconnected" xml:space="preserve">
- <source>Disconnected</source>
- <target state="translated">Verbindung getrennt</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disconnecting..." xml:space="preserve">
- <source>Disconnecting...</source>
- <target state="translated">Verbindung wird getrennt …</target>
- <note/>
- </trans-unit>
- <trans-unit id="Do you agree to remaining anonymous?" xml:space="preserve">
- <source>Do you agree to remaining anonymous?</source>
- <target state="needs-translation">Do you agree to remaining anonymous?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Do you want to create a new account?" xml:space="preserve">
- <source>Do you want to create a new account?</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Möchten Sie ein neues Konto erstellen?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Do you want to delete the list **%@**?" xml:space="preserve">
- <source>Do you want to delete the list **%@**?</source>
- <target state="needs-translation">Do you want to delete the list **%@**?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Done" xml:space="preserve">
- <source>Done</source>
- <target state="needs-translation">Done</target>
- <note/>
- </trans-unit>
- <trans-unit id="Don’t have an account number?" xml:space="preserve">
- <source>Don’t have an account number?</source>
- <target state="translated">Sie haben keine Kontonummer?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit custom list" xml:space="preserve">
- <source>Edit custom list</source>
- <target state="needs-translation">Edit custom list</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit lists" xml:space="preserve">
- <source>Edit lists</source>
- <target state="translated">Listen bearbeiten</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit locations" xml:space="preserve">
- <source>Edit locations</source>
- <target state="translated">Standorte bearbeiten</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit message" xml:space="preserve">
- <source>Edit message</source>
- <target state="translated">Nachricht bearbeiten</target>
- <note/>
- </trans-unit>
- <trans-unit id="Either buy credit on our website or make an in-app purchase via the **Add time** button below." xml:space="preserve">
- <source>Either buy credit on our website or make an in-app purchase via the **Add time** button below.</source>
- <target state="needs-translation">Either buy credit on our website or make an in-app purchase via the **Add time** button below.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Either buy credit on our website or redeem a voucher." xml:space="preserve">
- <source>Either buy credit on our website or redeem a voucher.</source>
- <target state="translated">Kaufen Sie entweder Guthaben über unsere Seite oder lösen Sie einen Gutschein ein.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enable" xml:space="preserve">
- <source>Enable</source>
- <target state="translated">Aktivieren</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enable &quot;%@&quot;" xml:space="preserve">
- <source>Enable "%@"</source>
- <target state="needs-translation">Enable "%@"</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enable method" xml:space="preserve">
- <source>Enable method</source>
- <target state="translated">Methode aktivieren</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enabling" xml:space="preserve">
- <source>Enabling</source>
- <target state="needs-translation">Enabling</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enter IP" xml:space="preserve">
- <source>Enter IP</source>
- <target state="translated">IP eingeben</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enter voucher code" xml:space="preserve">
- <source>Enter voucher code</source>
- <target state="translated">Gutscheincode eingeben</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enter your account number" xml:space="preserve">
- <source>Enter your account number</source>
- <target state="translated">Geben Sie Ihre Kontonummer ein</target>
- <note/>
- </trans-unit>
- <trans-unit id="Entry" xml:space="preserve">
- <source>Entry</source>
- <target state="translated">Eingang</target>
- <note/>
- </trans-unit>
- <trans-unit id="Exit" xml:space="preserve">
- <source>Exit</source>
- <target state="translated">Ausgang</target>
- <note/>
- </trans-unit>
- <trans-unit id="Expand %@" xml:space="preserve">
- <source>Expand %@</source>
- <target state="needs-translation">Expand %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Expands this location." xml:space="preserve">
- <source>Expands this location.</source>
- <target state="needs-translation">Expands this location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="FAQs &amp; Guides" xml:space="preserve">
- <source>FAQs &amp; Guides</source>
- <target state="needs-translation">FAQs &amp; Guides</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to load products, please try again" xml:space="preserve">
- <source>Failed to load products, please try again</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Fehler beim Laden der Produkte, bitte versuchen Sie es erneut</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to send" xml:space="preserve">
- <source>Failed to send</source>
- <target state="translated">Fehler beim Senden</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to send the receipt to server: %@" xml:space="preserve">
- <source>Failed to send the receipt to server: %@</source>
- <target state="needs-translation">Failed to send the receipt to server: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to start the tunnel." xml:space="preserve">
- <source>Failed to start the tunnel.</source>
- <target state="needs-translation">Failed to start the tunnel.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to start the tunnel: %@." xml:space="preserve">
- <source>Failed to start the tunnel: %@.</source>
- <target state="needs-translation">Failed to start the tunnel: %@.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to stop the tunnel." xml:space="preserve">
- <source>Failed to stop the tunnel.</source>
- <target state="needs-translation">Failed to stop the tunnel.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to stop the tunnel: %@." xml:space="preserve">
- <source>Failed to stop the tunnel: %@.</source>
- <target state="needs-translation">Failed to stop the tunnel: %@.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to validate account number: %@" xml:space="preserve">
- <source>Failed to validate account number: %@</source>
- <target state="needs-translation">Failed to validate account number: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Fetching devices..." xml:space="preserve">
- <source>Fetching devices...</source>
- <target state="needs-translation">Fetching devices...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Filter" xml:space="preserve">
- <source>Filter</source>
- <target state="needs-translation">Filter</target>
- <note/>
- </trans-unit>
- <trans-unit id="Filtered:" xml:space="preserve">
- <source>Filtered:</source>
- <target state="translated">Gefiltert:</target>
- <note/>
- </trans-unit>
- <trans-unit id="Gambling" xml:space="preserve">
- <source>Gambling</source>
- <target state="translated">Glücksspiel</target>
- <note/>
- </trans-unit>
- <trans-unit id="Go ahead and start using the app to begin reclaiming your online privacy." xml:space="preserve">
- <source>Go ahead and start using the app to begin reclaiming your online privacy.</source>
- <target state="translated">Legen Sie los und erobern Sie Ihre Online-Privatsphäre mit dieser App zurück!</target>
- <note/>
- </trans-unit>
- <trans-unit id="Go to login" xml:space="preserve">
- <source>Go to login</source>
- <target state="translated">Zur Anmeldung</target>
- <note/>
- </trans-unit>
- <trans-unit id="Going to login will unblock the Internet on this device." xml:space="preserve">
- <source>Going to login will unblock the Internet on this device.</source>
- <target state="translated">Wenn Sie mit der Anmeldung fortfahren, wird die Internetsperre auf diesem Gerät aufgehoben.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Got it!" xml:space="preserve">
- <source>Got it!</source>
- <target state="translated">Verstanden!</target>
- <note/>
- </trans-unit>
- <trans-unit id="Here’s your account number. Save it!" xml:space="preserve">
- <source>Here’s your account number. Save it!</source>
- <target state="translated">Hier ist Ihre Kontonummer. Verlieren Sie sie nicht!</target>
- <note/>
- </trans-unit>
- <trans-unit id="Hide account number" xml:space="preserve">
- <source>Hide account number</source>
- <target state="translated">Kontonummer verbergen</target>
- <note/>
- </trans-unit>
- <trans-unit id="If an observer monitors these data packets, %@ makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating." xml:space="preserve">
- <source>If an observer monitors these data packets, %@ makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating.</source>
- <target state="translated">Wenn ein Beobachter diese Datenpakete überwacht, macht %@ es für ihn wesentlich schwieriger zu erkennen, welche Websites Sie besuchen oder mit wem Sie kommunizieren.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If needed we will contact you at %@" xml:space="preserve">
- <source>If needed we will contact you at %@</source>
- <target state="translated">Bei Bedarf werden wir Sie über %@ kontaktieren</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you are having issues connecting to VPN servers, please contact support." xml:space="preserve">
- <source>If you are having issues connecting to VPN servers, please contact support.</source>
- <target state="translated">Wenn Sie Probleme mit der Verbindung zu VPN-Servern haben, wenden Sie sich bitte an den Support.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare." xml:space="preserve">
- <source>If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare.</source>
- <target state="needs-translation">If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you disconnect now, you won’t be able to secure your connection until the device is online." xml:space="preserve">
- <source>If you disconnect now, you won’t be able to secure your connection until the device is online.</source>
- <target state="needs-translation">If you disconnect now, you won’t be able to secure your connection until the device is online.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you exit the form and try again later, the information you already entered will still be here." xml:space="preserve">
- <source>If you exit the form and try again later, the information you already entered will still be here.</source>
- <target state="translated">Die Informationen, die Sie bereits eingegeben haben, werden immer noch da sein, wenn Sie das Formular schließen und es später erneut versuchen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you haven’t received additional VPN time after purchasing" xml:space="preserve">
- <source>If you haven’t received additional VPN time after purchasing</source>
- <target state="needs-translation">If you haven’t received additional VPN time after purchasing</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you log out, the device and the device name is removed. When you log back in again, the device will get a new name." xml:space="preserve">
- <source>If you log out, the device and the device name is removed. When you log back in again, the device will get a new name.</source>
- <target state="translated">Wenn Sie sich abmelden, werden das Gerät und der Gerätename entfernt. Wenn Sie sich wieder anmelden, erhält das Gerät einen neuen Namen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you still experience issues you can email our support directly at **%@**. Please attach your app log to your email." xml:space="preserve">
- <source>If you still experience issues you can email our support directly at **%@**. Please attach your app log to your email.</source>
- <target state="needs-translation">If you still experience issues you can email our support directly at **%@**. Please attach your app log to your email.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import" xml:space="preserve">
- <source>Import</source>
- <target state="translated">Importieren</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import file" xml:space="preserve">
- <source>Import file</source>
- <target state="translated">Datei importieren</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import files or text with new IP addresses for the servers in the Select location view." xml:space="preserve">
- <source>Import files or text with new IP addresses for the servers in the Select location view.</source>
- <target state="translated">Importieren Sie Dateien oder Text mit neuen IP-Adressen für die Server in der Ortsauswahl.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import of %@ was successful, overrides are now active." xml:space="preserve">
- <source>Import of %@ was successful, overrides are now active.</source>
- <target state="needs-translation">Import of %@ was successful, overrides are now active.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import of %@ was unsuccessful, please try again." xml:space="preserve">
- <source>Import of %@ was unsuccessful, please try again.</source>
- <target state="needs-translation">Import of %@ was unsuccessful, please try again.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import successful" xml:space="preserve">
- <source>Import successful</source>
- <target state="needs-translation">Import successful</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import via text" xml:space="preserve">
- <source>Import via text</source>
- <target state="translated">Import via Text</target>
- <note/>
- </trans-unit>
- <trans-unit id="In" xml:space="preserve">
- <source>In</source>
- <target state="translated">Eingehend</target>
- <note/>
- </trans-unit>
- <trans-unit id="In use" xml:space="preserve">
- <source>In use</source>
- <target state="translated">Wird verwendet</target>
- <note/>
- </trans-unit>
- <trans-unit id="Include all networks" xml:space="preserve">
- <source>Include all networks</source>
- <target state="needs-translation">Include all networks</target>
- <note/>
- </trans-unit>
- <trans-unit id="Internal error occurred. Settings will be reset to defaults and device logged out." xml:space="preserve">
- <source>Internal error occurred. Settings will be reset to defaults and device logged out.</source>
- <target state="needs-translation">Internal error occurred. Settings will be reset to defaults and device logged out.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Internal error." xml:space="preserve">
- <source>Internal error.</source>
- <target state="needs-translation">Internal error.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Invalid account number" xml:space="preserve">
- <source>Invalid account number</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Ungültige Kontonummer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Invalid device state." xml:space="preserve">
- <source>Invalid device state.</source>
- <target state="needs-translation">Invalid device state.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Invalid purchase identifier." xml:space="preserve">
- <source>Invalid purchase identifier.</source>
- <target state="needs-translation">Invalid purchase identifier.</target>
- <note/>
- </trans-unit>
- <trans-unit id="It does this by performing an extra key exchange using a quantum safe algorithm and mixing the result into WireGuard’s regular encryption. This extra step uses approximately 500 kiB of traffic every time a new tunnel is established." xml:space="preserve">
- <source>It does this by performing an extra key exchange using a quantum safe algorithm and mixing the result into WireGuard’s regular encryption. This extra step uses approximately 500 kiB of traffic every time a new tunnel is established.</source>
- <target state="translated">Dazu wird ein zusätzlicher Schlüsselaustausch mit einem quantensicheren Algorithmus durchgeführt und das Ergebnis mit der regulären Verschlüsselung von WireGuard vermischt. Dieser zusätzliche Schritt verbraucht jedes Mal, wenn ein neuer Tunnel aufgebaut wird, etwa 500 KiB an Datenverkehr.</target>
- <note/>
- </trans-unit>
- <trans-unit id="It looks like you’ve entered an account number instead of a voucher code. If you would like to change the active account, please log out first." xml:space="preserve">
- <source>It looks like you’ve entered an account number instead of a voucher code. If you would like to change the active account, please log out first.</source>
- <target state="translated">Anscheinend haben Sie eine Kontonummer statt eines Gutscheincodes eingegeben. Wenn Sie das aktive Konto wechseln möchten, melden Sie sich bitte zuerst ab.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Language" xml:space="preserve">
- <source>Language</source>
- <target state="translated">Sprache</target>
- <note/>
- </trans-unit>
- <trans-unit id="Last four digits of the account number are incorrect" xml:space="preserve">
- <source>Last four digits of the account number are incorrect</source>
- <target state="needs-translation">Last four digits of the account number are incorrect</target>
- <note/>
- </trans-unit>
- <trans-unit id="Last used account" xml:space="preserve">
- <source>Last used account</source>
- <target state="needs-translation">Last used account</target>
- <note/>
- </trans-unit>
- <trans-unit id="Learn about privacy" xml:space="preserve">
- <source>Learn about privacy</source>
- <target state="translated">Mehr über Privatsphäre erfahren</target>
- <note/>
- </trans-unit>
- <trans-unit id="Less than a day" xml:space="preserve">
- <source>Less than a day</source>
- <target state="needs-translation">Less than a day</target>
- <note/>
- </trans-unit>
- <trans-unit id="Local network sharing" xml:space="preserve">
- <source>Local network sharing</source>
- <target state="translated">Teilen im lokalen Netzwerk</target>
- <note/>
- </trans-unit>
- <trans-unit id="Log in" xml:space="preserve">
- <source>Log in</source>
- <target state="needs-translation">Log in</target>
- <note/>
- </trans-unit>
- <trans-unit id="Log out" xml:space="preserve">
- <source>Log out</source>
- <target state="translated">Abmelden</target>
- <note/>
- </trans-unit>
- <trans-unit id="Logged in" xml:space="preserve">
- <source>Logged in</source>
- <target state="translated">Angemeldet</target>
- <note/>
- </trans-unit>
- <trans-unit id="Logging in..." xml:space="preserve">
- <source>Logging in...</source>
- <target state="translated">Anmeldung läuft...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Logging out..." xml:space="preserve">
- <source>Logging out...</source>
- <target state="needs-translation">Logging out...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Login" xml:space="preserve">
- <source>Login</source>
- <target state="translated">Anmelden</target>
- <note/>
- </trans-unit>
- <trans-unit id="Login failed" xml:space="preserve">
- <source>Login failed</source>
- <target state="translated">Anmeldung fehlgeschlagen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Make a purchase with StoreKit2" xml:space="preserve">
- <source>Make a purchase with StoreKit2</source>
- <target state="needs-translation">Make a purchase with StoreKit2</target>
- <note/>
- </trans-unit>
- <trans-unit id="Malware" xml:space="preserve">
- <source>Malware</source>
- <target state="needs-translation">Malware</target>
- <note/>
- </trans-unit>
- <trans-unit id="Manage and add custom methods to access the Mullvad API." xml:space="preserve">
- <source>Manage and add custom methods to access the Mullvad API.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Verwaltung und Hinzufügen benutzerdefinierter Methoden für den Zugriff auf die Mullvad-API.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Manage devices" xml:space="preserve">
- <source>Manage devices</source>
- <target state="translated">Geräte verwalten</target>
- <note/>
- </trans-unit>
- <trans-unit id="Method settings" xml:space="preserve">
- <source>Method settings</source>
- <target state="needs-translation">Method settings</target>
- <note/>
- </trans-unit>
- <trans-unit id="Multihop" xml:space="preserve">
- <source>Multihop</source>
- <target state="needs-translation">Multihop</target>
- <note/>
- </trans-unit>
- <trans-unit id="Multihop is being used to enable DAITA for your selected location." xml:space="preserve">
- <source>Multihop is being used to enable DAITA for your selected location.</source>
- <target state="needs-translation">Multihop is being used to enable DAITA for your selected location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Multihop routes your traffic into one WireGuard server and out another, making it harder to trace. This results in increased latency but increases anonymity online." xml:space="preserve">
- <source>Multihop routes your traffic into one WireGuard server and out another, making it harder to trace. This results in increased latency but increases anonymity online.</source>
- <target state="translated">Multihop leitet Ihren Traffic in einen WireGuard-Server hinein und aus einem anderen heraus, so dass er schwerer zu verfolgen ist. Dies führt zu einer erhöhten Latenzzeit, erhöht aber die Anonymität im Internet.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Multiple validation errors occurred." xml:space="preserve">
- <source>Multiple validation errors occurred.</source>
- <target state="needs-translation">Multiple validation errors occurred.</target>
- <note/>
- </trans-unit>
- <trans-unit id="NETWORK ISSUES" xml:space="preserve">
- <source>NETWORK ISSUES</source>
- <target state="needs-translation">NETWORK ISSUES</target>
- <note/>
- </trans-unit>
- <trans-unit id="NEW DEVICE CREATED" xml:space="preserve">
- <source>NEW DEVICE CREATED</source>
- <target state="translated">NEUES GERÄT ERSTELLT</target>
- <note/>
- </trans-unit>
- <trans-unit id="NEW VERSION INSTALLED" xml:space="preserve">
- <source>NEW VERSION INSTALLED</source>
- <target state="translated">NEUE VERSION INSTALLIERT</target>
- <note/>
- </trans-unit>
- <trans-unit id="Name" xml:space="preserve">
- <source>Name</source>
- <target state="needs-translation">Name</target>
- <note/>
- </trans-unit>
- <trans-unit id="Name is already taken." xml:space="preserve">
- <source>Name is already taken.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Der Name ist bereits vergeben.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Name should be no longer than %i characters." xml:space="preserve">
- <source>Name should be no longer than %i characters.</source>
- <target state="needs-translation">Name should be no longer than %i characters.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Network error: %@" xml:space="preserve">
- <source>Network error: %@</source>
- <target state="needs-translation">Network error: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="New custom list" xml:space="preserve">
- <source>New custom list</source>
- <target state="needs-translation">New custom list</target>
- <note/>
- </trans-unit>
- <trans-unit id="Next" xml:space="preserve">
- <source>Next</source>
- <target state="translated">Weiter</target>
- <note/>
- </trans-unit>
- <trans-unit id="No DAITA compatible servers match your location settings. Try changing location." xml:space="preserve">
- <source>No DAITA compatible servers match your location settings. Try changing location.</source>
- <target state="needs-translation">No DAITA compatible servers match your location settings. Try changing location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="No matching relays found, check your filter settings." xml:space="preserve">
- <source>No matching relays found, check your filter settings.</source>
- <target state="needs-translation">No matching relays found, check your filter settings.</target>
- <note/>
- </trans-unit>
- <trans-unit id="No matching servers" xml:space="preserve">
- <source>No matching servers</source>
- <target state="needs-translation">No matching servers</target>
- <note/>
- </trans-unit>
- <trans-unit id="No network" xml:space="preserve">
- <source>No network</source>
- <target state="needs-translation">No network</target>
- <note/>
- </trans-unit>
- <trans-unit id="No overrides imported" xml:space="preserve">
- <source>No overrides imported</source>
- <target state="needs-translation">No overrides imported</target>
- <note/>
- </trans-unit>
- <trans-unit id="No servers match your location filter. Try changing filter settings." xml:space="preserve">
- <source>No servers match your location filter. Try changing filter settings.</source>
- <target state="needs-translation">No servers match your location filter. Try changing filter settings.</target>
- <note/>
- </trans-unit>
- <trans-unit id="No servers match your obfuscation settings. Try changing location or obfuscation method." xml:space="preserve">
- <source>No servers match your obfuscation settings. Try changing location or obfuscation method.</source>
- <target state="needs-translation">No servers match your obfuscation settings. Try changing location or obfuscation method.</target>
- <note/>
- </trans-unit>
- <trans-unit id="No servers match your settings, try changing server or other settings." xml:space="preserve">
- <source>No servers match your settings, try changing server or other settings.</source>
- <target state="translated">Kein Server entspricht Ihren Einstellungen. Versuchen Sie, den Server oder andere Einstellungen zu ändern.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Not all our servers are %@-enabled. Therefore, we use multihop automatically to enable %@ with any server." xml:space="preserve">
- <source>Not all our servers are %1$@-enabled. Therefore, we use multihop automatically to enable %2$@ with any server.</source>
- <target state="translated">Nicht alle unsere Server sind %1$@-fähig. Daher verwenden wir automatisch Multihop, um %2$@ mit jedem Server zu aktivieren.</target>
- <note/>
- </trans-unit>
- <trans-unit id="OUT OF TIME" xml:space="preserve">
- <source>OUT OF TIME</source>
- <target state="translated">ZEIT ABGELAUFEN</target>
- <note/>
- </trans-unit>
- <trans-unit id="Obfuscation" xml:space="preserve">
- <source>Obfuscation</source>
- <target state="translated">Verschleierung</target>
- <note/>
- </trans-unit>
- <trans-unit id="Obfuscation hides the WireGuard traffic inside another protocol. It can be used to help circumvent censorship and other types of filtering, where a plain WireGuard connection would be blocked." xml:space="preserve">
- <source>Obfuscation hides the WireGuard traffic inside another protocol. It can be used to help circumvent censorship and other types of filtering, where a plain WireGuard connection would be blocked.</source>
- <target state="translated">Bei der Verschleierung wird der WireGuard-Datenverkehr in einem anderen Protokoll versteckt. Sie kann dazu verwendet werden, Zensur und andere Arten von Filtern zu umgehen, bei denen eine reine WireGuard-Verbindung blockiert würde.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Obscured" xml:space="preserve">
- <source>Obscured</source>
- <target state="needs-translation">Obscured</target>
- <note/>
- </trans-unit>
- <trans-unit id="Off" xml:space="preserve">
- <source>Off</source>
- <target state="translated">Aus</target>
- <note/>
- </trans-unit>
- <trans-unit id="On" xml:space="preserve">
- <source>On</source>
- <target state="translated">Ein</target>
- <note/>
- </trans-unit>
- <trans-unit id="On some networks, where various types of censorship are being used, our server IP addresses are sometimes blocked." xml:space="preserve">
- <source>On some networks, where various types of censorship are being used, our server IP addresses are sometimes blocked.</source>
- <target state="translated">In einigen Netzwerken, in denen verschiedene Arten der Zensur eingesetzt werden, werden die IP-Adressen unserer Server manchmal blockiert.</target>
- <note/>
- </trans-unit>
- <trans-unit id="On some networks, where various types of censorship are being used, the API servers might not be directly reachable." xml:space="preserve">
- <source>On some networks, where various types of censorship are being used, the API servers might not be directly reachable.</source>
- <target state="translated">In einigen Netzwerken, in denen verschiedene Arten der Zensur eingesetzt werden, sind die API-Server möglicherweise nicht direkt erreichbar.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Open %@ settings" xml:space="preserve">
- <source>Open %@ settings</source>
- <target state="needs-translation">Open %@ settings</target>
- <note/>
- </trans-unit>
- <trans-unit id="Optional" xml:space="preserve">
- <source>Optional</source>
- <target state="needs-translation">Optional</target>
- <note/>
- </trans-unit>
- <trans-unit id="Out IPv4" xml:space="preserve">
- <source>Out IPv4</source>
- <target state="needs-translation">Out IPv4</target>
- <note/>
- </trans-unit>
- <trans-unit id="Out IPv6" xml:space="preserve">
- <source>Out IPv6</source>
- <target state="needs-translation">Out IPv6</target>
- <note/>
- </trans-unit>
- <trans-unit id="Out of time" xml:space="preserve">
- <source>Out of time</source>
- <target state="translated">Zeit abgelaufen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Overrides active" xml:space="preserve">
- <source>Overrides active</source>
- <target state="translated">Überschreibungen aktiv</target>
- <note/>
- </trans-unit>
- <trans-unit id="Owned" xml:space="preserve">
- <source>Owned</source>
- <target state="translated">In Besitz</target>
- <note/>
- </trans-unit>
- <trans-unit id="Ownership" xml:space="preserve">
- <source>Ownership</source>
- <target state="translated">Eigentümerschaft</target>
- <note/>
- </trans-unit>
- <trans-unit id="Paid until" xml:space="preserve">
- <source>Paid until</source>
- <target state="translated">Bezahlt bis</target>
- <note/>
- </trans-unit>
- <trans-unit id="Password" xml:space="preserve">
- <source>Password</source>
- <target state="translated">Passwort</target>
- <note/>
- </trans-unit>
- <trans-unit id="Performs a connection test to a Mullvad API server via this access method." xml:space="preserve">
- <source>Performs a connection test to a Mullvad API server via this access method.</source>
- <target state="needs-translation">Performs a connection test to a Mullvad API server via this access method.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Please enter a valid IPv4 or IPv6 address." xml:space="preserve">
- <source>Please enter a valid IPv4 or IPv6 address.</source>
- <target state="translated">Bitte geben Sie eine gültige IPv4- oder IPv6-Adresse ein.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Please enter a valid port." xml:space="preserve">
- <source>Please enter a valid port.</source>
- <target state="needs-translation">Please enter a valid port.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Please log out of at least one by removing it from the list below. You can find the corresponding device name under the device’s Account settings." xml:space="preserve">
- <source>Please log out of at least one by removing it from the list below. You can find the corresponding device name under the device’s Account settings.</source>
- <target state="translated">Bitte melden Sie sich von mindestens einem Gerät ab, indem Sie es aus der Liste unten entfernen. Sie finden den entsprechenden Gerätenamen unter den Kontoeinstellungen des Geräts.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Please retry by using the &quot;Restore purchases&quot; button." xml:space="preserve">
- <source>Please retry by using the "Restore purchases" button.</source>
- <target state="needs-translation">Please retry by using the "Restore purchases" button.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Port" xml:space="preserve">
- <source>Port</source>
- <target state="needs-translation">Port</target>
- <note/>
- </trans-unit>
- <trans-unit id="Port: %@" xml:space="preserve">
- <source>Port: %@</source>
- <target state="needs-translation">Port: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Previous" xml:space="preserve">
- <source>Previous</source>
- <target state="needs-translation">Previous</target>
- <note/>
- </trans-unit>
- <trans-unit id="Providers" xml:space="preserve">
- <source>Providers</source>
- <target state="translated">Anbieter</target>
- <note/>
- </trans-unit>
- <trans-unit id="Providers: %d" xml:space="preserve">
- <source>Providers: %d</source>
- <target state="needs-translation">Providers: %d</target>
- <note/>
- </trans-unit>
- <trans-unit id="QUIC" xml:space="preserve">
- <source>QUIC</source>
- <target state="needs-translation">QUIC</target>
- <note/>
- </trans-unit>
- <trans-unit id="Quantum resistance" xml:space="preserve">
- <source>Quantum resistance</source>
- <target state="translated">Quantenresistenz</target>
- <note/>
- </trans-unit>
- <trans-unit id="Quantum-resistant tunnel" xml:space="preserve">
- <source>Quantum-resistant tunnel</source>
- <target state="translated">Quantenresistenter Tunnel</target>
- <note/>
- </trans-unit>
- <trans-unit id="Reconnecting" xml:space="preserve">
- <source>Reconnecting</source>
- <target state="translated">Wiederherstellen der Verbindung</target>
- <note/>
- </trans-unit>
- <trans-unit id="Reconnecting to %@, %@" xml:space="preserve">
- <source>Reconnecting to %1$@, %2$@</source>
- <target state="needs-translation">Reconnecting to %1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Redeem" xml:space="preserve">
- <source>Redeem</source>
- <target state="translated">Einlösen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Redeem voucher" xml:space="preserve">
- <source>Redeem voucher</source>
- <target state="translated">Gutschein einlösen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Refund last purchase with StoreKit2" xml:space="preserve">
- <source>Refund last purchase with StoreKit2</source>
- <target state="needs-translation">Refund last purchase with StoreKit2</target>
- <note/>
- </trans-unit>
- <trans-unit id="Refund successful" xml:space="preserve">
- <source>Refund successful</source>
- <target state="needs-translation">Refund successful</target>
- <note/>
- </trans-unit>
- <trans-unit id="Remove" xml:space="preserve">
- <source>Remove</source>
- <target state="translated">Entfernen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Remove %@?" xml:space="preserve">
- <source>Remove %@?</source>
- <target state="translated">%@ entfernen?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Remove last used account" xml:space="preserve">
- <source>Remove last used account</source>
- <target state="needs-translation">Remove last used account</target>
- <note/>
- </trans-unit>
- <trans-unit id="Removing the saved account number from this device cannot be undone.&#10;Do you want to remove the saved account number?" xml:space="preserve">
- <source>Removing the saved account number from this device cannot be undone.
-Do you want to remove the saved account number?</source>
- <target state="needs-translation">Removing the saved account number from this device cannot be undone.
-Do you want to remove the saved account number?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Rented" xml:space="preserve">
- <source>Rented</source>
- <target state="translated">Gemietet</target>
- <note/>
- </trans-unit>
- <trans-unit id="Report a problem" xml:space="preserve">
- <source>Report a problem</source>
- <target state="translated">Problem melden</target>
- <note/>
- </trans-unit>
- <trans-unit id="Required" xml:space="preserve">
- <source>Required</source>
- <target state="translated">Erforderlich</target>
- <note/>
- </trans-unit>
- <trans-unit id="Restore purchases" xml:space="preserve">
- <source>Restore purchases</source>
- <target state="needs-translation">Restore purchases</target>
- <note/>
- </trans-unit>
- <trans-unit id="Save" xml:space="preserve">
- <source>Save</source>
- <target state="translated">Speichern</target>
- <note/>
- </trans-unit>
- <trans-unit id="Saving changes..." xml:space="preserve">
- <source>Saving changes...</source>
- <target state="needs-translation">Saving changes...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Search for..." xml:space="preserve">
- <source>Search for...</source>
- <target state="translated">Suchen nach …</target>
- <note/>
- </trans-unit>
- <trans-unit id="Select location" xml:space="preserve">
- <source>Select location</source>
- <target state="translated">Ort auswählen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Selected" xml:space="preserve">
- <source>Selected</source>
- <target state="needs-translation">Selected</target>
- <note/>
- </trans-unit>
- <trans-unit id="Send" xml:space="preserve">
- <source>Send</source>
- <target state="translated">Senden</target>
- <note/>
- </trans-unit>
- <trans-unit id="Send anyway" xml:space="preserve">
- <source>Send anyway</source>
- <target state="translated">Trotzdem senden</target>
- <note/>
- </trans-unit>
- <trans-unit id="Sending..." xml:space="preserve">
- <source>Sending...</source>
- <target state="translated">Wird gesendet...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Sent" xml:space="preserve">
- <source>Sent</source>
- <target state="translated">Gesendet</target>
- <note/>
- </trans-unit>
- <trans-unit id="Server" xml:space="preserve">
- <source>Server</source>
- <target state="needs-translation">Server</target>
- <note/>
- </trans-unit>
- <trans-unit id="Server IP override" xml:space="preserve">
- <source>Server IP override</source>
- <target state="translated">Server-IP überschreiben</target>
- <note/>
- </trans-unit>
- <trans-unit id="Server details" xml:space="preserve">
- <source>Server details</source>
- <target state="translated">Serverdaten</target>
- <note/>
- </trans-unit>
- <trans-unit id="Setting: %@" xml:space="preserve">
- <source>Setting: %@</source>
- <target state="needs-translation">Setting: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Settings" xml:space="preserve">
- <source>Settings</source>
- <target state="translated">Einstellungen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Settings migration error" xml:space="preserve">
- <source>Settings migration error</source>
- <target state="needs-translation">Settings migration error</target>
- <note/>
- </trans-unit>
- <trans-unit id="Shadowsocks" xml:space="preserve">
- <source>Shadowsocks</source>
- <target state="needs-translation">Shadowsocks</target>
- <note/>
- </trans-unit>
- <trans-unit id="Show account number" xml:space="preserve">
- <source>Show account number</source>
- <target state="translated">Kontonummer anzeigen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Social media" xml:space="preserve">
- <source>Social media</source>
- <target state="translated">Social Media</target>
- <note/>
- </trans-unit>
- <trans-unit id="Socks5" xml:space="preserve">
- <source>Socks5</source>
- <target state="needs-translation">Socks5</target>
- <note/>
- </trans-unit>
- <trans-unit id="Start using the app" xml:space="preserve">
- <source>Start using the app</source>
- <target state="translated">Mit dem Benutzen der App anfangen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Super!" xml:space="preserve">
- <source>Super!</source>
- <target state="needs-translation">Super!</target>
- <note/>
- </trans-unit>
- <trans-unit id="Switch location" xml:space="preserve">
- <source>Switch location</source>
- <target state="translated">Ort wechseln</target>
- <note/>
- </trans-unit>
- <trans-unit id="TCP" xml:space="preserve">
- <source>TCP</source>
- <target state="needs-translation">TCP</target>
- <note/>
- </trans-unit>
- <trans-unit id="TUNNEL ERROR" xml:space="preserve">
- <source>TUNNEL ERROR</source>
- <target state="needs-translation">TUNNEL ERROR</target>
- <note/>
- </trans-unit>
- <trans-unit id="Tap **Edit** to add at least one DNS server." xml:space="preserve">
- <source>Tap **Edit** to add at least one DNS server.</source>
- <target state="needs-translation">Tap **Edit** to add at least one DNS server.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Test method" xml:space="preserve">
- <source>Test method</source>
- <target state="translated">Methode testen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Testing..." xml:space="preserve">
- <source>Testing...</source>
- <target state="translated">Testen …</target>
- <note/>
- </trans-unit>
- <trans-unit id="Thanks for your purchase" xml:space="preserve">
- <source>Thanks for your purchase</source>
- <target state="needs-translation">Thanks for your purchase</target>
- <note/>
- </trans-unit>
- <trans-unit id="Thanks!" xml:space="preserve">
- <source>Thanks!</source>
- <target state="translated">Danke!</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app communicates with a Mullvad API server directly." xml:space="preserve">
- <source>The app communicates with a Mullvad API server directly.</source>
- <target state="needs-translation">The app communicates with a Mullvad API server directly.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app communicates with a Mullvad API server via a Mullvad bridge server." xml:space="preserve">
- <source>The app communicates with a Mullvad API server via a Mullvad bridge server.</source>
- <target state="needs-translation">The app communicates with a Mullvad API server via a Mullvad bridge server.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app communicates with a Mullvad API server via a proxy address." xml:space="preserve">
- <source>The app communicates with a Mullvad API server via a proxy address.</source>
- <target state="needs-translation">The app communicates with a Mullvad API server via a proxy address.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app needs to communicate with a Mullvad API server to log you in, fetch server lists, and other critical operations." xml:space="preserve">
- <source>The app needs to communicate with a Mullvad API server to log you in, fetch server lists, and other critical operations.</source>
- <target state="translated">Die App muss mit einem Mullvad API-Server kommunizieren, um Sie anzumelden, Serverlisten abzurufen und andere wichtige Vorgänge durchzuführen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app will test the method before saving." xml:space="preserve">
- <source>The app will test the method before saving.</source>
- <target state="needs-translation">The app will test the method before saving.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The automatic setting will randomly choose from the valid port ranges shown below." xml:space="preserve">
- <source>The automatic setting will randomly choose from the valid port ranges shown below.</source>
- <target state="translated">Die automatische Einstellung wählt zufällig aus den unten gezeigten gültigen Portbereichen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The custom port can be any value inside the valid ranges: %@." xml:space="preserve">
- <source>The custom port can be any value inside the valid ranges: %@.</source>
- <target state="translated">Der benutzerdefinierte Port kann ein beliebiger Wert innerhalb dieser gültigen Bereiche sein: %@.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The device will be removed from the list and logged out." xml:space="preserve">
- <source>The device will be removed from the list and logged out.</source>
- <target state="translated">Das Gerät wird aus der Liste entfernt und abgemeldet.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The entry and exit servers cannot be the same. Try changing one to a new server or location." xml:space="preserve">
- <source>The entry and exit servers cannot be the same. Try changing one to a new server or location.</source>
- <target state="needs-translation">The entry and exit servers cannot be the same. Try changing one to a new server or location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The entry server for %@ is currently overridden by %@. To select an entry server, please first enable “%@” or disable “%@“ in the settings." xml:space="preserve">
- <source>The entry server for %1$@ is currently overridden by %2$@. To select an entry server, please first enable “%3$@” or disable “%4$@“ in the settings.</source>
- <target state="needs-translation">The entry server for %1$@ is currently overridden by %2$@. To select an entry server, please first enable “%3$@” or disable “%4$@“ in the settings.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The payment request was cancelled." xml:space="preserve">
- <source>The payment request was cancelled.</source>
- <target state="needs-translation">The payment request was cancelled.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The selected WireGuard port is not supported, please change it under **VPN settings**." xml:space="preserve">
- <source>The selected WireGuard port is not supported, please change it under **VPN settings**.</source>
- <target state="needs-translation">The selected WireGuard port is not supported, please change it under **VPN settings**.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The version of settings stored on device is unrecognized.Settings will be reset to defaults and the device will be logged out." xml:space="preserve">
- <source>The version of settings stored on device is unrecognized.Settings will be reset to defaults and the device will be logged out.</source>
- <target state="needs-translation">The version of settings stored on device is unrecognized.Settings will be reset to defaults and the device will be logged out.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This can be useful if the API is censored but Mullvad’s bridge servers are not." xml:space="preserve">
- <source>This can be useful if the API is censored but Mullvad’s bridge servers are not.</source>
- <target state="translated">Dies kann nützlich sein, wenn die API zensiert ist, die Brückenserver von Mullvad aber nicht.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This can be useful when you are not affected by censorship." xml:space="preserve">
- <source>This can be useful when you are not affected by censorship.</source>
- <target state="translated">Dies kann nützlich sein, wenn Sie nicht von Zensur betroffen sind.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This device is not allowed to make the payment." xml:space="preserve">
- <source>This device is not allowed to make the payment.</source>
- <target state="needs-translation">This device is not allowed to make the payment.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc." xml:space="preserve">
- <source>This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc.</source>
- <target state="translated">Diese Funktion ermöglicht den Zugriff auf andere Geräte im lokalen Netzwerk, z. B. zum Teilen, Drucken, Streamen usw.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This feature allows you to circumvent that censorship by adding custom ways to access the API via proxies and similar methods." xml:space="preserve">
- <source>This feature allows you to circumvent that censorship by adding custom ways to access the API via proxies and similar methods.</source>
- <target state="translated">Mit dieser Funktion können Sie diese Zensur umgehen, indem Sie benutzerdefinierte Wege zum Zugriff auf die API über Proxys und ähnliche Methoden hinzufügen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers." xml:space="preserve">
- <source>This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers.</source>
- <target state="translated">Diese Funktion macht den WireGuard-Tunnel resistent gegen mögliche Angriffe von Quantencomputern.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This is the name assigned to the device. Each device logged in on a Mullvad account gets a unique name that helps you identify it when you manage your devices in the app or on the website." xml:space="preserve">
- <source>This is the name assigned to the device. Each device logged in on a Mullvad account gets a unique name that helps you identify it when you manage your devices in the app or on the website.</source>
- <target state="translated">Dies ist der dem Gerät zugewiesene Name. Jedes Gerät, das in einem Mullvad-Konto angemeldet ist, erhält einen eindeutigen Namen, mit dem Sie es identifizieren können, wenn Sie Ihre Geräte in der App oder auf der Website verwalten.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This logs out all devices using this account and all VPN access will be denied even if there is time left on the account. Enter the last 4 digits of the account number and hit &quot;Delete account&quot; if you really want to delete the account:" xml:space="preserve">
- <source>This logs out all devices using this account and all VPN access will be denied even if there is time left on the account. Enter the last 4 digits of the account number and hit "Delete account" if you really want to delete the account:</source>
- <target state="needs-translation">This logs out all devices using this account and all VPN access will be denied even if there is time left on the account. Enter the last 4 digits of the account number and hit "Delete account" if you really want to delete the account:</target>
- <note/>
- </trans-unit>
- <trans-unit id="This might cause issues on certain websites, services, and apps." xml:space="preserve">
- <source>This might cause issues on certain websites, services, and apps.</source>
- <target state="translated">Dies kann bei bestimmten Websites, Diensten und Apps zu Problemen führen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This voucher code has already been used." xml:space="preserve">
- <source>This voucher code has already been used.</source>
- <target state="needs-translation">This voucher code has already been used.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Time left: %@" xml:space="preserve">
- <source>Time left: %@</source>
- <target state="needs-translation">Time left: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="To add more, you will need to disconnect and access the Internet with an unsecure connection." xml:space="preserve">
- <source>To add more, you will need to disconnect and access the Internet with an unsecure connection.</source>
- <target state="translated">Um mehr hinzuzufügen, müssen Sie Ihre Verbindung trennen und mit einer unsicheren Verbindung auf das Internet zugreifen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To assist you better, please write in English or Swedish and include which country you are connecting from." xml:space="preserve">
- <source>To assist you better, please write in English or Swedish and include which country you are connecting from.</source>
- <target state="translated">Um Ihnen besser weiterhelfen zu können, schreiben Sie uns bitte auf Englisch oder Schwedisch und geben Sie an, aus welchem Land Sie die Verbindung herstellen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To circumvent this you can import a file or a text, provided by our support team, with new IP addresses that override the default addresses of the servers in the Select location view." xml:space="preserve">
- <source>To circumvent this you can import a file or a text, provided by our support team, with new IP addresses that override the default addresses of the servers in the Select location view.</source>
- <target state="translated">Um dies zu umgehen, können Sie eine Datei oder einen von unserem Support-Team bereitgestellten Text mit neuen IP-Adressen importieren, die die Standardadressen der Server in der Ortsauswahl außer Kraft setzen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools." xml:space="preserve">
- <source>To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools.</source>
- <target state="translated">Besuchen Sie unsere Website, um mehr über datenschutzfreundliche Gewohnheiten &amp; Tools zu erfahren und Ihre Reise als Datenschutz-Ninja fortzufahren.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To create a custom list, tap on &quot;...&quot; " xml:space="preserve">
- <source>To create a custom list, tap on "..." </source>
- <target state="needs-translation">To create a custom list, tap on "..." </target>
- <note/>
- </trans-unit>
- <trans-unit id="To enable this setting, add at least one server." xml:space="preserve">
- <source>To enable this setting, add at least one server.</source>
- <target state="needs-translation">To enable this setting, add at least one server.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To help you more effectively, your app’s log file will be attached to this message. Your data will remain secure and private, as it is anonymised before being sent over an encrypted channel." xml:space="preserve">
- <source>To help you more effectively, your app’s log file will be attached to this message. Your data will remain secure and private, as it is anonymised before being sent over an encrypted channel.</source>
- <target state="translated">Damit wir Ihnen besser helfen können, wird die Protokolldatei Ihrer App an diese Nachricht angehängt. Ihre Daten bleiben sicher und privat, da sie vor dem Senden über einen verschlüsselten Kanal anonymisiert werden.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To start using the app, you first need to add time to your account." xml:space="preserve">
- <source>To start using the app, you first need to add time to your account.</source>
- <target state="translated">Um mit der Nutzung dieser App zu beginnen, müssen Sie erst einmal Zeit zu Ihrem Konto hinzufügen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Too many devices" xml:space="preserve">
- <source>Too many devices</source>
- <target state="translated">Zu viele Geräte</target>
- <note/>
- </trans-unit>
- <trans-unit id="Trackers" xml:space="preserve">
- <source>Trackers</source>
- <target state="translated">Tracker</target>
- <note/>
- </trans-unit>
- <trans-unit id="Try again" xml:space="preserve">
- <source>Try again</source>
- <target state="translated">Erneut versuchen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Tunnel is unset." xml:space="preserve">
- <source>Tunnel is unset.</source>
- <target state="needs-translation">Tunnel is unset.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Type" xml:space="preserve">
- <source>Type</source>
- <target state="translated">Typ</target>
- <note/>
- </trans-unit>
- <trans-unit id="UDP" xml:space="preserve">
- <source>UDP</source>
- <target state="needs-translation">UDP</target>
- <note/>
- </trans-unit>
- <trans-unit id="UDP-over-TCP" xml:space="preserve">
- <source>UDP-over-TCP</source>
- <target state="translated">UDP über TCP</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unable to authenticate account. Please log out and log back in." xml:space="preserve">
- <source>Unable to authenticate account. Please log out and log back in.</source>
- <target state="needs-translation">Unable to authenticate account. Please log out and log back in.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unable to start tunnel connection after update. Please disconnect and reconnect." xml:space="preserve">
- <source>Unable to start tunnel connection after update. Please disconnect and reconnect.</source>
- <target state="needs-translation">Unable to start tunnel connection after update. Please disconnect and reconnect.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unable to start tunnel connection. Please send a problem report." xml:space="preserve">
- <source>Unable to start tunnel connection. Please send a problem report.</source>
- <target state="translated">Die Tunnelverbindung konnte nicht gestartet werden. Bitte senden Sie einen Problembericht.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unexpected server response: %1$@ (HTTP status: %2$d)" xml:space="preserve">
- <source>Unexpected server response: %1$@ (HTTP status: %2$d)</source>
- <target state="needs-translation">Unexpected server response: %1$@ (HTTP status: %2$d)</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unexpected server response: %d" xml:space="preserve">
- <source>Unexpected server response: %d</source>
- <target state="needs-translation">Unexpected server response: %d</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unknown error." xml:space="preserve">
- <source>Unknown error.</source>
- <target state="translated">Unbekannter Fehler.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Use custom DNS server" xml:space="preserve">
- <source>Use custom DNS server</source>
- <target state="translated">Benutzerdefinierten DNS-Server verwenden</target>
- <note/>
- </trans-unit>
- <trans-unit id="Username" xml:space="preserve">
- <source>Username</source>
- <target state="translated">Benutzername</target>
- <note/>
- </trans-unit>
- <trans-unit id="VPN settings" xml:space="preserve">
- <source>VPN settings</source>
- <target state="translated">VPN-Einstellungen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Valid range: %d - %d" xml:space="preserve">
- <source>Valid range: %1$d - %2$d</source>
- <target state="translated">Gültiger Bereich: %1$d–%2$d</target>
- <note/>
- </trans-unit>
- <trans-unit id="Verifying voucher..." xml:space="preserve">
- <source>Verifying voucher...</source>
- <target state="translated">Gutschein wird verifiziert ...</target>
- <note/>
- </trans-unit>
- <trans-unit id="View and manage all your logged in devices. You can have up to 5 devices on one account at a time. Each device gets a name when logged in to help you tell them apart easily." xml:space="preserve">
- <source>View and manage all your logged in devices. You can have up to 5 devices on one account at a time. Each device gets a name when logged in to help you tell them apart easily.</source>
- <target state="translated">Lassen Sie all Ihre angemeldeten Geräte anzeigen und verwalten Sie sie. Sie können bis zu fünf Geräte gleichzeitig bei einem Konto haben. Jedes Gerät bekommt beim Anmelden einen Namen, damit Sie sie leicht unterscheiden können.</target>
- <note/>
- </trans-unit>
- <trans-unit id="View app logs" xml:space="preserve">
- <source>View app logs</source>
- <target state="translated">App-Protokolle anzeigen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Voucher code is invalid." xml:space="preserve">
- <source>Voucher code is invalid.</source>
- <target state="translated">Der Gutscheincode ist ungültig.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Voucher was successfully redeemed." xml:space="preserve">
- <source>Voucher was successfully redeemed.</source>
- <target state="translated">Der Gutschein wurde erfolgreich eingelöst.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Warning: The malware blocker is not an anti-virus and should not be treated as such, this is just an extra layer of protection." xml:space="preserve">
- <source>Warning: The malware blocker is not an anti-virus and should not be treated as such, this is just an extra layer of protection.</source>
- <target state="translated">Der Malware-Blocker ist kein Antivirusprogramm und sollte auch nicht als solches behandelt werden. Es dient lediglich als zusätzliche Schutzschicht.</target>
- <note/>
- </trans-unit>
- <trans-unit id="We are having some issues, please try again later" xml:space="preserve">
- <source>We are having some issues, please try again later</source>
- <target state="needs-translation">We are having some issues, please try again later</target>
- <note/>
- </trans-unit>
- <trans-unit id="We will look into this." xml:space="preserve">
- <source>We will look into this.</source>
- <target state="translated">Wir werden uns das anschauen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Welcome, this device is now called **%@**. For more details see the info button in Account." xml:space="preserve">
- <source>Welcome, this device is now called **%@**. For more details see the info button in Account.</source>
- <target state="needs-translation">Welcome, this device is now called **%@**. For more details see the info button in Account.</target>
- <note/>
- </trans-unit>
- <trans-unit id="What’s new" xml:space="preserve">
- <source>What’s new</source>
- <target state="translated">Was ist neu?</target>
- <note/>
- </trans-unit>
- <trans-unit id="When this feature is enabled it stops the device from contacting certain domains or websites known for distributing ads, malware, trackers and more." xml:space="preserve">
- <source>When this feature is enabled it stops the device from contacting certain domains or websites known for distributing ads, malware, trackers and more.</source>
- <target state="translated">Wenn diese Funktion aktiviert ist, wird das Gerät daran gehindert, bestimmte Domains oder Websites zu kontaktieren, die für die Verbreitung von Werbung, Malware, Trackern und mehr bekannt sind.</target>
- <note/>
- </trans-unit>
- <trans-unit id="When using DAITA, one provider with DAITA-enabled servers is required." xml:space="preserve">
- <source>When using DAITA, one provider with DAITA-enabled servers is required.</source>
- <target state="needs-translation">When using DAITA, one provider with DAITA-enabled servers is required.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Which TCP port the UDP-over-TCP obfuscation protocol should connect to on the VPN server." xml:space="preserve">
- <source>Which TCP port the UDP-over-TCP obfuscation protocol should connect to on the VPN server.</source>
- <target state="translated">Mit welchem TCP-Port sich das UDP-über-TCP-Verschleierungsprotokoll auf dem VPN-Server verbinden soll.</target>
- <note/>
- </trans-unit>
- <trans-unit id="WireGuard obfuscation" xml:space="preserve">
- <source>WireGuard obfuscation</source>
- <target state="translated">WireGuard-Verschleierung</target>
- <note/>
- </trans-unit>
- <trans-unit id="WireGuard port" xml:space="preserve">
- <source>WireGuard port</source>
- <target state="translated">WireGuard-Port</target>
- <note/>
- </trans-unit>
- <trans-unit id="With the “Direct” method, the app communicates with a Mullvad API server directly without any intermediate proxies." xml:space="preserve">
- <source>With the “Direct” method, the app communicates with a Mullvad API server directly without any intermediate proxies.</source>
- <target state="translated">Mit der Methode „Direkt“ kommuniziert die App direkt mit einem Mullvad API-Server ohne zwischengeschaltete Proxys.</target>
- <note/>
- </trans-unit>
- <trans-unit id="With the “Encrypted DNS proxy” method, the app will communicate with our Mullvad API through a proxy address. It does this by retrieving an address from a DNS over HTTPS (DoH) server and then using that to reach our API servers." xml:space="preserve">
- <source>With the “Encrypted DNS proxy” method, the app will communicate with our Mullvad API through a proxy address. It does this by retrieving an address from a DNS over HTTPS (DoH) server and then using that to reach our API servers.</source>
- <target state="translated">Mit der Methode „Verschlüsseltes-DNS-Proxy“ kommuniziert die App mit unserer Mullvad-API über eine Proxy-Adresse. Sie tut dies, indem sie eine Adresse von einem DNS-over-HTTPS-Server (DoH) abruft und dann diese verwendet, um unsere API-Server zu erreichen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="With the “Mullvad bridges” method, the app communicates with a Mullvad API server via a Mullvad bridge server. It does this by sending the traffic obfuscated by Shadowsocks." xml:space="preserve">
- <source>With the “Mullvad bridges” method, the app communicates with a Mullvad API server via a Mullvad bridge server. It does this by sending the traffic obfuscated by Shadowsocks.</source>
- <target state="translated">Mit „Mullvad-Brücken“ kommuniziert die App mit einem Mullvad API-Server über einen Mullvad Brücken-Server. Dazu sendet sie den von Shadowsocks verschleierten Traffic.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Yes, continue" xml:space="preserve">
- <source>Yes, continue</source>
- <target state="needs-translation">Yes, continue</target>
- <note/>
- </trans-unit>
- <trans-unit id="Yes, log out device" xml:space="preserve">
- <source>Yes, log out device</source>
- <target state="translated">Ja, von Gerät abmelden</target>
- <note/>
- </trans-unit>
- <trans-unit id="You already have a saved account number, by creating a new account the saved account number will be removed from this device. This cannot be undone." xml:space="preserve">
- <source>You already have a saved account number, by creating a new account the saved account number will be removed from this device. This cannot be undone.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Sie haben bereits eine gespeicherte Kontonummer. Wenn Sie ein neues Konto erstellen, wird die gespeicherte Kontonummer von diesem Gerät entfernt. Dies kann nicht rückgängig gemacht werden.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You are about to send the problem report without a way for us to get back to you. If you want an answer to your report you will have to enter an email address." xml:space="preserve">
- <source>You are about to send the problem report without a way for us to get back to you. If you want an answer to your report you will have to enter an email address.</source>
- <target state="translated">Sie wollen einen Problembericht senden, ohne uns die Möglichkeit zu geben, Sie zu erreichen. Wenn Sie sich eine Antwort zu Ihrem Problem wünschen, müssen Sie eine E-Mail-Adresse eingeben.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You are logged in with an invalid account number. Please log out and try another one." xml:space="preserve">
- <source>You are logged in with an invalid account number. Please log out and try another one.</source>
- <target state="translated">Sie sind mit einer ungültigen Kontonummer angemeldet. Bitte melden Sie sich ab und versuchen Sie es mit einer anderen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You can add more time via the account view or website to continue using the VPN." xml:space="preserve">
- <source>You can add more time via the account view or website to continue using the VPN.</source>
- <target state="needs-translation">You can add more time via the account view or website to continue using the VPN.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You can have up to 5 devices logged in on one Mullvad account." xml:space="preserve">
- <source>You can have up to 5 devices logged in on one Mullvad account.</source>
- <target state="translated">Es sind pro Mullvad-Konto bis zu 5 angemeldete Geräte möglich.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You can now continue logging in on this device." xml:space="preserve">
- <source>You can now continue logging in on this device.</source>
- <target state="translated">Sie können jetzt mit der Anmeldung auf diesem Gerät fortfahren.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You can use the &quot;restore purchases&quot; function to check for any in-app payments made via Apple services. If there is a payment that has not been credited, it will add the time to the currently logged in Mullvad account." xml:space="preserve">
- <source>You can use the "restore purchases" function to check for any in-app payments made via Apple services. If there is a payment that has not been credited, it will add the time to the currently logged in Mullvad account.</source>
- <target state="needs-translation">You can use the "restore purchases" function to check for any in-app payments made via Apple services. If there is a payment that has not been credited, it will add the time to the currently logged in Mullvad account.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have %@ left on this account." xml:space="preserve">
- <source>You have %@ left on this account.</source>
- <target state="needs-translation">You have %@ left on this account.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have a right to privacy. That’s why we never store activity logs, don’t ask for personal information, and encourage anonymous payments.&#10;&#10;In some situations, as outlined in our privacy policy, we might process personal data that you choose to send, for example if you email us.&#10;&#10;We strongly believe in retaining as little data as possible because we want you to remain anonymous." xml:space="preserve">
- <source>You have a right to privacy. That’s why we never store activity logs, don’t ask for personal information, and encourage anonymous payments.
-
-In some situations, as outlined in our privacy policy, we might process personal data that you choose to send, for example if you email us.
-
-We strongly believe in retaining as little data as possible because we want you to remain anonymous.</source>
- <target state="needs-translation">You have a right to privacy. That’s why we never store activity logs, don’t ask for personal information, and encourage anonymous payments.
-
-In some situations, as outlined in our privacy policy, we might process personal data that you choose to send, for example if you email us.
-
-We strongly believe in retaining as little data as possible because we want you to remain anonymous.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have no more VPN time left on this account. " xml:space="preserve">
- <source>You have no more VPN time left on this account. </source>
- <target state="translated">Sie haben keine VPN-Zeit mehr auf diesem Konto. </target>
- <note/>
- </trans-unit>
- <trans-unit id="You have one day left on this account. Please add more time to continue using the VPN." xml:space="preserve">
- <source>You have one day left on this account. Please add more time to continue using the VPN.</source>
- <target state="needs-translation">You have one day left on this account. Please add more time to continue using the VPN.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have removed this device. To connect again, you will need to log back in." xml:space="preserve">
- <source>You have removed this device. To connect again, you will need to log back in.</source>
- <target state="translated">Sie haben dieses Gerät entfernt. Um sich erneut zu verbinden, müssen Sie sich erneut anmelden.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have unsaved changes." xml:space="preserve">
- <source>You have unsaved changes.</source>
- <target state="needs-translation">You have unsaved changes.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your device is offline. The tunnel will automatically connect once your device is back online." xml:space="preserve">
- <source>Your device is offline. The tunnel will automatically connect once your device is back online.</source>
- <target state="translated">Ihr Gerät ist offline. Der Tunnel wird automatisch verbunden, sobald Ihr Gerät wieder online ist.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your device is offline. Try connecting again when the device has access to Internet." xml:space="preserve">
- <source>Your device is offline. Try connecting again when the device has access to Internet.</source>
- <target state="needs-translation">Your device is offline. Try connecting again when the device has access to Internet.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your email (optional)" xml:space="preserve">
- <source>Your email (optional)</source>
- <target state="translated">Ihre E-Mail-Adresse (optional)</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your previous purchases have already been added to this account." xml:space="preserve">
- <source>Your previous purchases have already been added to this account.</source>
- <target state="needs-translation">Your previous purchases have already been added to this account.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your purchase was successfully refunded." xml:space="preserve">
- <source>Your purchase was successfully refunded.</source>
- <target state="needs-translation">Your purchase was successfully refunded.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You’re all set!!" xml:space="preserve">
- <source>You’re all set!!</source>
- <target state="translated">Sie sind startklar!!</target>
- <note/>
- </trans-unit>
- <trans-unit id="file" xml:space="preserve">
- <source>file</source>
- <target state="translated">datei</target>
- <note/>
- </trans-unit>
- <trans-unit id="method" xml:space="preserve">
- <source>method</source>
- <target state="needs-translation">method</target>
- <note/>
- </trans-unit>
- <trans-unit id="multihop" xml:space="preserve">
- <source>multihop</source>
- <target state="needs-translation">multihop</target>
- <note/>
- </trans-unit>
- <trans-unit id="text" xml:space="preserve">
- <source>text</source>
- <target state="needs-translation">text</target>
- <note/>
- </trans-unit>
- <trans-unit id="value" xml:space="preserve">
- <source>value</source>
- <target state="needs-translation">value</target>
- <note/>
- </trans-unit>
- <trans-unit id="“%@ Local network sharing” requires restarting the VPN connection, which will disconnect you and briefly expose your traffic.&#10;To prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing.&#10;Would you like to continue to enable “Local network sharing”?" xml:space="preserve">
- <source>“%@ Local network sharing” requires restarting the VPN connection, which will disconnect you and briefly expose your traffic.
-To prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing.
-Would you like to continue to enable “Local network sharing”?</source>
- <target state="needs-translation">“%@ Local network sharing” requires restarting the VPN connection, which will disconnect you and briefly expose your traffic.
-To prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing.
-Would you like to continue to enable “Local network sharing”?</target>
- <note/>
- </trans-unit>
- </body>
- </file>
- <file original="Assets/MullvadSettings-InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="Assets/MullvadTypes-InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadLogging-InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadMockData/MullvadMockData-InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadREST/InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadRustRuntime-InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadVPN/Supporting Files/InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSLocalNetworkUsageDescription" xml:space="preserve">
- <source>The app needs this to connect and test a new method.</source>
- <target state="needs-translation">The app needs this to connect and test a new method.</target>
- <note>Privacy - Local Network Usage Description</note>
- </trans-unit>
- </body>
- </file>
- <file original="Operations/Operations-InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="PacketTunnel/InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- </body>
- </file>
- <file original="PacketTunnel/Localizable.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="%@ was added to your account." xml:space="preserve">
- <source>%@ was added to your account.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">%@ wurde zu Ihrem Konto hinzugefügt.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot complete the purchase" xml:space="preserve">
- <source>Cannot complete the purchase</source>
- <target state="needs-translation">Cannot complete the purchase</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot restore purchases" xml:space="preserve">
- <source>Cannot restore purchases</source>
- <target state="needs-translation">Cannot restore purchases</target>
- <note/>
- </trans-unit>
- <trans-unit id="Restore purchases" xml:space="preserve">
- <source>Restore purchases</source>
- <target state="needs-translation">Restore purchases</target>
- <note/>
- </trans-unit>
- <trans-unit id="Thanks for your purchase" xml:space="preserve">
- <source>Thanks for your purchase</source>
- <target state="needs-translation">Thanks for your purchase</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your previous purchases have already been added to this account." xml:space="preserve">
- <source>Your previous purchases have already been added to this account.</source>
- <target state="needs-translation">Your previous purchases have already been added to this account.</target>
- <note/>
- </trans-unit>
- </body>
- </file>
- <file original="PacketTunnelCore/PacketTunnelCore-InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="Routing/Routing-InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/ios/translation/locales/en.xliff b/ios/translation/locales/en.xliff
index d87f1a08e9..28bfc0d768 100644
--- a/ios/translation/locales/en.xliff
+++ b/ios/translation/locales/en.xliff
@@ -45,9 +45,9 @@
<target state="new">%1$@, %2$@</target>
<note/>
</trans-unit>
- <trans-unit id="%@: Multihop" xml:space="preserve">
- <source>%@: Multihop</source>
- <target state="new">%@: Multihop</target>
+ <trans-unit id="%@-enabled" xml:space="preserve">
+ <source>%@-enabled</source>
+ <target state="new">%@-enabled</target>
<note/>
</trans-unit>
<trans-unit id="%d more..." xml:space="preserve">
@@ -90,26 +90,16 @@
<target state="new">API unreachable, save method anyway?</target>
<note/>
</trans-unit>
+ <trans-unit id="About %@ method..." xml:space="preserve">
+ <source>About %@ method...</source>
+ <target state="new">About %@ method...</target>
+ <note/>
+ </trans-unit>
<trans-unit id="About API access…" xml:space="preserve">
<source>About API access…</source>
<target state="new">About API access…</target>
<note/>
</trans-unit>
- <trans-unit id="About Direct method..." xml:space="preserve">
- <source>About Direct method...</source>
- <target state="new">About Direct method...</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Encrypted DNS proxy method..." xml:space="preserve">
- <source>About Encrypted DNS proxy method...</source>
- <target state="new">About Encrypted DNS proxy method...</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Mullvad bridges method..." xml:space="preserve">
- <source>About Mullvad bridges method...</source>
- <target state="new">About Mullvad bridges method...</target>
- <note/>
- </trans-unit>
<trans-unit id="About Server IP override..." xml:space="preserve">
<source>About Server IP override...</source>
<target state="new">About Server IP override...</target>
@@ -155,14 +145,14 @@
<target state="new">Add</target>
<note/>
</trans-unit>
- <trans-unit id="Add 30 days" xml:space="preserve">
- <source>Add 30 days</source>
- <target state="new">Add 30 days</target>
+ <trans-unit id="Add 30 days time (%@)" xml:space="preserve">
+ <source>Add 30 days time (%@)</source>
+ <target state="new">Add 30 days time (%@)</target>
<note/>
</trans-unit>
- <trans-unit id="Add 90 days" xml:space="preserve">
- <source>Add 90 days</source>
- <target state="new">Add 90 days</target>
+ <trans-unit id="Add 90 days time (%@)" xml:space="preserve">
+ <source>Add 90 days time (%@)</source>
+ <target state="new">Add 90 days time (%@)</target>
<note/>
</trans-unit>
<trans-unit id="Add a server" xml:space="preserve">
@@ -170,21 +160,11 @@
<target state="new">Add a server</target>
<note/>
</trans-unit>
- <trans-unit id="Add locations" xml:space="preserve">
- <source>Add locations</source>
- <target state="new">Add locations</target>
- <note/>
- </trans-unit>
<trans-unit id="Add method" xml:space="preserve">
<source>Add method</source>
<target state="new">Add method</target>
<note/>
</trans-unit>
- <trans-unit id="Add new list" xml:space="preserve">
- <source>Add new list</source>
- <target state="new">Add new list</target>
- <note/>
- </trans-unit>
<trans-unit id="Add time" xml:space="preserve">
<source>Add time</source>
<target state="new">Add time</target>
@@ -245,9 +225,9 @@
<target state="new">At least one method needs to be enabled.</target>
<note/>
</trans-unit>
- <trans-unit id="Attention: this setting cannot be used in combination with **“%@“**." xml:space="preserve">
- <source>Attention: this setting cannot be used in combination with **“%@“**.</source>
- <target state="new">Attention: this setting cannot be used in combination with **“%@“**.</target>
+ <trans-unit id="Attention: this setting cannot be used in combination with **%@**" xml:space="preserve">
+ <source>Attention: this setting cannot be used in combination with **%@**</source>
+ <target state="new">Attention: this setting cannot be used in combination with **%@**</target>
<note/>
</trans-unit>
<trans-unit id="Attention: toggling “Local network sharing” requires restarting the VPN connection." xml:space="preserve">
@@ -265,16 +245,16 @@
<target state="new">Automatic</target>
<note/>
</trans-unit>
+ <trans-unit id="BLOCKED CONNECTION" xml:space="preserve">
+ <source>BLOCKED CONNECTION</source>
+ <target state="new">BLOCKED CONNECTION</target>
+ <note/>
+ </trans-unit>
<trans-unit id="BLOCKING INTERNET" xml:space="preserve">
<source>BLOCKING INTERNET</source>
<target state="new">BLOCKING INTERNET</target>
<note/>
</trans-unit>
- <trans-unit id="Blocked connection" xml:space="preserve">
- <source>Blocked connection</source>
- <target state="new">Blocked connection</target>
- <note/>
- </trans-unit>
<trans-unit id="Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN." xml:space="preserve">
<source>Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN.</source>
<target state="new">Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN.</target>
@@ -290,6 +270,16 @@
<target state="new">By using sophisticated AI it’s possible to analyze the traffic of data packets going in and out of your device (even if the traffic is encrypted).</target>
<note/>
</trans-unit>
+ <trans-unit id="CONNECTED" xml:space="preserve">
+ <source>CONNECTED</source>
+ <target state="new">CONNECTED</target>
+ <note/>
+ </trans-unit>
+ <trans-unit id="CONNECTING..." xml:space="preserve">
+ <source>CONNECTING...</source>
+ <target state="new">CONNECTING...</target>
+ <note/>
+ </trans-unit>
<trans-unit id="Cancel" xml:space="preserve">
<source>Cancel</source>
<target state="new">Cancel</target>
@@ -370,24 +360,14 @@
<target state="new">Connect</target>
<note/>
</trans-unit>
- <trans-unit id="Connected" xml:space="preserve">
- <source>Connected</source>
- <target state="new">Connected</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connected to %@, %@" xml:space="preserve">
- <source>Connected to %1$@, %2$@</source>
- <target state="new">Connected to %1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connecting to %@, %@" xml:space="preserve">
- <source>Connecting to %1$@, %2$@</source>
- <target state="new">Connecting to %1$@, %2$@</target>
+ <trans-unit id="Connected to %@" xml:space="preserve">
+ <source>Connected to %@</source>
+ <target state="new">Connected to %@</target>
<note/>
</trans-unit>
- <trans-unit id="Connecting..." xml:space="preserve">
- <source>Connecting...</source>
- <target state="new">Connecting...</target>
+ <trans-unit id="Connecting to %@" xml:space="preserve">
+ <source>Connecting to %@</source>
+ <target state="new">Connecting to %@</target>
<note/>
</trans-unit>
<trans-unit id="Connection details" xml:space="preserve">
@@ -405,11 +385,6 @@
<target state="new">Copied Mullvad account number to pasteboard</target>
<note/>
</trans-unit>
- <trans-unit id="Correct account number" xml:space="preserve">
- <source>Correct account number</source>
- <target state="new">Correct account number</target>
- <note/>
- </trans-unit>
<trans-unit id="Create" xml:space="preserve">
<source>Create</source>
<target state="new">Create</target>
@@ -425,14 +400,19 @@
<target state="new">Create new account</target>
<note/>
</trans-unit>
+ <trans-unit id="Create new list" xml:space="preserve">
+ <source>Create new list</source>
+ <target state="new">Create new list</target>
+ <note/>
+ </trans-unit>
<trans-unit id="Created: %@" xml:space="preserve">
<source>Created: %@</source>
<target state="new">Created: %@</target>
<note/>
</trans-unit>
- <trans-unit id="Creating new account" xml:space="preserve">
- <source>Creating new account</source>
- <target state="new">Creating new account</target>
+ <trans-unit id="Creating account..." xml:space="preserve">
+ <source>Creating account...</source>
+ <target state="new">Creating account...</target>
<note/>
</trans-unit>
<trans-unit id="Current device" xml:space="preserve">
@@ -470,9 +450,14 @@
<target state="new">DAITA isn't available on the current entry server. After enabling, please go to the "Select location" view and select an entry location that supports DAITA.</target>
<note/>
</trans-unit>
- <trans-unit id="DAITA-enabled" xml:space="preserve">
- <source>DAITA-enabled</source>
- <target state="new">DAITA-enabled</target>
+ <trans-unit id="DISCONNECTED" xml:space="preserve">
+ <source>DISCONNECTED</source>
+ <target state="new">DISCONNECTED</target>
+ <note/>
+ </trans-unit>
+ <trans-unit id="DISCONNECTING..." xml:space="preserve">
+ <source>DISCONNECTING...</source>
+ <target state="new">DISCONNECTING...</target>
<note/>
</trans-unit>
<trans-unit id="DNS content blockers" xml:space="preserve">
@@ -485,11 +470,6 @@
<target state="new">DNS settings</target>
<note/>
</trans-unit>
- <trans-unit id="Defense against AI-guided Traffic Analysis" xml:space="preserve">
- <source>Defense against AI-guided Traffic Analysis</source>
- <target state="new">Defense against AI-guided Traffic Analysis</target>
- <note/>
- </trans-unit>
<trans-unit id="Delete" xml:space="preserve">
<source>Delete</source>
<target state="new">Delete</target>
@@ -545,11 +525,6 @@
<target state="new">Disable all "%@" above to activate this setting.</target>
<note/>
</trans-unit>
- <trans-unit id="Disabled" xml:space="preserve">
- <source>Disabled</source>
- <target state="new">Disabled</target>
- <note/>
- </trans-unit>
<trans-unit id="Disabling" xml:space="preserve">
<source>Disabling</source>
<target state="new">Disabling</target>
@@ -565,16 +540,6 @@
<target state="new">Disconnect</target>
<note/>
</trans-unit>
- <trans-unit id="Disconnected" xml:space="preserve">
- <source>Disconnected</source>
- <target state="new">Disconnected</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disconnecting..." xml:space="preserve">
- <source>Disconnecting...</source>
- <target state="new">Disconnecting...</target>
- <note/>
- </trans-unit>
<trans-unit id="Do you agree to remaining anonymous?" xml:space="preserve">
<source>Do you agree to remaining anonymous?</source>
<target state="new">Do you agree to remaining anonymous?</target>
@@ -605,14 +570,9 @@
<target state="new">Edit custom list</target>
<note/>
</trans-unit>
- <trans-unit id="Edit lists" xml:space="preserve">
- <source>Edit lists</source>
- <target state="new">Edit lists</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit locations" xml:space="preserve">
- <source>Edit locations</source>
- <target state="new">Edit locations</target>
+ <trans-unit id="Edit custom lists" xml:space="preserve">
+ <source>Edit custom lists</source>
+ <target state="new">Edit custom lists</target>
<note/>
</trans-unit>
<trans-unit id="Edit message" xml:space="preserve">
@@ -620,6 +580,11 @@
<target state="new">Edit message</target>
<note/>
</trans-unit>
+ <trans-unit id="Edit method" xml:space="preserve">
+ <source>Edit method</source>
+ <target state="new">Edit method</target>
+ <note/>
+ </trans-unit>
<trans-unit id="Either buy credit on our website or make an in-app purchase via the **Add time** button below." xml:space="preserve">
<source>Either buy credit on our website or make an in-app purchase via the **Add time** button below.</source>
<target state="new">Either buy credit on our website or make an in-app purchase via the **Add time** button below.</target>
@@ -635,11 +600,6 @@
<target state="new">Enable</target>
<note/>
</trans-unit>
- <trans-unit id="Enable &quot;%@&quot;" xml:space="preserve">
- <source>Enable "%@"</source>
- <target state="new">Enable "%@"</target>
- <note/>
- </trans-unit>
<trans-unit id="Enable method" xml:space="preserve">
<source>Enable method</source>
<target state="new">Enable method</target>
@@ -725,11 +685,6 @@
<target state="new">Failed to stop the tunnel: %@.</target>
<note/>
</trans-unit>
- <trans-unit id="Failed to validate account number: %@" xml:space="preserve">
- <source>Failed to validate account number: %@</source>
- <target state="new">Failed to validate account number: %@</target>
- <note/>
- </trans-unit>
<trans-unit id="Fetching devices..." xml:space="preserve">
<source>Fetching devices...</source>
<target state="new">Fetching devices...</target>
@@ -780,6 +735,11 @@
<target state="new">Hide account number</target>
<note/>
</trans-unit>
+ <trans-unit id="IMPORT SUCCESSFUL" xml:space="preserve">
+ <source>IMPORT SUCCESSFUL</source>
+ <target state="new">IMPORT SUCCESSFUL</target>
+ <note/>
+ </trans-unit>
<trans-unit id="If an observer monitors these data packets, %@ makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating." xml:space="preserve">
<source>If an observer monitors these data packets, %@ makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating.</source>
<target state="new">If an observer monitors these data packets, %@ makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating.</target>
@@ -795,9 +755,9 @@
<target state="new">If you are having issues connecting to VPN servers, please contact support.</target>
<note/>
</trans-unit>
- <trans-unit id="If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare." xml:space="preserve">
- <source>If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare.</source>
- <target state="new">If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare.</target>
+ <trans-unit id="If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or CloudFlare." xml:space="preserve">
+ <source>If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or CloudFlare.</source>
+ <target state="new">If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or CloudFlare.</target>
<note/>
</trans-unit>
<trans-unit id="If you disconnect now, you won’t be able to secure your connection until the device is online." xml:space="preserve">
@@ -850,9 +810,14 @@
<target state="new">Import of %@ was unsuccessful, please try again.</target>
<note/>
</trans-unit>
- <trans-unit id="Import successful" xml:space="preserve">
- <source>Import successful</source>
- <target state="new">Import successful</target>
+ <trans-unit id="Import of text was successful, overrides are now active." xml:space="preserve">
+ <source>Import of text was successful, overrides are now active.</source>
+ <target state="new">Import of text was successful, overrides are now active.</target>
+ <note/>
+ </trans-unit>
+ <trans-unit id="Import of text was unsuccessful, please try again." xml:space="preserve">
+ <source>Import of text was unsuccessful, please try again.</source>
+ <target state="new">Import of text was unsuccessful, please try again.</target>
<note/>
</trans-unit>
<trans-unit id="Import via text" xml:space="preserve">
@@ -890,6 +855,11 @@
<target state="new">Invalid account number</target>
<note/>
</trans-unit>
+ <trans-unit id="Invalid account number: %@" xml:space="preserve">
+ <source>Invalid account number: %@</source>
+ <target state="new">Invalid account number: %@</target>
+ <note/>
+ </trans-unit>
<trans-unit id="Invalid device state." xml:space="preserve">
<source>Invalid device state.</source>
<target state="new">Invalid device state.</target>
@@ -940,9 +910,9 @@
<target state="new">Local network sharing</target>
<note/>
</trans-unit>
- <trans-unit id="Log in" xml:space="preserve">
- <source>Log in</source>
- <target state="new">Log in</target>
+ <trans-unit id="Locations" xml:space="preserve">
+ <source>Locations</source>
+ <target state="new">Locations</target>
<note/>
</trans-unit>
<trans-unit id="Log out" xml:space="preserve">
@@ -995,9 +965,9 @@
<target state="new">Manage devices</target>
<note/>
</trans-unit>
- <trans-unit id="Method settings" xml:space="preserve">
- <source>Method settings</source>
- <target state="new">Method settings</target>
+ <trans-unit id="Mullvad owned only" xml:space="preserve">
+ <source>Mullvad owned only</source>
+ <target state="new">Mullvad owned only</target>
<note/>
</trans-unit>
<trans-unit id="Multihop" xml:space="preserve">
@@ -1015,11 +985,6 @@
<target state="new">Multihop routes your traffic into one WireGuard server and out another, making it harder to trace. This results in increased latency but increases anonymity online.</target>
<note/>
</trans-unit>
- <trans-unit id="Multiple validation errors occurred." xml:space="preserve">
- <source>Multiple validation errors occurred.</source>
- <target state="new">Multiple validation errors occurred.</target>
- <note/>
- </trans-unit>
<trans-unit id="NETWORK ISSUES" xml:space="preserve">
<source>NETWORK ISSUES</source>
<target state="new">NETWORK ISSUES</target>
@@ -1035,6 +1000,16 @@
<target state="new">NEW VERSION INSTALLED</target>
<note/>
</trans-unit>
+ <trans-unit id="NO NETWORK" xml:space="preserve">
+ <source>NO NETWORK</source>
+ <target state="new">NO NETWORK</target>
+ <note/>
+ </trans-unit>
+ <trans-unit id="NO OVERRIDES IMPORTED" xml:space="preserve">
+ <source>NO OVERRIDES IMPORTED</source>
+ <target state="new">NO OVERRIDES IMPORTED</target>
+ <note/>
+ </trans-unit>
<trans-unit id="Name" xml:space="preserve">
<source>Name</source>
<target state="new">Name</target>
@@ -1055,11 +1030,6 @@
<target state="new">Network error: %@</target>
<note/>
</trans-unit>
- <trans-unit id="New custom list" xml:space="preserve">
- <source>New custom list</source>
- <target state="new">New custom list</target>
- <note/>
- </trans-unit>
<trans-unit id="Next" xml:space="preserve">
<source>Next</source>
<target state="new">Next</target>
@@ -1075,19 +1045,9 @@
<target state="new">No matching relays found, check your filter settings.</target>
<note/>
</trans-unit>
- <trans-unit id="No matching servers" xml:space="preserve">
- <source>No matching servers</source>
- <target state="new">No matching servers</target>
- <note/>
- </trans-unit>
- <trans-unit id="No network" xml:space="preserve">
- <source>No network</source>
- <target state="new">No network</target>
- <note/>
- </trans-unit>
- <trans-unit id="No overrides imported" xml:space="preserve">
- <source>No overrides imported</source>
- <target state="new">No overrides imported</target>
+ <trans-unit id="No matching servers found." xml:space="preserve">
+ <source>No matching servers found.</source>
+ <target state="new">No matching servers found.</target>
<note/>
</trans-unit>
<trans-unit id="No servers match your location filter. Try changing filter settings." xml:space="preserve">
@@ -1115,6 +1075,11 @@
<target state="new">OUT OF TIME</target>
<note/>
</trans-unit>
+ <trans-unit id="OVERRIDES ACTIVE" xml:space="preserve">
+ <source>OVERRIDES ACTIVE</source>
+ <target state="new">OVERRIDES ACTIVE</target>
+ <note/>
+ </trans-unit>
<trans-unit id="Obfuscation" xml:space="preserve">
<source>Obfuscation</source>
<target state="new">Obfuscation</target>
@@ -1175,16 +1140,6 @@
<target state="new">Out of time</target>
<note/>
</trans-unit>
- <trans-unit id="Overrides active" xml:space="preserve">
- <source>Overrides active</source>
- <target state="new">Overrides active</target>
- <note/>
- </trans-unit>
- <trans-unit id="Owned" xml:space="preserve">
- <source>Owned</source>
- <target state="new">Owned</target>
- <note/>
- </trans-unit>
<trans-unit id="Ownership" xml:space="preserve">
<source>Ownership</source>
<target state="new">Ownership</target>
@@ -1210,9 +1165,9 @@
<target state="new">Please enter a valid IPv4 or IPv6 address.</target>
<note/>
</trans-unit>
- <trans-unit id="Please enter a valid port." xml:space="preserve">
- <source>Please enter a valid port.</source>
- <target state="new">Please enter a valid port.</target>
+ <trans-unit id="Please enter a valid remote server port." xml:space="preserve">
+ <source>Please enter a valid remote server port.</source>
+ <target state="new">Please enter a valid remote server port.</target>
<note/>
</trans-unit>
<trans-unit id="Please log out of at least one by removing it from the list below. You can find the corresponding device name under the device’s Account settings." xml:space="preserve">
@@ -1265,14 +1220,14 @@
<target state="new">Quantum-resistant tunnel</target>
<note/>
</trans-unit>
- <trans-unit id="Reconnecting" xml:space="preserve">
- <source>Reconnecting</source>
- <target state="new">Reconnecting</target>
+ <trans-unit id="RECONNECTING" xml:space="preserve">
+ <source>RECONNECTING</source>
+ <target state="new">RECONNECTING</target>
<note/>
</trans-unit>
- <trans-unit id="Reconnecting to %@, %@" xml:space="preserve">
- <source>Reconnecting to %1$@, %2$@</source>
- <target state="new">Reconnecting to %1$@, %2$@</target>
+ <trans-unit id="Reconnecting to %@" xml:space="preserve">
+ <source>Reconnecting to %@</source>
+ <target state="new">Reconnecting to %@</target>
<note/>
</trans-unit>
<trans-unit id="Redeem" xml:space="preserve">
@@ -1317,9 +1272,9 @@ Do you want to remove the saved account number?</source>
Do you want to remove the saved account number?</target>
<note/>
</trans-unit>
- <trans-unit id="Rented" xml:space="preserve">
- <source>Rented</source>
- <target state="new">Rented</target>
+ <trans-unit id="Rented only" xml:space="preserve">
+ <source>Rented only</source>
+ <target state="new">Rented only</target>
<note/>
</trans-unit>
<trans-unit id="Report a problem" xml:space="preserve">
@@ -1562,6 +1517,11 @@ Do you want to remove the saved account number?</target>
<target state="new">This device is not allowed to make the payment.</target>
<note/>
</trans-unit>
+ <trans-unit id="This device is now named **%@**. See more under &quot;Manage devices&quot; in Account." xml:space="preserve">
+ <source>This device is now named **%@**. See more under "Manage devices" in Account.</source>
+ <target state="new">This device is now named **%@**. See more under "Manage devices" in Account.</target>
+ <note/>
+ </trans-unit>
<trans-unit id="This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc." xml:space="preserve">
<source>This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc.</source>
<target state="new">This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc.</target>
@@ -1592,11 +1552,6 @@ Do you want to remove the saved account number?</target>
<target state="new">This might cause issues on certain websites, services, and apps.</target>
<note/>
</trans-unit>
- <trans-unit id="This voucher code has already been used." xml:space="preserve">
- <source>This voucher code has already been used.</source>
- <target state="new">This voucher code has already been used.</target>
- <note/>
- </trans-unit>
<trans-unit id="Time left: %@" xml:space="preserve">
<source>Time left: %@</source>
<target state="new">Time left: %@</target>
@@ -1722,6 +1677,11 @@ Do you want to remove the saved account number?</target>
<target state="new">VPN settings</target>
<note/>
</trans-unit>
+ <trans-unit id="Valid account number" xml:space="preserve">
+ <source>Valid account number</source>
+ <target state="new">Valid account number</target>
+ <note/>
+ </trans-unit>
<trans-unit id="Valid range: %d - %d" xml:space="preserve">
<source>Valid range: %1$d - %2$d</source>
<target state="new">Valid range: %1$d - %2$d</target>
@@ -1742,6 +1702,11 @@ Do you want to remove the saved account number?</target>
<target state="new">View app logs</target>
<note/>
</trans-unit>
+ <trans-unit id="Voucher code has already been used." xml:space="preserve">
+ <source>Voucher code has already been used.</source>
+ <target state="new">Voucher code has already been used.</target>
+ <note/>
+ </trans-unit>
<trans-unit id="Voucher code is invalid." xml:space="preserve">
<source>Voucher code is invalid.</source>
<target state="new">Voucher code is invalid.</target>
@@ -1767,11 +1732,6 @@ Do you want to remove the saved account number?</target>
<target state="new">We will look into this.</target>
<note/>
</trans-unit>
- <trans-unit id="Welcome, this device is now called **%@**. For more details see the info button in Account." xml:space="preserve">
- <source>Welcome, this device is now called **%@**. For more details see the info button in Account.</source>
- <target state="new">Welcome, this device is now called **%@**. For more details see the info button in Account.</target>
- <note/>
- </trans-unit>
<trans-unit id="What’s new" xml:space="preserve">
<source>What’s new</source>
<target state="new">What’s new</target>
@@ -1925,19 +1885,9 @@ We strongly believe in retaining as little data as possible because we want you
<target state="new">Your purchase was successfully refunded.</target>
<note/>
</trans-unit>
- <trans-unit id="You’re all set!!" xml:space="preserve">
- <source>You’re all set!!</source>
- <target state="new">You’re all set!!</target>
- <note/>
- </trans-unit>
- <trans-unit id="file" xml:space="preserve">
- <source>file</source>
- <target state="new">file</target>
- <note/>
- </trans-unit>
- <trans-unit id="method" xml:space="preserve">
- <source>method</source>
- <target state="new">method</target>
+ <trans-unit id="You’re all set!" xml:space="preserve">
+ <source>You’re all set!</source>
+ <target state="new">You’re all set!</target>
<note/>
</trans-unit>
<trans-unit id="multihop" xml:space="preserve">
@@ -1945,11 +1895,6 @@ We strongly believe in retaining as little data as possible because we want you
<target state="new">multihop</target>
<note/>
</trans-unit>
- <trans-unit id="text" xml:space="preserve">
- <source>text</source>
- <target state="new">text</target>
- <note/>
- </trans-unit>
<trans-unit id="value" xml:space="preserve">
<source>value</source>
<target state="new">value</target>
@@ -1971,11 +1916,6 @@ Would you like to continue to enable “Local network sharing”?</target>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
</header>
<body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
</body>
</file>
<file original="Assets/MullvadTypes-InfoPlist.xcstrings" source-language="en" target-language="en" datatype="plaintext">
@@ -1983,11 +1923,6 @@ Would you like to continue to enable “Local network sharing”?</target>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
</header>
<body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
</body>
</file>
<file original="MullvadLogging-InfoPlist.xcstrings" source-language="en" target-language="en" datatype="plaintext">
@@ -1995,11 +1930,6 @@ Would you like to continue to enable “Local network sharing”?</target>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
</header>
<body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
</body>
</file>
<file original="MullvadMockData/MullvadMockData-InfoPlist.xcstrings" source-language="en" target-language="en" datatype="plaintext">
@@ -2007,11 +1937,6 @@ Would you like to continue to enable “Local network sharing”?</target>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
</header>
<body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
</body>
</file>
<file original="MullvadREST/InfoPlist.xcstrings" source-language="en" target-language="en" datatype="plaintext">
@@ -2019,11 +1944,6 @@ Would you like to continue to enable “Local network sharing”?</target>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
</header>
<body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
</body>
</file>
<file original="MullvadRustRuntime-InfoPlist.xcstrings" source-language="en" target-language="en" datatype="plaintext">
@@ -2031,11 +1951,6 @@ Would you like to continue to enable “Local network sharing”?</target>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
</header>
<body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
</body>
</file>
<file original="MullvadVPN/Supporting Files/InfoPlist.xcstrings" source-language="en" target-language="en" datatype="plaintext">
@@ -2055,11 +1970,6 @@ Would you like to continue to enable “Local network sharing”?</target>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
</header>
<body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
</body>
</file>
<file original="PacketTunnel/InfoPlist.xcstrings" source-language="en" target-language="en" datatype="plaintext">
@@ -2111,11 +2021,6 @@ Would you like to continue to enable “Local network sharing”?</target>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
</header>
<body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
</body>
</file>
<file original="Routing/Routing-InfoPlist.xcstrings" source-language="en" target-language="en" datatype="plaintext">
@@ -2123,11 +2028,6 @@ Would you like to continue to enable “Local network sharing”?</target>
<tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
</header>
<body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
</body>
</file>
</xliff>
diff --git a/ios/translation/locales/fr.xliff b/ios/translation/locales/fr.xliff
deleted file mode 100644
index f1d31d7bba..0000000000
--- a/ios/translation/locales/fr.xliff
+++ /dev/null
@@ -1,2133 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd">
- <file original="Assets/Localizable.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="%@" xml:space="preserve">
- <source>%@</source>
- <target state="needs-translation">%@</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ (%@) hides patterns in your encrypted VPN traffic." xml:space="preserve">
- <source>%1$@ (%2$@) hides patterns in your encrypted VPN traffic.</source>
- <target state="translated">%1$@ (%2$@) masque les schémas de votre trafic VPN chiffré.</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ cannot be empty." xml:space="preserve">
- <source>%@ cannot be empty.</source>
- <target state="translated">%@ ne peut pas être vide.</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ does this by carefully adding network noise and making all network packets the same size." xml:space="preserve">
- <source>%@ does this by carefully adding network noise and making all network packets the same size.</source>
- <target state="translated">%@ y parvient en ajoutant soigneusement du bruit au réseau et en faisant en sorte que tous les paquets du réseau aient la même taille.</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ left on this account" xml:space="preserve">
- <source>%@ left on this account</source>
- <target state="needs-translation">%@ left on this account</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ via %@" xml:space="preserve">
- <source>%1$@ via %2$@</source>
- <target state="needs-translation">%1$@ via %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ was added to your account." xml:space="preserve">
- <source>%@ was added to your account.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">%@ a été ajouté à votre compte.</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@, %@" xml:space="preserve">
- <source>%1$@, %2$@</source>
- <target state="needs-translation">%1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@: Multihop" xml:space="preserve">
- <source>%@: Multihop</source>
- <target state="needs-translation">%@: Multihop</target>
- <note/>
- </trans-unit>
- <trans-unit id="%d more..." xml:space="preserve">
- <source>%d more...</source>
- <target state="translated">%d de plus…</target>
- <note/>
- </trans-unit>
- <trans-unit id="%lld more..." xml:space="preserve">
- <source>%lld more...</source>
- <target state="translated">%lld de plus…</target>
- <note/>
- </trans-unit>
- <trans-unit id="**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.**" xml:space="preserve">
- <source>**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.**</source>
- <target state="translated">**Attention : cette option augmente le trafic sur le réseau et peut avoir un impact négatif sur la vitesse, la latence et l'utilisation de la batterie. À utiliser avec précaution pour les forfaits limités.**</target>
- <note/>
- </trans-unit>
- <trans-unit id="**Tap here** to see what’s new" xml:space="preserve">
- <source>**Tap here** to see what’s new</source>
- <target state="needs-translation">**Tap here** to see what’s new</target>
- <note/>
- </trans-unit>
- <trans-unit id="API access" xml:space="preserve">
- <source>API access</source>
- <target state="translated">Accès à l'API</target>
- <note/>
- </trans-unit>
- <trans-unit id="API reachable" xml:space="preserve">
- <source>API reachable</source>
- <target state="translated">API joignable</target>
- <note/>
- </trans-unit>
- <trans-unit id="API unreachable" xml:space="preserve">
- <source>API unreachable</source>
- <target state="translated">API injoignable</target>
- <note/>
- </trans-unit>
- <trans-unit id="API unreachable, save method anyway?" xml:space="preserve">
- <source>API unreachable, save method anyway?</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">API injoignable, enregistrer quand même la méthode ?</target>
- <note/>
- </trans-unit>
- <trans-unit id="About API access…" xml:space="preserve">
- <source>About API access…</source>
- <target state="needs-translation">About API access…</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Direct method..." xml:space="preserve">
- <source>About Direct method...</source>
- <target state="needs-translation">About Direct method...</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Encrypted DNS proxy method..." xml:space="preserve">
- <source>About Encrypted DNS proxy method...</source>
- <target state="needs-translation">About Encrypted DNS proxy method...</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Mullvad bridges method..." xml:space="preserve">
- <source>About Mullvad bridges method...</source>
- <target state="needs-translation">About Mullvad bridges method...</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Server IP override..." xml:space="preserve">
- <source>About Server IP override...</source>
- <target state="needs-translation">About Server IP override...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account" xml:space="preserve">
- <source>Account</source>
- <target state="translated">Compte</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account created" xml:space="preserve">
- <source>Account created</source>
- <target state="translated">Compte créé</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account credit expires soon" xml:space="preserve">
- <source>Account credit expires soon</source>
- <target state="translated">Les crédits du compte expirent bientôt</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account credit has expired" xml:space="preserve">
- <source>Account credit has expired</source>
- <target state="needs-translation">Account credit has expired</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account deletion" xml:space="preserve">
- <source>Account deletion</source>
- <target state="needs-translation">Account deletion</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account number" xml:space="preserve">
- <source>Account number</source>
- <target state="translated">Numéro de compte</target>
- <note/>
- </trans-unit>
- <trans-unit id="Active features" xml:space="preserve">
- <source>Active features</source>
- <target state="translated">Fonctionnalités activées</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add" xml:space="preserve">
- <source>Add</source>
- <target state="translated">Ajouter</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add 30 days" xml:space="preserve">
- <source>Add 30 days</source>
- <target state="needs-translation">Add 30 days</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add 90 days" xml:space="preserve">
- <source>Add 90 days</source>
- <target state="needs-translation">Add 90 days</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add a server" xml:space="preserve">
- <source>Add a server</source>
- <target state="translated">Ajouter un serveur</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add locations" xml:space="preserve">
- <source>Add locations</source>
- <target state="translated">Ajouter des localisations</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add method" xml:space="preserve">
- <source>Add method</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Ajouter un mode</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add new list" xml:space="preserve">
- <source>Add new list</source>
- <target state="needs-translation">Add new list</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add time" xml:space="preserve">
- <source>Add time</source>
- <target state="translated">Ajouter du temps</target>
- <note/>
- </trans-unit>
- <trans-unit id="Ads" xml:space="preserve">
- <source>Ads</source>
- <target state="translated">Publicités</target>
- <note/>
- </trans-unit>
- <trans-unit id="Adult content" xml:space="preserve">
- <source>Adult content</source>
- <target state="translated">Contenu pour adultes</target>
- <note/>
- </trans-unit>
- <trans-unit id="Agree and continue" xml:space="preserve">
- <source>Agree and continue</source>
- <target state="translated">Accepter et continuer</target>
- <note/>
- </trans-unit>
- <trans-unit id="All" xml:space="preserve">
- <source>All</source>
- <target state="needs-translation">All</target>
- <note/>
- </trans-unit>
- <trans-unit id="All locations" xml:space="preserve">
- <source>All locations</source>
- <target state="translated">Toutes les localisations</target>
- <note/>
- </trans-unit>
- <trans-unit id="All providers" xml:space="preserve">
- <source>All providers</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Tous les fournisseurs</target>
- <note/>
- </trans-unit>
- <trans-unit id="Any" xml:space="preserve">
- <source>Any</source>
- <target state="translated">N'importe lequel</target>
- <note/>
- </trans-unit>
- <trans-unit id="App logs" xml:space="preserve">
- <source>App logs</source>
- <target state="needs-translation">App logs</target>
- <note/>
- </trans-unit>
- <trans-unit id="AppStore receipt is not found on disk." xml:space="preserve">
- <source>AppStore receipt is not found on disk.</source>
- <target state="needs-translation">AppStore receipt is not found on disk.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Are you sure you want to log %@ out?" xml:space="preserve">
- <source>Are you sure you want to log %@ out?</source>
- <target state="needs-translation">Are you sure you want to log %@ out?</target>
- <note/>
- </trans-unit>
- <trans-unit id="At least one method needs to be enabled." xml:space="preserve">
- <source>At least one method needs to be enabled.</source>
- <target state="translated">Au moins une méthode doit être activée.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Attention: this setting cannot be used in combination with **“%@“**." xml:space="preserve">
- <source>Attention: this setting cannot be used in combination with **“%@“**.</source>
- <target state="needs-translation">Attention: this setting cannot be used in combination with **“%@“**.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Attention: toggling “Local network sharing” requires restarting the VPN connection." xml:space="preserve">
- <source>Attention: toggling “Local network sharing” requires restarting the VPN connection.</source>
- <target state="needs-translation">Attention: toggling “Local network sharing” requires restarting the VPN connection.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Authentication" xml:space="preserve">
- <source>Authentication</source>
- <target state="translated">Authentification</target>
- <note/>
- </trans-unit>
- <trans-unit id="Automatic" xml:space="preserve">
- <source>Automatic</source>
- <target state="translated">Automatique</target>
- <note/>
- </trans-unit>
- <trans-unit id="BLOCKING INTERNET" xml:space="preserve">
- <source>BLOCKING INTERNET</source>
- <target state="translated">BLOCAGE D'INTERNET</target>
- <note/>
- </trans-unit>
- <trans-unit id="Blocked connection" xml:space="preserve">
- <source>Blocked connection</source>
- <target state="needs-translation">Blocked connection</target>
- <note/>
- </trans-unit>
- <trans-unit id="Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN." xml:space="preserve">
- <source>Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN.</source>
- <target state="needs-translation">Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN.</target>
- <note/>
- </trans-unit>
- <trans-unit id="By enabling “%@” you will have to manually select a server that is %@-enabled. %@ won't automatically be used to enable DAITA with any server." xml:space="preserve">
- <source>By enabling “%1$@” you will have to manually select a server that is %2$@-enabled. %3$@ won't automatically be used to enable DAITA with any server.</source>
- <target state="needs-translation">By enabling “%1$@” you will have to manually select a server that is %2$@-enabled. %3$@ won't automatically be used to enable DAITA with any server.</target>
- <note/>
- </trans-unit>
- <trans-unit id="By using sophisticated AI it’s possible to analyze the traffic of data packets going in and out of your device (even if the traffic is encrypted)." xml:space="preserve">
- <source>By using sophisticated AI it’s possible to analyze the traffic of data packets going in and out of your device (even if the traffic is encrypted).</source>
- <target state="translated">Utiliser une IA sophistiquée peut permettre d'analyser le trafic des paquets de données entrant et sortant de votre appareil (même si le trafic est chiffré).</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cancel" xml:space="preserve">
- <source>Cancel</source>
- <target state="translated">Annuler</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot complete the purchase" xml:space="preserve">
- <source>Cannot complete the purchase</source>
- <target state="needs-translation">Cannot complete the purchase</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot read the AppStore receipt from disk" xml:space="preserve">
- <source>Cannot read the AppStore receipt from disk</source>
- <target state="needs-translation">Cannot read the AppStore receipt from disk</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot refresh the AppStore receipt: %@" xml:space="preserve">
- <source>Cannot refresh the AppStore receipt: %@</source>
- <target state="needs-translation">Cannot refresh the AppStore receipt: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot restore purchases" xml:space="preserve">
- <source>Cannot restore purchases</source>
- <target state="needs-translation">Cannot restore purchases</target>
- <note/>
- </trans-unit>
- <trans-unit id="Checking account number" xml:space="preserve">
- <source>Checking account number</source>
- <target state="translated">Vérification du numéro de compte</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cipher" xml:space="preserve">
- <source>Cipher</source>
- <target state="translated">Chiffre</target>
- <note/>
- </trans-unit>
- <trans-unit id="Clear" xml:space="preserve">
- <source>Clear</source>
- <target state="translated">Effacer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Clear all overrides" xml:space="preserve">
- <source>Clear all overrides</source>
- <target state="translated">Effacer toutes les substitutions</target>
- <note/>
- </trans-unit>
- <trans-unit id="Clear all overrides?" xml:space="preserve">
- <source>Clear all overrides?</source>
- <target state="translated">Effacer toutes les substitutions ?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Clearing the imported overrides changes the server IPs, in the Select location view, back to default." xml:space="preserve">
- <source>Clearing the imported overrides changes the server IPs, in the Select location view, back to default.</source>
- <target state="translated">L'effacement des substitutions importées rétablit la valeur par défaut des adresses IP des serveurs dans la vue Sélection d'un emplacement.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Client is not allowed to issue the request." xml:space="preserve">
- <source>Client is not allowed to issue the request.</source>
- <target state="needs-translation">Client is not allowed to issue the request.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Collapse %@" xml:space="preserve">
- <source>Collapse %@</source>
- <target state="needs-translation">Collapse %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Collapses this location." xml:space="preserve">
- <source>Collapses this location.</source>
- <target state="needs-translation">Collapses this location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Congrats!" xml:space="preserve">
- <source>Congrats!</source>
- <target state="translated">Félicitations !</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connect" xml:space="preserve">
- <source>Connect</source>
- <target state="translated">Connexion</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connected" xml:space="preserve">
- <source>Connected</source>
- <target state="translated">Connecté</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connected to %@, %@" xml:space="preserve">
- <source>Connected to %1$@, %2$@</source>
- <target state="needs-translation">Connected to %1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connecting to %@, %@" xml:space="preserve">
- <source>Connecting to %1$@, %2$@</source>
- <target state="needs-translation">Connecting to %1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connecting..." xml:space="preserve">
- <source>Connecting...</source>
- <target state="translated">Connexion...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connection details" xml:space="preserve">
- <source>Connection details</source>
- <target state="translated">Détails de la connexion</target>
- <note/>
- </trans-unit>
- <trans-unit id="Continue with login" xml:space="preserve">
- <source>Continue with login</source>
- <target state="translated">Continuer avec la connexion</target>
- <note/>
- </trans-unit>
- <trans-unit id="Copied Mullvad account number to pasteboard" xml:space="preserve">
- <source>Copied Mullvad account number to pasteboard</source>
- <target state="needs-translation">Copied Mullvad account number to pasteboard</target>
- <note/>
- </trans-unit>
- <trans-unit id="Correct account number" xml:space="preserve">
- <source>Correct account number</source>
- <target state="needs-translation">Correct account number</target>
- <note/>
- </trans-unit>
- <trans-unit id="Create" xml:space="preserve">
- <source>Create</source>
- <target state="translated">Créer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Create account" xml:space="preserve">
- <source>Create account</source>
- <target state="translated">Créer un compte</target>
- <note/>
- </trans-unit>
- <trans-unit id="Create new account" xml:space="preserve">
- <source>Create new account</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Créer un nouveau compte</target>
- <note/>
- </trans-unit>
- <trans-unit id="Created: %@" xml:space="preserve">
- <source>Created: %@</source>
- <target state="needs-translation">Created: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Creating new account" xml:space="preserve">
- <source>Creating new account</source>
- <target state="needs-translation">Creating new account</target>
- <note/>
- </trans-unit>
- <trans-unit id="Current device" xml:space="preserve">
- <source>Current device</source>
- <target state="translated">Appareil actuel</target>
- <note/>
- </trans-unit>
- <trans-unit id="Custom" xml:space="preserve">
- <source>Custom</source>
- <target state="translated">Personnalisé</target>
- <note/>
- </trans-unit>
- <trans-unit id="Custom DNS" xml:space="preserve">
- <source>Custom DNS</source>
- <target state="translated">DNS personnalisé</target>
- <note/>
- </trans-unit>
- <trans-unit id="Custom lists" xml:space="preserve">
- <source>Custom lists</source>
- <target state="translated">Listes personnalisées</target>
- <note/>
- </trans-unit>
- <trans-unit id="DAITA" xml:space="preserve">
- <source>DAITA</source>
- <target state="needs-translation">DAITA</target>
- <note/>
- </trans-unit>
- <trans-unit id="DAITA isn't available at the currently selected location. After enabling, please go to the &quot;Select location&quot; view and select a location that supports DAITA." xml:space="preserve">
- <source>DAITA isn't available at the currently selected location. After enabling, please go to the "Select location" view and select a location that supports DAITA.</source>
- <target state="needs-translation">DAITA isn't available at the currently selected location. After enabling, please go to the "Select location" view and select a location that supports DAITA.</target>
- <note/>
- </trans-unit>
- <trans-unit id="DAITA isn't available on the current entry server. After enabling, please go to the &quot;Select location&quot; view and select an entry location that supports DAITA." xml:space="preserve">
- <source>DAITA isn't available on the current entry server. After enabling, please go to the "Select location" view and select an entry location that supports DAITA.</source>
- <target state="needs-translation">DAITA isn't available on the current entry server. After enabling, please go to the "Select location" view and select an entry location that supports DAITA.</target>
- <note/>
- </trans-unit>
- <trans-unit id="DAITA-enabled" xml:space="preserve">
- <source>DAITA-enabled</source>
- <target state="needs-translation">DAITA-enabled</target>
- <note/>
- </trans-unit>
- <trans-unit id="DNS content blockers" xml:space="preserve">
- <source>DNS content blockers</source>
- <target state="translated">Bloqueurs de contenu DNS</target>
- <note/>
- </trans-unit>
- <trans-unit id="DNS settings" xml:space="preserve">
- <source>DNS settings</source>
- <target state="needs-translation">DNS settings</target>
- <note/>
- </trans-unit>
- <trans-unit id="Defense against AI-guided Traffic Analysis" xml:space="preserve">
- <source>Defense against AI-guided Traffic Analysis</source>
- <target state="needs-translation">Defense against AI-guided Traffic Analysis</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete" xml:space="preserve">
- <source>Delete</source>
- <target state="translated">Supprimer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete %@?" xml:space="preserve">
- <source>Delete %@?</source>
- <target state="needs-translation">Delete %@?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete account" xml:space="preserve">
- <source>Delete account</source>
- <target state="needs-translation">Delete account</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete list" xml:space="preserve">
- <source>Delete list</source>
- <target state="translated">Supprimer la liste</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete method" xml:space="preserve">
- <source>Delete method</source>
- <target state="translated">Supprimer la méthode</target>
- <note/>
- </trans-unit>
- <trans-unit id="Deleting account..." xml:space="preserve">
- <source>Deleting account...</source>
- <target state="needs-translation">Deleting account...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Device is inactive" xml:space="preserve">
- <source>Device is inactive</source>
- <target state="translated">L'appareil est inactif</target>
- <note/>
- </trans-unit>
- <trans-unit id="Device name" xml:space="preserve">
- <source>Device name</source>
- <target state="translated">Nom de l'appareil</target>
- <note/>
- </trans-unit>
- <trans-unit id="Device name: %@" xml:space="preserve">
- <source>Device name: %@</source>
- <target state="needs-translation">Device name: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Direct only" xml:space="preserve">
- <source>Direct only</source>
- <target state="translated">Directe uniquement</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disable all &quot;%@&quot; above to activate this setting." xml:space="preserve">
- <source>Disable all "%@" above to activate this setting.</source>
- <target state="translated">Désactivez tous les « %@ » ci-dessus pour activer ce paramètre.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disabled" xml:space="preserve">
- <source>Disabled</source>
- <target state="needs-translation">Disabled</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disabling" xml:space="preserve">
- <source>Disabling</source>
- <target state="needs-translation">Disabling</target>
- <note/>
- </trans-unit>
- <trans-unit id="Discard changes" xml:space="preserve">
- <source>Discard changes</source>
- <target state="translated">Annuler les modifications </target>
- <note/>
- </trans-unit>
- <trans-unit id="Disconnect" xml:space="preserve">
- <source>Disconnect</source>
- <target state="translated">Déconnexion</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disconnected" xml:space="preserve">
- <source>Disconnected</source>
- <target state="translated">Déconnecté</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disconnecting..." xml:space="preserve">
- <source>Disconnecting...</source>
- <target state="translated">Déconnexion en cours...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Do you agree to remaining anonymous?" xml:space="preserve">
- <source>Do you agree to remaining anonymous?</source>
- <target state="needs-translation">Do you agree to remaining anonymous?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Do you want to create a new account?" xml:space="preserve">
- <source>Do you want to create a new account?</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Voulez-vous créer un nouveau compte ?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Do you want to delete the list **%@**?" xml:space="preserve">
- <source>Do you want to delete the list **%@**?</source>
- <target state="needs-translation">Do you want to delete the list **%@**?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Done" xml:space="preserve">
- <source>Done</source>
- <target state="needs-translation">Done</target>
- <note/>
- </trans-unit>
- <trans-unit id="Don’t have an account number?" xml:space="preserve">
- <source>Don’t have an account number?</source>
- <target state="translated">Vous n'avez pas de numéro de compte ?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit custom list" xml:space="preserve">
- <source>Edit custom list</source>
- <target state="needs-translation">Edit custom list</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit lists" xml:space="preserve">
- <source>Edit lists</source>
- <target state="translated">Modifier les listes</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit locations" xml:space="preserve">
- <source>Edit locations</source>
- <target state="translated">Modifier les localisations</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit message" xml:space="preserve">
- <source>Edit message</source>
- <target state="translated">Modifier le message</target>
- <note/>
- </trans-unit>
- <trans-unit id="Either buy credit on our website or make an in-app purchase via the **Add time** button below." xml:space="preserve">
- <source>Either buy credit on our website or make an in-app purchase via the **Add time** button below.</source>
- <target state="needs-translation">Either buy credit on our website or make an in-app purchase via the **Add time** button below.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Either buy credit on our website or redeem a voucher." xml:space="preserve">
- <source>Either buy credit on our website or redeem a voucher.</source>
- <target state="translated">Achetez du crédit sur notre site web ou échangez un bon.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enable" xml:space="preserve">
- <source>Enable</source>
- <target state="translated">Activer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enable &quot;%@&quot;" xml:space="preserve">
- <source>Enable "%@"</source>
- <target state="needs-translation">Enable "%@"</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enable method" xml:space="preserve">
- <source>Enable method</source>
- <target state="translated">Activer la méthode</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enabling" xml:space="preserve">
- <source>Enabling</source>
- <target state="needs-translation">Enabling</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enter IP" xml:space="preserve">
- <source>Enter IP</source>
- <target state="translated">Saisir l'IP</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enter voucher code" xml:space="preserve">
- <source>Enter voucher code</source>
- <target state="translated">Saisissez un code de bon</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enter your account number" xml:space="preserve">
- <source>Enter your account number</source>
- <target state="translated">Saisissez votre numéro de compte</target>
- <note/>
- </trans-unit>
- <trans-unit id="Entry" xml:space="preserve">
- <source>Entry</source>
- <target state="translated">Entrée</target>
- <note/>
- </trans-unit>
- <trans-unit id="Exit" xml:space="preserve">
- <source>Exit</source>
- <target state="translated">Sortie</target>
- <note/>
- </trans-unit>
- <trans-unit id="Expand %@" xml:space="preserve">
- <source>Expand %@</source>
- <target state="needs-translation">Expand %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Expands this location." xml:space="preserve">
- <source>Expands this location.</source>
- <target state="needs-translation">Expands this location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="FAQs &amp; Guides" xml:space="preserve">
- <source>FAQs &amp; Guides</source>
- <target state="needs-translation">FAQs &amp; Guides</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to load products, please try again" xml:space="preserve">
- <source>Failed to load products, please try again</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Échec du chargement des produits. Veuillez réessayer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to send" xml:space="preserve">
- <source>Failed to send</source>
- <target state="translated">Échec de l'envoi</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to send the receipt to server: %@" xml:space="preserve">
- <source>Failed to send the receipt to server: %@</source>
- <target state="needs-translation">Failed to send the receipt to server: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to start the tunnel." xml:space="preserve">
- <source>Failed to start the tunnel.</source>
- <target state="needs-translation">Failed to start the tunnel.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to start the tunnel: %@." xml:space="preserve">
- <source>Failed to start the tunnel: %@.</source>
- <target state="needs-translation">Failed to start the tunnel: %@.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to stop the tunnel." xml:space="preserve">
- <source>Failed to stop the tunnel.</source>
- <target state="needs-translation">Failed to stop the tunnel.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to stop the tunnel: %@." xml:space="preserve">
- <source>Failed to stop the tunnel: %@.</source>
- <target state="needs-translation">Failed to stop the tunnel: %@.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to validate account number: %@" xml:space="preserve">
- <source>Failed to validate account number: %@</source>
- <target state="needs-translation">Failed to validate account number: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Fetching devices..." xml:space="preserve">
- <source>Fetching devices...</source>
- <target state="needs-translation">Fetching devices...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Filter" xml:space="preserve">
- <source>Filter</source>
- <target state="translated">Filtrer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Filtered:" xml:space="preserve">
- <source>Filtered:</source>
- <target state="translated">Filtré :</target>
- <note/>
- </trans-unit>
- <trans-unit id="Gambling" xml:space="preserve">
- <source>Gambling</source>
- <target state="translated">Jeux d'argent</target>
- <note/>
- </trans-unit>
- <trans-unit id="Go ahead and start using the app to begin reclaiming your online privacy." xml:space="preserve">
- <source>Go ahead and start using the app to begin reclaiming your online privacy.</source>
- <target state="translated">Commencez à utiliser l'application pour reprendre votre confidentialité en ligne en main.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Go to login" xml:space="preserve">
- <source>Go to login</source>
- <target state="translated">Aller à la connexion</target>
- <note/>
- </trans-unit>
- <trans-unit id="Going to login will unblock the Internet on this device." xml:space="preserve">
- <source>Going to login will unblock the Internet on this device.</source>
- <target state="translated">Aller à la connexion débloquera la connexion Internet sur cet appareil.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Got it!" xml:space="preserve">
- <source>Got it!</source>
- <target state="translated">Compris !</target>
- <note/>
- </trans-unit>
- <trans-unit id="Here’s your account number. Save it!" xml:space="preserve">
- <source>Here’s your account number. Save it!</source>
- <target state="translated">Voici votre numéro de compte. Gardez-le !</target>
- <note/>
- </trans-unit>
- <trans-unit id="Hide account number" xml:space="preserve">
- <source>Hide account number</source>
- <target state="translated">Masquer le numéro de compte</target>
- <note/>
- </trans-unit>
- <trans-unit id="If an observer monitors these data packets, %@ makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating." xml:space="preserve">
- <source>If an observer monitors these data packets, %@ makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating.</source>
- <target state="translated">Si un observateur surveille ces paquets de données, %@ rend beaucoup plus difficile l'identification des sites web que vous visitez ou des personnes avec lesquelles vous communiquez.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If needed we will contact you at %@" xml:space="preserve">
- <source>If needed we will contact you at %@</source>
- <target state="translated">Si nécessaire, nous vous contacterons à l'adresse %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you are having issues connecting to VPN servers, please contact support." xml:space="preserve">
- <source>If you are having issues connecting to VPN servers, please contact support.</source>
- <target state="translated">Si vous rencontrez des problèmes de connexion aux serveurs VPN, veuillez contacter l'assistance.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare." xml:space="preserve">
- <source>If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare.</source>
- <target state="needs-translation">If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you disconnect now, you won’t be able to secure your connection until the device is online." xml:space="preserve">
- <source>If you disconnect now, you won’t be able to secure your connection until the device is online.</source>
- <target state="needs-translation">If you disconnect now, you won’t be able to secure your connection until the device is online.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you exit the form and try again later, the information you already entered will still be here." xml:space="preserve">
- <source>If you exit the form and try again later, the information you already entered will still be here.</source>
- <target state="translated">Si vous quittez le formulaire et réessayez plus tard, les informations que vous avez déjà saisies seront toujours là.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you haven’t received additional VPN time after purchasing" xml:space="preserve">
- <source>If you haven’t received additional VPN time after purchasing</source>
- <target state="needs-translation">If you haven’t received additional VPN time after purchasing</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you log out, the device and the device name is removed. When you log back in again, the device will get a new name." xml:space="preserve">
- <source>If you log out, the device and the device name is removed. When you log back in again, the device will get a new name.</source>
- <target state="translated">Si vous vous déconnectez, l'appareil et son nom sont supprimés. Lorsque vous vous reconnectez, l'appareil reçoit un nouveau nom.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you still experience issues you can email our support directly at **%@**. Please attach your app log to your email." xml:space="preserve">
- <source>If you still experience issues you can email our support directly at **%@**. Please attach your app log to your email.</source>
- <target state="needs-translation">If you still experience issues you can email our support directly at **%@**. Please attach your app log to your email.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import" xml:space="preserve">
- <source>Import</source>
- <target state="translated">Importer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import file" xml:space="preserve">
- <source>Import file</source>
- <target state="translated">Importer un fichier</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import files or text with new IP addresses for the servers in the Select location view." xml:space="preserve">
- <source>Import files or text with new IP addresses for the servers in the Select location view.</source>
- <target state="translated">Importez des fichiers ou du texte contenant les nouvelles adresses IP des serveurs dans la vue Sélectionner un emplacement.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import of %@ was successful, overrides are now active." xml:space="preserve">
- <source>Import of %@ was successful, overrides are now active.</source>
- <target state="needs-translation">Import of %@ was successful, overrides are now active.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import of %@ was unsuccessful, please try again." xml:space="preserve">
- <source>Import of %@ was unsuccessful, please try again.</source>
- <target state="needs-translation">Import of %@ was unsuccessful, please try again.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import successful" xml:space="preserve">
- <source>Import successful</source>
- <target state="needs-translation">Import successful</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import via text" xml:space="preserve">
- <source>Import via text</source>
- <target state="translated">Importer par texte</target>
- <note/>
- </trans-unit>
- <trans-unit id="In" xml:space="preserve">
- <source>In</source>
- <target state="translated">Entrante</target>
- <note/>
- </trans-unit>
- <trans-unit id="In use" xml:space="preserve">
- <source>In use</source>
- <target state="translated">En cours d'utilisation</target>
- <note/>
- </trans-unit>
- <trans-unit id="Include all networks" xml:space="preserve">
- <source>Include all networks</source>
- <target state="needs-translation">Include all networks</target>
- <note/>
- </trans-unit>
- <trans-unit id="Internal error occurred. Settings will be reset to defaults and device logged out." xml:space="preserve">
- <source>Internal error occurred. Settings will be reset to defaults and device logged out.</source>
- <target state="needs-translation">Internal error occurred. Settings will be reset to defaults and device logged out.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Internal error." xml:space="preserve">
- <source>Internal error.</source>
- <target state="needs-translation">Internal error.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Invalid account number" xml:space="preserve">
- <source>Invalid account number</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Numéro de compte non valide</target>
- <note/>
- </trans-unit>
- <trans-unit id="Invalid device state." xml:space="preserve">
- <source>Invalid device state.</source>
- <target state="needs-translation">Invalid device state.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Invalid purchase identifier." xml:space="preserve">
- <source>Invalid purchase identifier.</source>
- <target state="needs-translation">Invalid purchase identifier.</target>
- <note/>
- </trans-unit>
- <trans-unit id="It does this by performing an extra key exchange using a quantum safe algorithm and mixing the result into WireGuard’s regular encryption. This extra step uses approximately 500 kiB of traffic every time a new tunnel is established." xml:space="preserve">
- <source>It does this by performing an extra key exchange using a quantum safe algorithm and mixing the result into WireGuard’s regular encryption. This extra step uses approximately 500 kiB of traffic every time a new tunnel is established.</source>
- <target state="translated">Pour ce faire, il effectue un échange de clés supplémentaire à l'aide d'un algorithme à sécurité quantique et mélange le résultat au chiffrement habituel de WireGuard. Cette étape supplémentaire utilise environ 500 kiB de trafic chaque fois qu'un nouveau tunnel est établi.</target>
- <note/>
- </trans-unit>
- <trans-unit id="It looks like you’ve entered an account number instead of a voucher code. If you would like to change the active account, please log out first." xml:space="preserve">
- <source>It looks like you’ve entered an account number instead of a voucher code. If you would like to change the active account, please log out first.</source>
- <target state="translated">Vous semblez avoir saisi un numéro de compte plutôt qu'un code de bon. Si vous souhaitez modifier le compte actif, veuillez d'abord vous déconnecter.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Language" xml:space="preserve">
- <source>Language</source>
- <target state="translated">Langue</target>
- <note/>
- </trans-unit>
- <trans-unit id="Last four digits of the account number are incorrect" xml:space="preserve">
- <source>Last four digits of the account number are incorrect</source>
- <target state="needs-translation">Last four digits of the account number are incorrect</target>
- <note/>
- </trans-unit>
- <trans-unit id="Last used account" xml:space="preserve">
- <source>Last used account</source>
- <target state="needs-translation">Last used account</target>
- <note/>
- </trans-unit>
- <trans-unit id="Learn about privacy" xml:space="preserve">
- <source>Learn about privacy</source>
- <target state="translated">Plus d'informations sur la confidentialité</target>
- <note/>
- </trans-unit>
- <trans-unit id="Less than a day" xml:space="preserve">
- <source>Less than a day</source>
- <target state="needs-translation">Less than a day</target>
- <note/>
- </trans-unit>
- <trans-unit id="Local network sharing" xml:space="preserve">
- <source>Local network sharing</source>
- <target state="translated">Partage réseau local</target>
- <note/>
- </trans-unit>
- <trans-unit id="Log in" xml:space="preserve">
- <source>Log in</source>
- <target state="needs-translation">Log in</target>
- <note/>
- </trans-unit>
- <trans-unit id="Log out" xml:space="preserve">
- <source>Log out</source>
- <target state="translated">Déconnexion</target>
- <note/>
- </trans-unit>
- <trans-unit id="Logged in" xml:space="preserve">
- <source>Logged in</source>
- <target state="translated">Connecté</target>
- <note/>
- </trans-unit>
- <trans-unit id="Logging in..." xml:space="preserve">
- <source>Logging in...</source>
- <target state="translated">Connexion...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Logging out..." xml:space="preserve">
- <source>Logging out...</source>
- <target state="needs-translation">Logging out...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Login" xml:space="preserve">
- <source>Login</source>
- <target state="translated">Connexion</target>
- <note/>
- </trans-unit>
- <trans-unit id="Login failed" xml:space="preserve">
- <source>Login failed</source>
- <target state="translated">Échec de la connexion</target>
- <note/>
- </trans-unit>
- <trans-unit id="Make a purchase with StoreKit2" xml:space="preserve">
- <source>Make a purchase with StoreKit2</source>
- <target state="needs-translation">Make a purchase with StoreKit2</target>
- <note/>
- </trans-unit>
- <trans-unit id="Malware" xml:space="preserve">
- <source>Malware</source>
- <target state="needs-translation">Malware</target>
- <note/>
- </trans-unit>
- <trans-unit id="Manage and add custom methods to access the Mullvad API." xml:space="preserve">
- <source>Manage and add custom methods to access the Mullvad API.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Gérez et ajoutez des modes d'accès personnalisés à l'API Mullvad.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Manage devices" xml:space="preserve">
- <source>Manage devices</source>
- <target state="translated">Gérer les appareils</target>
- <note/>
- </trans-unit>
- <trans-unit id="Method settings" xml:space="preserve">
- <source>Method settings</source>
- <target state="needs-translation">Method settings</target>
- <note/>
- </trans-unit>
- <trans-unit id="Multihop" xml:space="preserve">
- <source>Multihop</source>
- <target state="needs-translation">Multihop</target>
- <note/>
- </trans-unit>
- <trans-unit id="Multihop is being used to enable DAITA for your selected location." xml:space="preserve">
- <source>Multihop is being used to enable DAITA for your selected location.</source>
- <target state="needs-translation">Multihop is being used to enable DAITA for your selected location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Multihop routes your traffic into one WireGuard server and out another, making it harder to trace. This results in increased latency but increases anonymity online." xml:space="preserve">
- <source>Multihop routes your traffic into one WireGuard server and out another, making it harder to trace. This results in increased latency but increases anonymity online.</source>
- <target state="translated">Le multihop fait passer votre trafic par un serveur WireGuard et le fait sortir par un autre, ce qui le rend plus difficile à tracer. Cela se traduit par une latence accrue, mais plus d'anonymat en ligne.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Multiple validation errors occurred." xml:space="preserve">
- <source>Multiple validation errors occurred.</source>
- <target state="needs-translation">Multiple validation errors occurred.</target>
- <note/>
- </trans-unit>
- <trans-unit id="NETWORK ISSUES" xml:space="preserve">
- <source>NETWORK ISSUES</source>
- <target state="needs-translation">NETWORK ISSUES</target>
- <note/>
- </trans-unit>
- <trans-unit id="NEW DEVICE CREATED" xml:space="preserve">
- <source>NEW DEVICE CREATED</source>
- <target state="translated">NOUVEL APPAREIL CRÉÉ</target>
- <note/>
- </trans-unit>
- <trans-unit id="NEW VERSION INSTALLED" xml:space="preserve">
- <source>NEW VERSION INSTALLED</source>
- <target state="translated">NOUVELLE VERSION INSTALLÉE</target>
- <note/>
- </trans-unit>
- <trans-unit id="Name" xml:space="preserve">
- <source>Name</source>
- <target state="translated">Nom</target>
- <note/>
- </trans-unit>
- <trans-unit id="Name is already taken." xml:space="preserve">
- <source>Name is already taken.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Le nom est déjà pris.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Name should be no longer than %i characters." xml:space="preserve">
- <source>Name should be no longer than %i characters.</source>
- <target state="needs-translation">Name should be no longer than %i characters.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Network error: %@" xml:space="preserve">
- <source>Network error: %@</source>
- <target state="needs-translation">Network error: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="New custom list" xml:space="preserve">
- <source>New custom list</source>
- <target state="needs-translation">New custom list</target>
- <note/>
- </trans-unit>
- <trans-unit id="Next" xml:space="preserve">
- <source>Next</source>
- <target state="translated">Suivant</target>
- <note/>
- </trans-unit>
- <trans-unit id="No DAITA compatible servers match your location settings. Try changing location." xml:space="preserve">
- <source>No DAITA compatible servers match your location settings. Try changing location.</source>
- <target state="needs-translation">No DAITA compatible servers match your location settings. Try changing location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="No matching relays found, check your filter settings." xml:space="preserve">
- <source>No matching relays found, check your filter settings.</source>
- <target state="needs-translation">No matching relays found, check your filter settings.</target>
- <note/>
- </trans-unit>
- <trans-unit id="No matching servers" xml:space="preserve">
- <source>No matching servers</source>
- <target state="needs-translation">No matching servers</target>
- <note/>
- </trans-unit>
- <trans-unit id="No network" xml:space="preserve">
- <source>No network</source>
- <target state="needs-translation">No network</target>
- <note/>
- </trans-unit>
- <trans-unit id="No overrides imported" xml:space="preserve">
- <source>No overrides imported</source>
- <target state="needs-translation">No overrides imported</target>
- <note/>
- </trans-unit>
- <trans-unit id="No servers match your location filter. Try changing filter settings." xml:space="preserve">
- <source>No servers match your location filter. Try changing filter settings.</source>
- <target state="needs-translation">No servers match your location filter. Try changing filter settings.</target>
- <note/>
- </trans-unit>
- <trans-unit id="No servers match your obfuscation settings. Try changing location or obfuscation method." xml:space="preserve">
- <source>No servers match your obfuscation settings. Try changing location or obfuscation method.</source>
- <target state="needs-translation">No servers match your obfuscation settings. Try changing location or obfuscation method.</target>
- <note/>
- </trans-unit>
- <trans-unit id="No servers match your settings, try changing server or other settings." xml:space="preserve">
- <source>No servers match your settings, try changing server or other settings.</source>
- <target state="translated">Aucun serveur ne correspond à vos paramètres, essayez de modifier les paramètres du serveur ou d'autres paramètres.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Not all our servers are %@-enabled. Therefore, we use multihop automatically to enable %@ with any server." xml:space="preserve">
- <source>Not all our servers are %1$@-enabled. Therefore, we use multihop automatically to enable %2$@ with any server.</source>
- <target state="translated">Tous nos serveurs ne sont pas compatibles %1$@. C'est pourquoi nous utilisons automatiquement le multihop pour activer %2$@ avec n'importe quel serveur.</target>
- <note/>
- </trans-unit>
- <trans-unit id="OUT OF TIME" xml:space="preserve">
- <source>OUT OF TIME</source>
- <target state="translated">PLUS DE TEMPS</target>
- <note/>
- </trans-unit>
- <trans-unit id="Obfuscation" xml:space="preserve">
- <source>Obfuscation</source>
- <target state="translated">Dissimulation</target>
- <note/>
- </trans-unit>
- <trans-unit id="Obfuscation hides the WireGuard traffic inside another protocol. It can be used to help circumvent censorship and other types of filtering, where a plain WireGuard connection would be blocked." xml:space="preserve">
- <source>Obfuscation hides the WireGuard traffic inside another protocol. It can be used to help circumvent censorship and other types of filtering, where a plain WireGuard connection would be blocked.</source>
- <target state="translated">La dissimulation cache le trafic WireGuard à l'intérieur d'un autre protocole. Elle peut être utilisée pour aider à contourner la censure et d'autres types de filtrage, où une connexion WireGuard simple serait bloquée.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Obscured" xml:space="preserve">
- <source>Obscured</source>
- <target state="needs-translation">Obscured</target>
- <note/>
- </trans-unit>
- <trans-unit id="Off" xml:space="preserve">
- <source>Off</source>
- <target state="translated">Désactivé</target>
- <note/>
- </trans-unit>
- <trans-unit id="On" xml:space="preserve">
- <source>On</source>
- <target state="translated">Activé</target>
- <note/>
- </trans-unit>
- <trans-unit id="On some networks, where various types of censorship are being used, our server IP addresses are sometimes blocked." xml:space="preserve">
- <source>On some networks, where various types of censorship are being used, our server IP addresses are sometimes blocked.</source>
- <target state="translated">Sur certains réseaux, où divers types de censure sont utilisés, les adresses IP de notre serveur sont parfois bloquées.</target>
- <note/>
- </trans-unit>
- <trans-unit id="On some networks, where various types of censorship are being used, the API servers might not be directly reachable." xml:space="preserve">
- <source>On some networks, where various types of censorship are being used, the API servers might not be directly reachable.</source>
- <target state="translated">Sur certains réseaux, où divers types de censure sont utilisés, les serveurs API peuvent ne pas être directement accessibles.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Open %@ settings" xml:space="preserve">
- <source>Open %@ settings</source>
- <target state="needs-translation">Open %@ settings</target>
- <note/>
- </trans-unit>
- <trans-unit id="Optional" xml:space="preserve">
- <source>Optional</source>
- <target state="translated">Facultatif</target>
- <note/>
- </trans-unit>
- <trans-unit id="Out IPv4" xml:space="preserve">
- <source>Out IPv4</source>
- <target state="needs-translation">Out IPv4</target>
- <note/>
- </trans-unit>
- <trans-unit id="Out IPv6" xml:space="preserve">
- <source>Out IPv6</source>
- <target state="needs-translation">Out IPv6</target>
- <note/>
- </trans-unit>
- <trans-unit id="Out of time" xml:space="preserve">
- <source>Out of time</source>
- <target state="translated">Plus de temps</target>
- <note/>
- </trans-unit>
- <trans-unit id="Overrides active" xml:space="preserve">
- <source>Overrides active</source>
- <target state="translated">Substitutions actives</target>
- <note/>
- </trans-unit>
- <trans-unit id="Owned" xml:space="preserve">
- <source>Owned</source>
- <target state="translated">Possédé</target>
- <note/>
- </trans-unit>
- <trans-unit id="Ownership" xml:space="preserve">
- <source>Ownership</source>
- <target state="translated">Propriété</target>
- <note/>
- </trans-unit>
- <trans-unit id="Paid until" xml:space="preserve">
- <source>Paid until</source>
- <target state="translated">Payé jusqu'au</target>
- <note/>
- </trans-unit>
- <trans-unit id="Password" xml:space="preserve">
- <source>Password</source>
- <target state="translated">Mot de passe</target>
- <note/>
- </trans-unit>
- <trans-unit id="Performs a connection test to a Mullvad API server via this access method." xml:space="preserve">
- <source>Performs a connection test to a Mullvad API server via this access method.</source>
- <target state="needs-translation">Performs a connection test to a Mullvad API server via this access method.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Please enter a valid IPv4 or IPv6 address." xml:space="preserve">
- <source>Please enter a valid IPv4 or IPv6 address.</source>
- <target state="translated">Merci de saisir une adresse IPv4 ou IPv6 valide.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Please enter a valid port." xml:space="preserve">
- <source>Please enter a valid port.</source>
- <target state="needs-translation">Please enter a valid port.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Please log out of at least one by removing it from the list below. You can find the corresponding device name under the device’s Account settings." xml:space="preserve">
- <source>Please log out of at least one by removing it from the list below. You can find the corresponding device name under the device’s Account settings.</source>
- <target state="translated">Merci de vous déconnecter d'au moins un appareil en le supprimant de la liste ci-dessous. Vous trouverez le nom de l'appareil correspondant dans les paramètres du compte de l'appareil.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Please retry by using the &quot;Restore purchases&quot; button." xml:space="preserve">
- <source>Please retry by using the "Restore purchases" button.</source>
- <target state="needs-translation">Please retry by using the "Restore purchases" button.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Port" xml:space="preserve">
- <source>Port</source>
- <target state="needs-translation">Port</target>
- <note/>
- </trans-unit>
- <trans-unit id="Port: %@" xml:space="preserve">
- <source>Port: %@</source>
- <target state="needs-translation">Port: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Previous" xml:space="preserve">
- <source>Previous</source>
- <target state="needs-translation">Previous</target>
- <note/>
- </trans-unit>
- <trans-unit id="Providers" xml:space="preserve">
- <source>Providers</source>
- <target state="translated">Fournisseurs</target>
- <note/>
- </trans-unit>
- <trans-unit id="Providers: %d" xml:space="preserve">
- <source>Providers: %d</source>
- <target state="needs-translation">Providers: %d</target>
- <note/>
- </trans-unit>
- <trans-unit id="QUIC" xml:space="preserve">
- <source>QUIC</source>
- <target state="needs-translation">QUIC</target>
- <note/>
- </trans-unit>
- <trans-unit id="Quantum resistance" xml:space="preserve">
- <source>Quantum resistance</source>
- <target state="translated">Résistance quantique</target>
- <note/>
- </trans-unit>
- <trans-unit id="Quantum-resistant tunnel" xml:space="preserve">
- <source>Quantum-resistant tunnel</source>
- <target state="translated">Tunnel résistant aux attaques quantiques</target>
- <note/>
- </trans-unit>
- <trans-unit id="Reconnecting" xml:space="preserve">
- <source>Reconnecting</source>
- <target state="translated">Reconnexion</target>
- <note/>
- </trans-unit>
- <trans-unit id="Reconnecting to %@, %@" xml:space="preserve">
- <source>Reconnecting to %1$@, %2$@</source>
- <target state="needs-translation">Reconnecting to %1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Redeem" xml:space="preserve">
- <source>Redeem</source>
- <target state="translated">Échanger</target>
- <note/>
- </trans-unit>
- <trans-unit id="Redeem voucher" xml:space="preserve">
- <source>Redeem voucher</source>
- <target state="translated">Échangez un bon</target>
- <note/>
- </trans-unit>
- <trans-unit id="Refund last purchase with StoreKit2" xml:space="preserve">
- <source>Refund last purchase with StoreKit2</source>
- <target state="needs-translation">Refund last purchase with StoreKit2</target>
- <note/>
- </trans-unit>
- <trans-unit id="Refund successful" xml:space="preserve">
- <source>Refund successful</source>
- <target state="needs-translation">Refund successful</target>
- <note/>
- </trans-unit>
- <trans-unit id="Remove" xml:space="preserve">
- <source>Remove</source>
- <target state="translated">Supprimer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Remove %@?" xml:space="preserve">
- <source>Remove %@?</source>
- <target state="translated">Supprimer %@ ?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Remove last used account" xml:space="preserve">
- <source>Remove last used account</source>
- <target state="needs-translation">Remove last used account</target>
- <note/>
- </trans-unit>
- <trans-unit id="Removing the saved account number from this device cannot be undone.&#10;Do you want to remove the saved account number?" xml:space="preserve">
- <source>Removing the saved account number from this device cannot be undone.
-Do you want to remove the saved account number?</source>
- <target state="needs-translation">Removing the saved account number from this device cannot be undone.
-Do you want to remove the saved account number?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Rented" xml:space="preserve">
- <source>Rented</source>
- <target state="translated">Loué</target>
- <note/>
- </trans-unit>
- <trans-unit id="Report a problem" xml:space="preserve">
- <source>Report a problem</source>
- <target state="translated">Signaler un problème</target>
- <note/>
- </trans-unit>
- <trans-unit id="Required" xml:space="preserve">
- <source>Required</source>
- <target state="translated">Requis</target>
- <note/>
- </trans-unit>
- <trans-unit id="Restore purchases" xml:space="preserve">
- <source>Restore purchases</source>
- <target state="needs-translation">Restore purchases</target>
- <note/>
- </trans-unit>
- <trans-unit id="Save" xml:space="preserve">
- <source>Save</source>
- <target state="translated">Enregistrer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Saving changes..." xml:space="preserve">
- <source>Saving changes...</source>
- <target state="needs-translation">Saving changes...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Search for..." xml:space="preserve">
- <source>Search for...</source>
- <target state="translated">Rechercher...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Select location" xml:space="preserve">
- <source>Select location</source>
- <target state="translated">Sélectionner une localisation</target>
- <note/>
- </trans-unit>
- <trans-unit id="Selected" xml:space="preserve">
- <source>Selected</source>
- <target state="needs-translation">Selected</target>
- <note/>
- </trans-unit>
- <trans-unit id="Send" xml:space="preserve">
- <source>Send</source>
- <target state="translated">Envoyer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Send anyway" xml:space="preserve">
- <source>Send anyway</source>
- <target state="translated">Envoyer quand même</target>
- <note/>
- </trans-unit>
- <trans-unit id="Sending..." xml:space="preserve">
- <source>Sending...</source>
- <target state="translated">Envoi...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Sent" xml:space="preserve">
- <source>Sent</source>
- <target state="translated">Envoyé</target>
- <note/>
- </trans-unit>
- <trans-unit id="Server" xml:space="preserve">
- <source>Server</source>
- <target state="translated">Serveur</target>
- <note/>
- </trans-unit>
- <trans-unit id="Server IP override" xml:space="preserve">
- <source>Server IP override</source>
- <target state="translated">Substitution d'IP de serveur</target>
- <note/>
- </trans-unit>
- <trans-unit id="Server details" xml:space="preserve">
- <source>Server details</source>
- <target state="translated">Détails du serveur</target>
- <note/>
- </trans-unit>
- <trans-unit id="Setting: %@" xml:space="preserve">
- <source>Setting: %@</source>
- <target state="needs-translation">Setting: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Settings" xml:space="preserve">
- <source>Settings</source>
- <target state="translated">Paramètres</target>
- <note/>
- </trans-unit>
- <trans-unit id="Settings migration error" xml:space="preserve">
- <source>Settings migration error</source>
- <target state="needs-translation">Settings migration error</target>
- <note/>
- </trans-unit>
- <trans-unit id="Shadowsocks" xml:space="preserve">
- <source>Shadowsocks</source>
- <target state="needs-translation">Shadowsocks</target>
- <note/>
- </trans-unit>
- <trans-unit id="Show account number" xml:space="preserve">
- <source>Show account number</source>
- <target state="translated">Afficher le numéro de compte</target>
- <note/>
- </trans-unit>
- <trans-unit id="Social media" xml:space="preserve">
- <source>Social media</source>
- <target state="translated">Réseaux sociaux</target>
- <note/>
- </trans-unit>
- <trans-unit id="Socks5" xml:space="preserve">
- <source>Socks5</source>
- <target state="needs-translation">Socks5</target>
- <note/>
- </trans-unit>
- <trans-unit id="Start using the app" xml:space="preserve">
- <source>Start using the app</source>
- <target state="translated">Commencer à utiliser l'application</target>
- <note/>
- </trans-unit>
- <trans-unit id="Super!" xml:space="preserve">
- <source>Super!</source>
- <target state="translated">Super !</target>
- <note/>
- </trans-unit>
- <trans-unit id="Switch location" xml:space="preserve">
- <source>Switch location</source>
- <target state="translated">Changer de localisation</target>
- <note/>
- </trans-unit>
- <trans-unit id="TCP" xml:space="preserve">
- <source>TCP</source>
- <target state="needs-translation">TCP</target>
- <note/>
- </trans-unit>
- <trans-unit id="TUNNEL ERROR" xml:space="preserve">
- <source>TUNNEL ERROR</source>
- <target state="needs-translation">TUNNEL ERROR</target>
- <note/>
- </trans-unit>
- <trans-unit id="Tap **Edit** to add at least one DNS server." xml:space="preserve">
- <source>Tap **Edit** to add at least one DNS server.</source>
- <target state="needs-translation">Tap **Edit** to add at least one DNS server.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Test method" xml:space="preserve">
- <source>Test method</source>
- <target state="translated">Tester la méthode</target>
- <note/>
- </trans-unit>
- <trans-unit id="Testing..." xml:space="preserve">
- <source>Testing...</source>
- <target state="translated">Test...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Thanks for your purchase" xml:space="preserve">
- <source>Thanks for your purchase</source>
- <target state="needs-translation">Thanks for your purchase</target>
- <note/>
- </trans-unit>
- <trans-unit id="Thanks!" xml:space="preserve">
- <source>Thanks!</source>
- <target state="translated">Merci !</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app communicates with a Mullvad API server directly." xml:space="preserve">
- <source>The app communicates with a Mullvad API server directly.</source>
- <target state="needs-translation">The app communicates with a Mullvad API server directly.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app communicates with a Mullvad API server via a Mullvad bridge server." xml:space="preserve">
- <source>The app communicates with a Mullvad API server via a Mullvad bridge server.</source>
- <target state="needs-translation">The app communicates with a Mullvad API server via a Mullvad bridge server.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app communicates with a Mullvad API server via a proxy address." xml:space="preserve">
- <source>The app communicates with a Mullvad API server via a proxy address.</source>
- <target state="needs-translation">The app communicates with a Mullvad API server via a proxy address.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app needs to communicate with a Mullvad API server to log you in, fetch server lists, and other critical operations." xml:space="preserve">
- <source>The app needs to communicate with a Mullvad API server to log you in, fetch server lists, and other critical operations.</source>
- <target state="translated">L'application doit communiquer avec un serveur d'API Mullvad pour vous connecter, récupérer des listes de serveurs et effectuer d'autres opérations critiques.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app will test the method before saving." xml:space="preserve">
- <source>The app will test the method before saving.</source>
- <target state="needs-translation">The app will test the method before saving.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The automatic setting will randomly choose from the valid port ranges shown below." xml:space="preserve">
- <source>The automatic setting will randomly choose from the valid port ranges shown below.</source>
- <target state="translated">Le réglage automatique choisira au hasard parmi la plage de ports valide affichée ci-dessous.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The custom port can be any value inside the valid ranges: %@." xml:space="preserve">
- <source>The custom port can be any value inside the valid ranges: %@.</source>
- <target state="translated">Le port personnalisé peut prendre n'importe quelle valeur dans les plages valides : %@.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The device will be removed from the list and logged out." xml:space="preserve">
- <source>The device will be removed from the list and logged out.</source>
- <target state="translated">L'appareil sera supprimé de la liste et déconnecté.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The entry and exit servers cannot be the same. Try changing one to a new server or location." xml:space="preserve">
- <source>The entry and exit servers cannot be the same. Try changing one to a new server or location.</source>
- <target state="needs-translation">The entry and exit servers cannot be the same. Try changing one to a new server or location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The entry server for %@ is currently overridden by %@. To select an entry server, please first enable “%@” or disable “%@“ in the settings." xml:space="preserve">
- <source>The entry server for %1$@ is currently overridden by %2$@. To select an entry server, please first enable “%3$@” or disable “%4$@“ in the settings.</source>
- <target state="needs-translation">The entry server for %1$@ is currently overridden by %2$@. To select an entry server, please first enable “%3$@” or disable “%4$@“ in the settings.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The payment request was cancelled." xml:space="preserve">
- <source>The payment request was cancelled.</source>
- <target state="needs-translation">The payment request was cancelled.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The selected WireGuard port is not supported, please change it under **VPN settings**." xml:space="preserve">
- <source>The selected WireGuard port is not supported, please change it under **VPN settings**.</source>
- <target state="needs-translation">The selected WireGuard port is not supported, please change it under **VPN settings**.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The version of settings stored on device is unrecognized.Settings will be reset to defaults and the device will be logged out." xml:space="preserve">
- <source>The version of settings stored on device is unrecognized.Settings will be reset to defaults and the device will be logged out.</source>
- <target state="needs-translation">The version of settings stored on device is unrecognized.Settings will be reset to defaults and the device will be logged out.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This can be useful if the API is censored but Mullvad’s bridge servers are not." xml:space="preserve">
- <source>This can be useful if the API is censored but Mullvad’s bridge servers are not.</source>
- <target state="translated">Cela peut être utile si l'API est censurée, mais que les serveurs de pont Mullvad ne le sont pas.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This can be useful when you are not affected by censorship." xml:space="preserve">
- <source>This can be useful when you are not affected by censorship.</source>
- <target state="translated">Cela peut être utile lorsque vous n'êtes pas concerné par la censure.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This device is not allowed to make the payment." xml:space="preserve">
- <source>This device is not allowed to make the payment.</source>
- <target state="needs-translation">This device is not allowed to make the payment.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc." xml:space="preserve">
- <source>This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc.</source>
- <target state="translated">Cette fonctionnalité permet d'accéder à d'autres appareils sur le réseau local, par exemple pour le partage, l'impression, le streaming, etc.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This feature allows you to circumvent that censorship by adding custom ways to access the API via proxies and similar methods." xml:space="preserve">
- <source>This feature allows you to circumvent that censorship by adding custom ways to access the API via proxies and similar methods.</source>
- <target state="translated">Cette fonctionnalité vous permet de contourner cette censure en ajoutant des moyens personnalisés d'accéder à l'API via des proxys et des méthodes similaires.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers." xml:space="preserve">
- <source>This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers.</source>
- <target state="translated">Cette fonctionnalité rend le tunnel WireGuard résistant aux attaques potentielles des ordinateurs quantiques.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This is the name assigned to the device. Each device logged in on a Mullvad account gets a unique name that helps you identify it when you manage your devices in the app or on the website." xml:space="preserve">
- <source>This is the name assigned to the device. Each device logged in on a Mullvad account gets a unique name that helps you identify it when you manage your devices in the app or on the website.</source>
- <target state="translated">Il s'agit du nom attribué à l'appareil. Chaque appareil connecté à un compte Mullvad reçoit un nom unique qui vous aide à l'identifier lorsque vous gérez vos appareils dans l'application ou sur le site Web.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This logs out all devices using this account and all VPN access will be denied even if there is time left on the account. Enter the last 4 digits of the account number and hit &quot;Delete account&quot; if you really want to delete the account:" xml:space="preserve">
- <source>This logs out all devices using this account and all VPN access will be denied even if there is time left on the account. Enter the last 4 digits of the account number and hit "Delete account" if you really want to delete the account:</source>
- <target state="needs-translation">This logs out all devices using this account and all VPN access will be denied even if there is time left on the account. Enter the last 4 digits of the account number and hit "Delete account" if you really want to delete the account:</target>
- <note/>
- </trans-unit>
- <trans-unit id="This might cause issues on certain websites, services, and apps." xml:space="preserve">
- <source>This might cause issues on certain websites, services, and apps.</source>
- <target state="translated">Cela peut causer des problèmes sur certains sites Web, services et applications.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This voucher code has already been used." xml:space="preserve">
- <source>This voucher code has already been used.</source>
- <target state="needs-translation">This voucher code has already been used.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Time left: %@" xml:space="preserve">
- <source>Time left: %@</source>
- <target state="needs-translation">Time left: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="To add more, you will need to disconnect and access the Internet with an unsecure connection." xml:space="preserve">
- <source>To add more, you will need to disconnect and access the Internet with an unsecure connection.</source>
- <target state="translated">Pour en ajouter d'autres, vous devrez vous déconnecter et accéder à internet avec une connexion non sécurisée.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To assist you better, please write in English or Swedish and include which country you are connecting from." xml:space="preserve">
- <source>To assist you better, please write in English or Swedish and include which country you are connecting from.</source>
- <target state="translated">Pour nous permettre de mieux vous assister, merci d'écrire en anglais ou en suédois et d'indiquer le pays à partir duquel vous vous connectez.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To circumvent this you can import a file or a text, provided by our support team, with new IP addresses that override the default addresses of the servers in the Select location view." xml:space="preserve">
- <source>To circumvent this you can import a file or a text, provided by our support team, with new IP addresses that override the default addresses of the servers in the Select location view.</source>
- <target state="translated">Pour contourner ce problème, vous pouvez importer un fichier ou du texte fourni par notre équipe d'assistance, avec de nouvelles adresses IP qui remplacent les adresses par défaut des serveurs dans la vue Sélectionner un emplacement.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools." xml:space="preserve">
- <source>To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools.</source>
- <target state="translated">Pour continuer votre voyage de ninja de la confidentialité, visitez notre site Web pour découvrir d'autres outils et habitudes pour protéger votre vie privée.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To create a custom list, tap on &quot;...&quot; " xml:space="preserve">
- <source>To create a custom list, tap on "..." </source>
- <target state="needs-translation">To create a custom list, tap on "..." </target>
- <note/>
- </trans-unit>
- <trans-unit id="To enable this setting, add at least one server." xml:space="preserve">
- <source>To enable this setting, add at least one server.</source>
- <target state="needs-translation">To enable this setting, add at least one server.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To help you more effectively, your app’s log file will be attached to this message. Your data will remain secure and private, as it is anonymised before being sent over an encrypted channel." xml:space="preserve">
- <source>To help you more effectively, your app’s log file will be attached to this message. Your data will remain secure and private, as it is anonymised before being sent over an encrypted channel.</source>
- <target state="translated">Pour mieux vous aider, le fichier journal de l'application est joint à ce message. Vos données restent privées et en sécurité dans la mesure où elles sont rendues anonymes avant d'être envoyées via un canal chiffré.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To start using the app, you first need to add time to your account." xml:space="preserve">
- <source>To start using the app, you first need to add time to your account.</source>
- <target state="translated">Pour commencer à utiliser l'application, vous devez d'abord ajouter du temps à votre compte.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Too many devices" xml:space="preserve">
- <source>Too many devices</source>
- <target state="translated">Trop d'appareils</target>
- <note/>
- </trans-unit>
- <trans-unit id="Trackers" xml:space="preserve">
- <source>Trackers</source>
- <target state="needs-translation">Trackers</target>
- <note/>
- </trans-unit>
- <trans-unit id="Try again" xml:space="preserve">
- <source>Try again</source>
- <target state="translated">Réessayer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Tunnel is unset." xml:space="preserve">
- <source>Tunnel is unset.</source>
- <target state="needs-translation">Tunnel is unset.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Type" xml:space="preserve">
- <source>Type</source>
- <target state="needs-translation">Type</target>
- <note/>
- </trans-unit>
- <trans-unit id="UDP" xml:space="preserve">
- <source>UDP</source>
- <target state="needs-translation">UDP</target>
- <note/>
- </trans-unit>
- <trans-unit id="UDP-over-TCP" xml:space="preserve">
- <source>UDP-over-TCP</source>
- <target state="needs-translation">UDP-over-TCP</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unable to authenticate account. Please log out and log back in." xml:space="preserve">
- <source>Unable to authenticate account. Please log out and log back in.</source>
- <target state="needs-translation">Unable to authenticate account. Please log out and log back in.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unable to start tunnel connection after update. Please disconnect and reconnect." xml:space="preserve">
- <source>Unable to start tunnel connection after update. Please disconnect and reconnect.</source>
- <target state="needs-translation">Unable to start tunnel connection after update. Please disconnect and reconnect.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unable to start tunnel connection. Please send a problem report." xml:space="preserve">
- <source>Unable to start tunnel connection. Please send a problem report.</source>
- <target state="translated">Impossible de démarrer la connexion au tunnel. Veuillez envoyer un rapport de problème.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unexpected server response: %1$@ (HTTP status: %2$d)" xml:space="preserve">
- <source>Unexpected server response: %1$@ (HTTP status: %2$d)</source>
- <target state="needs-translation">Unexpected server response: %1$@ (HTTP status: %2$d)</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unexpected server response: %d" xml:space="preserve">
- <source>Unexpected server response: %d</source>
- <target state="needs-translation">Unexpected server response: %d</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unknown error." xml:space="preserve">
- <source>Unknown error.</source>
- <target state="translated">Erreur inconnue.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Use custom DNS server" xml:space="preserve">
- <source>Use custom DNS server</source>
- <target state="translated">Utiliser un serveur DNS personnalisé</target>
- <note/>
- </trans-unit>
- <trans-unit id="Username" xml:space="preserve">
- <source>Username</source>
- <target state="translated">Nom d'utilisateur</target>
- <note/>
- </trans-unit>
- <trans-unit id="VPN settings" xml:space="preserve">
- <source>VPN settings</source>
- <target state="translated">Paramètres VPN</target>
- <note/>
- </trans-unit>
- <trans-unit id="Valid range: %d - %d" xml:space="preserve">
- <source>Valid range: %1$d - %2$d</source>
- <target state="translated">Plage valide : %1$d - %2$d</target>
- <note/>
- </trans-unit>
- <trans-unit id="Verifying voucher..." xml:space="preserve">
- <source>Verifying voucher...</source>
- <target state="translated">Vérification du bon…</target>
- <note/>
- </trans-unit>
- <trans-unit id="View and manage all your logged in devices. You can have up to 5 devices on one account at a time. Each device gets a name when logged in to help you tell them apart easily." xml:space="preserve">
- <source>View and manage all your logged in devices. You can have up to 5 devices on one account at a time. Each device gets a name when logged in to help you tell them apart easily.</source>
- <target state="translated">Affichez et gérez tous vos appareils connectés. Vous pouvez avoir jusqu'à 5 appareils sur un même compte. Chaque appareil reçoit un nom lorsqu'il est connecté, ce qui vous permet de le distinguer facilement.</target>
- <note/>
- </trans-unit>
- <trans-unit id="View app logs" xml:space="preserve">
- <source>View app logs</source>
- <target state="translated">Afficher les journaux de l'application</target>
- <note/>
- </trans-unit>
- <trans-unit id="Voucher code is invalid." xml:space="preserve">
- <source>Voucher code is invalid.</source>
- <target state="translated">Le code du bon n'est pas valide.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Voucher was successfully redeemed." xml:space="preserve">
- <source>Voucher was successfully redeemed.</source>
- <target state="translated">Le bon a bien été échangé.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Warning: The malware blocker is not an anti-virus and should not be treated as such, this is just an extra layer of protection." xml:space="preserve">
- <source>Warning: The malware blocker is not an anti-virus and should not be treated as such, this is just an extra layer of protection.</source>
- <target state="translated">Avertissement : le bloqueur de malware n'est pas un anti-virus et ne doit pas être traité comme tel, il s'agit juste d'une couche de protection supplémentaire.</target>
- <note/>
- </trans-unit>
- <trans-unit id="We are having some issues, please try again later" xml:space="preserve">
- <source>We are having some issues, please try again later</source>
- <target state="needs-translation">We are having some issues, please try again later</target>
- <note/>
- </trans-unit>
- <trans-unit id="We will look into this." xml:space="preserve">
- <source>We will look into this.</source>
- <target state="translated">Nous allons nous pencher dessus.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Welcome, this device is now called **%@**. For more details see the info button in Account." xml:space="preserve">
- <source>Welcome, this device is now called **%@**. For more details see the info button in Account.</source>
- <target state="needs-translation">Welcome, this device is now called **%@**. For more details see the info button in Account.</target>
- <note/>
- </trans-unit>
- <trans-unit id="What’s new" xml:space="preserve">
- <source>What’s new</source>
- <target state="translated">Quoi de neuf</target>
- <note/>
- </trans-unit>
- <trans-unit id="When this feature is enabled it stops the device from contacting certain domains or websites known for distributing ads, malware, trackers and more." xml:space="preserve">
- <source>When this feature is enabled it stops the device from contacting certain domains or websites known for distributing ads, malware, trackers and more.</source>
- <target state="translated">Lorsque cette fonctionnalité est activée, elle empêche l'appareil de contacter certains domaines ou sites Web connus pour distribuer des publicités, des logiciels malveillants, des trackers et plus.</target>
- <note/>
- </trans-unit>
- <trans-unit id="When using DAITA, one provider with DAITA-enabled servers is required." xml:space="preserve">
- <source>When using DAITA, one provider with DAITA-enabled servers is required.</source>
- <target state="needs-translation">When using DAITA, one provider with DAITA-enabled servers is required.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Which TCP port the UDP-over-TCP obfuscation protocol should connect to on the VPN server." xml:space="preserve">
- <source>Which TCP port the UDP-over-TCP obfuscation protocol should connect to on the VPN server.</source>
- <target state="translated">Le port TCP auquel le protocole de dissimulation UDP sur TCP doit se connecter sur le serveur VPN.</target>
- <note/>
- </trans-unit>
- <trans-unit id="WireGuard obfuscation" xml:space="preserve">
- <source>WireGuard obfuscation</source>
- <target state="translated">Obfuscation WireGuard</target>
- <note/>
- </trans-unit>
- <trans-unit id="WireGuard port" xml:space="preserve">
- <source>WireGuard port</source>
- <target state="translated">Port WireGuard</target>
- <note/>
- </trans-unit>
- <trans-unit id="With the “Direct” method, the app communicates with a Mullvad API server directly without any intermediate proxies." xml:space="preserve">
- <source>With the “Direct” method, the app communicates with a Mullvad API server directly without any intermediate proxies.</source>
- <target state="translated">Avec le mode « Direct », l'application communique directement avec un serveur d'API Mullvad, sans passer par des proxys intermédiaires.</target>
- <note/>
- </trans-unit>
- <trans-unit id="With the “Encrypted DNS proxy” method, the app will communicate with our Mullvad API through a proxy address. It does this by retrieving an address from a DNS over HTTPS (DoH) server and then using that to reach our API servers." xml:space="preserve">
- <source>With the “Encrypted DNS proxy” method, the app will communicate with our Mullvad API through a proxy address. It does this by retrieving an address from a DNS over HTTPS (DoH) server and then using that to reach our API servers.</source>
- <target state="translated">Avec la méthode « proxy DNS chiffré », l'application communiquera avec notre API Mullvad par le biais d'une adresse proxy. Pour ce faire, elle récupère une adresse auprès d'un serveur DNS over HTTPS (DoH) et l'utilise pour atteindre nos serveurs API.</target>
- <note/>
- </trans-unit>
- <trans-unit id="With the “Mullvad bridges” method, the app communicates with a Mullvad API server via a Mullvad bridge server. It does this by sending the traffic obfuscated by Shadowsocks." xml:space="preserve">
- <source>With the “Mullvad bridges” method, the app communicates with a Mullvad API server via a Mullvad bridge server. It does this by sending the traffic obfuscated by Shadowsocks.</source>
- <target state="translated">Dans la méthode « Ponts Mullvad », l'application communique avec un serveur d'API Mullvad via un serveur pont Mullvad. Pour ce faire, elle envoie le trafic obscurci par Shadowsocks.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Yes, continue" xml:space="preserve">
- <source>Yes, continue</source>
- <target state="needs-translation">Yes, continue</target>
- <note/>
- </trans-unit>
- <trans-unit id="Yes, log out device" xml:space="preserve">
- <source>Yes, log out device</source>
- <target state="translated">Oui, déconnecter l'appareil</target>
- <note/>
- </trans-unit>
- <trans-unit id="You already have a saved account number, by creating a new account the saved account number will be removed from this device. This cannot be undone." xml:space="preserve">
- <source>You already have a saved account number, by creating a new account the saved account number will be removed from this device. This cannot be undone.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Vous avez déjà un numéro de compte enregistré. Si vous créez un nouveau compte, le numéro de compte enregistré sera supprimé de cet appareil. Cette action est irréversible.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You are about to send the problem report without a way for us to get back to you. If you want an answer to your report you will have to enter an email address." xml:space="preserve">
- <source>You are about to send the problem report without a way for us to get back to you. If you want an answer to your report you will have to enter an email address.</source>
- <target state="translated">Vous êtes sur le point d'envoyer un signalement de problème sans nous fournir un moyen de vous contacter. Si vous désirez une réponse à votre signalement, vous devez saisir une adresse e-mail.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You are logged in with an invalid account number. Please log out and try another one." xml:space="preserve">
- <source>You are logged in with an invalid account number. Please log out and try another one.</source>
- <target state="translated">Vous vous êtes connecté(e) avec un numéro de compte non valide. Veuillez vous déconnecter et en essayer un autre.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You can add more time via the account view or website to continue using the VPN." xml:space="preserve">
- <source>You can add more time via the account view or website to continue using the VPN.</source>
- <target state="needs-translation">You can add more time via the account view or website to continue using the VPN.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You can have up to 5 devices logged in on one Mullvad account." xml:space="preserve">
- <source>You can have up to 5 devices logged in on one Mullvad account.</source>
- <target state="translated">Vous pouvez connecter jusqu'à 5 appareils au même compte Mullvad.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You can now continue logging in on this device." xml:space="preserve">
- <source>You can now continue logging in on this device.</source>
- <target state="translated">Vous pouvez maintenant continuer la connexion sur cet appareil.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You can use the &quot;restore purchases&quot; function to check for any in-app payments made via Apple services. If there is a payment that has not been credited, it will add the time to the currently logged in Mullvad account." xml:space="preserve">
- <source>You can use the "restore purchases" function to check for any in-app payments made via Apple services. If there is a payment that has not been credited, it will add the time to the currently logged in Mullvad account.</source>
- <target state="needs-translation">You can use the "restore purchases" function to check for any in-app payments made via Apple services. If there is a payment that has not been credited, it will add the time to the currently logged in Mullvad account.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have %@ left on this account." xml:space="preserve">
- <source>You have %@ left on this account.</source>
- <target state="needs-translation">You have %@ left on this account.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have a right to privacy. That’s why we never store activity logs, don’t ask for personal information, and encourage anonymous payments.&#10;&#10;In some situations, as outlined in our privacy policy, we might process personal data that you choose to send, for example if you email us.&#10;&#10;We strongly believe in retaining as little data as possible because we want you to remain anonymous." xml:space="preserve">
- <source>You have a right to privacy. That’s why we never store activity logs, don’t ask for personal information, and encourage anonymous payments.
-
-In some situations, as outlined in our privacy policy, we might process personal data that you choose to send, for example if you email us.
-
-We strongly believe in retaining as little data as possible because we want you to remain anonymous.</source>
- <target state="needs-translation">You have a right to privacy. That’s why we never store activity logs, don’t ask for personal information, and encourage anonymous payments.
-
-In some situations, as outlined in our privacy policy, we might process personal data that you choose to send, for example if you email us.
-
-We strongly believe in retaining as little data as possible because we want you to remain anonymous.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have no more VPN time left on this account. " xml:space="preserve">
- <source>You have no more VPN time left on this account. </source>
- <target state="translated">Vous n'avez plus de temps de VPN sur ce compte. </target>
- <note/>
- </trans-unit>
- <trans-unit id="You have one day left on this account. Please add more time to continue using the VPN." xml:space="preserve">
- <source>You have one day left on this account. Please add more time to continue using the VPN.</source>
- <target state="needs-translation">You have one day left on this account. Please add more time to continue using the VPN.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have removed this device. To connect again, you will need to log back in." xml:space="preserve">
- <source>You have removed this device. To connect again, you will need to log back in.</source>
- <target state="translated">Vous avez supprimé cet appareil. Vous devrez vous reconnecter pour connecter cet appareil à nouveau.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have unsaved changes." xml:space="preserve">
- <source>You have unsaved changes.</source>
- <target state="needs-translation">You have unsaved changes.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your device is offline. The tunnel will automatically connect once your device is back online." xml:space="preserve">
- <source>Your device is offline. The tunnel will automatically connect once your device is back online.</source>
- <target state="translated">Votre appareil est hors ligne. Le tunnel se connectera automatiquement une fois votre appareil à nouveau en ligne.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your device is offline. Try connecting again when the device has access to Internet." xml:space="preserve">
- <source>Your device is offline. Try connecting again when the device has access to Internet.</source>
- <target state="needs-translation">Your device is offline. Try connecting again when the device has access to Internet.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your email (optional)" xml:space="preserve">
- <source>Your email (optional)</source>
- <target state="translated">Votre e-mail (facultatif)</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your previous purchases have already been added to this account." xml:space="preserve">
- <source>Your previous purchases have already been added to this account.</source>
- <target state="needs-translation">Your previous purchases have already been added to this account.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your purchase was successfully refunded." xml:space="preserve">
- <source>Your purchase was successfully refunded.</source>
- <target state="needs-translation">Your purchase was successfully refunded.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You’re all set!!" xml:space="preserve">
- <source>You’re all set!!</source>
- <target state="needs-translation">You’re all set!!</target>
- <note/>
- </trans-unit>
- <trans-unit id="file" xml:space="preserve">
- <source>file</source>
- <target state="translated">fichier</target>
- <note/>
- </trans-unit>
- <trans-unit id="method" xml:space="preserve">
- <source>method</source>
- <target state="needs-translation">method</target>
- <note/>
- </trans-unit>
- <trans-unit id="multihop" xml:space="preserve">
- <source>multihop</source>
- <target state="needs-translation">multihop</target>
- <note/>
- </trans-unit>
- <trans-unit id="text" xml:space="preserve">
- <source>text</source>
- <target state="translated">texte</target>
- <note/>
- </trans-unit>
- <trans-unit id="value" xml:space="preserve">
- <source>value</source>
- <target state="needs-translation">value</target>
- <note/>
- </trans-unit>
- <trans-unit id="“%@ Local network sharing” requires restarting the VPN connection, which will disconnect you and briefly expose your traffic.&#10;To prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing.&#10;Would you like to continue to enable “Local network sharing”?" xml:space="preserve">
- <source>“%@ Local network sharing” requires restarting the VPN connection, which will disconnect you and briefly expose your traffic.
-To prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing.
-Would you like to continue to enable “Local network sharing”?</source>
- <target state="needs-translation">“%@ Local network sharing” requires restarting the VPN connection, which will disconnect you and briefly expose your traffic.
-To prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing.
-Would you like to continue to enable “Local network sharing”?</target>
- <note/>
- </trans-unit>
- </body>
- </file>
- <file original="Assets/MullvadSettings-InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="Assets/MullvadTypes-InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadLogging-InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadMockData/MullvadMockData-InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadREST/InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadRustRuntime-InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadVPN/Supporting Files/InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSLocalNetworkUsageDescription" xml:space="preserve">
- <source>The app needs this to connect and test a new method.</source>
- <target state="needs-translation">The app needs this to connect and test a new method.</target>
- <note>Privacy - Local Network Usage Description</note>
- </trans-unit>
- </body>
- </file>
- <file original="Operations/Operations-InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="PacketTunnel/InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- </body>
- </file>
- <file original="PacketTunnel/Localizable.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="%@ was added to your account." xml:space="preserve">
- <source>%@ was added to your account.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">%@ a été ajouté à votre compte.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot complete the purchase" xml:space="preserve">
- <source>Cannot complete the purchase</source>
- <target state="needs-translation">Cannot complete the purchase</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot restore purchases" xml:space="preserve">
- <source>Cannot restore purchases</source>
- <target state="needs-translation">Cannot restore purchases</target>
- <note/>
- </trans-unit>
- <trans-unit id="Restore purchases" xml:space="preserve">
- <source>Restore purchases</source>
- <target state="needs-translation">Restore purchases</target>
- <note/>
- </trans-unit>
- <trans-unit id="Thanks for your purchase" xml:space="preserve">
- <source>Thanks for your purchase</source>
- <target state="needs-translation">Thanks for your purchase</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your previous purchases have already been added to this account." xml:space="preserve">
- <source>Your previous purchases have already been added to this account.</source>
- <target state="needs-translation">Your previous purchases have already been added to this account.</target>
- <note/>
- </trans-unit>
- </body>
- </file>
- <file original="PacketTunnelCore/PacketTunnelCore-InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="Routing/Routing-InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/ios/translation/locales/sv.xliff b/ios/translation/locales/sv.xliff
deleted file mode 100644
index 06f4987dd7..0000000000
--- a/ios/translation/locales/sv.xliff
+++ /dev/null
@@ -1,2133 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd">
- <file original="Assets/Localizable.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="%@" xml:space="preserve">
- <source>%@</source>
- <target state="needs-translation">%@</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ (%@) hides patterns in your encrypted VPN traffic." xml:space="preserve">
- <source>%1$@ (%2$@) hides patterns in your encrypted VPN traffic.</source>
- <target state="translated">%1$@ (%2$@) döljer mönster i din krypterade VPN-trafik.</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ cannot be empty." xml:space="preserve">
- <source>%@ cannot be empty.</source>
- <target state="needs-translation">%@ cannot be empty.</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ does this by carefully adding network noise and making all network packets the same size." xml:space="preserve">
- <source>%@ does this by carefully adding network noise and making all network packets the same size.</source>
- <target state="translated">%@ gör det genom att noggrant lägga till nätverksbrus och se till så att alla nätverkspaket har samma storlek.</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ left on this account" xml:space="preserve">
- <source>%@ left on this account</source>
- <target state="needs-translation">%@ left on this account</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ via %@" xml:space="preserve">
- <source>%1$@ via %2$@</source>
- <target state="needs-translation">%1$@ via %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@ was added to your account." xml:space="preserve">
- <source>%@ was added to your account.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">%@ har lagts till i ditt konto.</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@, %@" xml:space="preserve">
- <source>%1$@, %2$@</source>
- <target state="needs-translation">%1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="%@: Multihop" xml:space="preserve">
- <source>%@: Multihop</source>
- <target state="needs-translation">%@: Multihop</target>
- <note/>
- </trans-unit>
- <trans-unit id="%d more..." xml:space="preserve">
- <source>%d more...</source>
- <target state="translated">%d till ...</target>
- <note/>
- </trans-unit>
- <trans-unit id="%lld more..." xml:space="preserve">
- <source>%lld more...</source>
- <target state="translated">%lld till ...</target>
- <note/>
- </trans-unit>
- <trans-unit id="**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.**" xml:space="preserve">
- <source>**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.**</source>
- <target state="translated">**Obs! Detta ökar nätverkstrafiken men påverkar också hastighet, fördröjning och batterianvändning negativt. Var försiktig om du har ett abonnemang med begränsad datamängd.**</target>
- <note/>
- </trans-unit>
- <trans-unit id="**Tap here** to see what’s new" xml:space="preserve">
- <source>**Tap here** to see what’s new</source>
- <target state="needs-translation">**Tap here** to see what’s new</target>
- <note/>
- </trans-unit>
- <trans-unit id="API access" xml:space="preserve">
- <source>API access</source>
- <target state="translated">API-åtkomst</target>
- <note/>
- </trans-unit>
- <trans-unit id="API reachable" xml:space="preserve">
- <source>API reachable</source>
- <target state="translated">API kan nås</target>
- <note/>
- </trans-unit>
- <trans-unit id="API unreachable" xml:space="preserve">
- <source>API unreachable</source>
- <target state="translated">API kan inte nås</target>
- <note/>
- </trans-unit>
- <trans-unit id="API unreachable, save method anyway?" xml:space="preserve">
- <source>API unreachable, save method anyway?</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">API kan inte nås, spara metod ändå?</target>
- <note/>
- </trans-unit>
- <trans-unit id="About API access…" xml:space="preserve">
- <source>About API access…</source>
- <target state="needs-translation">About API access…</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Direct method..." xml:space="preserve">
- <source>About Direct method...</source>
- <target state="needs-translation">About Direct method...</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Encrypted DNS proxy method..." xml:space="preserve">
- <source>About Encrypted DNS proxy method...</source>
- <target state="needs-translation">About Encrypted DNS proxy method...</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Mullvad bridges method..." xml:space="preserve">
- <source>About Mullvad bridges method...</source>
- <target state="needs-translation">About Mullvad bridges method...</target>
- <note/>
- </trans-unit>
- <trans-unit id="About Server IP override..." xml:space="preserve">
- <source>About Server IP override...</source>
- <target state="needs-translation">About Server IP override...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account" xml:space="preserve">
- <source>Account</source>
- <target state="translated">Konto</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account created" xml:space="preserve">
- <source>Account created</source>
- <target state="translated">Kontot har skapats</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account credit expires soon" xml:space="preserve">
- <source>Account credit expires soon</source>
- <target state="translated">Kontokrediten slutar snart gälla</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account credit has expired" xml:space="preserve">
- <source>Account credit has expired</source>
- <target state="needs-translation">Account credit has expired</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account deletion" xml:space="preserve">
- <source>Account deletion</source>
- <target state="needs-translation">Account deletion</target>
- <note/>
- </trans-unit>
- <trans-unit id="Account number" xml:space="preserve">
- <source>Account number</source>
- <target state="translated">Kontonummer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Active features" xml:space="preserve">
- <source>Active features</source>
- <target state="translated">Aktiva funktioner</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add" xml:space="preserve">
- <source>Add</source>
- <target state="translated">Lägg till</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add 30 days" xml:space="preserve">
- <source>Add 30 days</source>
- <target state="needs-translation">Add 30 days</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add 90 days" xml:space="preserve">
- <source>Add 90 days</source>
- <target state="needs-translation">Add 90 days</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add a server" xml:space="preserve">
- <source>Add a server</source>
- <target state="translated">Lägg till en server</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add locations" xml:space="preserve">
- <source>Add locations</source>
- <target state="translated">Lägg till platser</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add method" xml:space="preserve">
- <source>Add method</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Lägg till metod</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add new list" xml:space="preserve">
- <source>Add new list</source>
- <target state="needs-translation">Add new list</target>
- <note/>
- </trans-unit>
- <trans-unit id="Add time" xml:space="preserve">
- <source>Add time</source>
- <target state="translated">Lägg till tid</target>
- <note/>
- </trans-unit>
- <trans-unit id="Ads" xml:space="preserve">
- <source>Ads</source>
- <target state="translated">Annonser</target>
- <note/>
- </trans-unit>
- <trans-unit id="Adult content" xml:space="preserve">
- <source>Adult content</source>
- <target state="translated">Vuxet innehåll</target>
- <note/>
- </trans-unit>
- <trans-unit id="Agree and continue" xml:space="preserve">
- <source>Agree and continue</source>
- <target state="translated">Godkänn och fortsätt</target>
- <note/>
- </trans-unit>
- <trans-unit id="All" xml:space="preserve">
- <source>All</source>
- <target state="needs-translation">All</target>
- <note/>
- </trans-unit>
- <trans-unit id="All locations" xml:space="preserve">
- <source>All locations</source>
- <target state="translated">Alla platser</target>
- <note/>
- </trans-unit>
- <trans-unit id="All providers" xml:space="preserve">
- <source>All providers</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Alla leverantörer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Any" xml:space="preserve">
- <source>Any</source>
- <target state="translated">Valfri</target>
- <note/>
- </trans-unit>
- <trans-unit id="App logs" xml:space="preserve">
- <source>App logs</source>
- <target state="needs-translation">App logs</target>
- <note/>
- </trans-unit>
- <trans-unit id="AppStore receipt is not found on disk." xml:space="preserve">
- <source>AppStore receipt is not found on disk.</source>
- <target state="needs-translation">AppStore receipt is not found on disk.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Are you sure you want to log %@ out?" xml:space="preserve">
- <source>Are you sure you want to log %@ out?</source>
- <target state="needs-translation">Are you sure you want to log %@ out?</target>
- <note/>
- </trans-unit>
- <trans-unit id="At least one method needs to be enabled." xml:space="preserve">
- <source>At least one method needs to be enabled.</source>
- <target state="translated">Minst en metod måste vara aktiverad.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Attention: this setting cannot be used in combination with **“%@“**." xml:space="preserve">
- <source>Attention: this setting cannot be used in combination with **“%@“**.</source>
- <target state="needs-translation">Attention: this setting cannot be used in combination with **“%@“**.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Attention: toggling “Local network sharing” requires restarting the VPN connection." xml:space="preserve">
- <source>Attention: toggling “Local network sharing” requires restarting the VPN connection.</source>
- <target state="needs-translation">Attention: toggling “Local network sharing” requires restarting the VPN connection.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Authentication" xml:space="preserve">
- <source>Authentication</source>
- <target state="translated">Autentisering</target>
- <note/>
- </trans-unit>
- <trans-unit id="Automatic" xml:space="preserve">
- <source>Automatic</source>
- <target state="translated">Automatisk</target>
- <note/>
- </trans-unit>
- <trans-unit id="BLOCKING INTERNET" xml:space="preserve">
- <source>BLOCKING INTERNET</source>
- <target state="translated">BLOCKERAR INTERNET</target>
- <note/>
- </trans-unit>
- <trans-unit id="Blocked connection" xml:space="preserve">
- <source>Blocked connection</source>
- <target state="needs-translation">Blocked connection</target>
- <note/>
- </trans-unit>
- <trans-unit id="Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN." xml:space="preserve">
- <source>Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN.</source>
- <target state="needs-translation">Blocking internet: Your time on this account has expired. To continue using the internet, please add more time or disconnect the VPN.</target>
- <note/>
- </trans-unit>
- <trans-unit id="By enabling “%@” you will have to manually select a server that is %@-enabled. %@ won't automatically be used to enable DAITA with any server." xml:space="preserve">
- <source>By enabling “%1$@” you will have to manually select a server that is %2$@-enabled. %3$@ won't automatically be used to enable DAITA with any server.</source>
- <target state="needs-translation">By enabling “%1$@” you will have to manually select a server that is %2$@-enabled. %3$@ won't automatically be used to enable DAITA with any server.</target>
- <note/>
- </trans-unit>
- <trans-unit id="By using sophisticated AI it’s possible to analyze the traffic of data packets going in and out of your device (even if the traffic is encrypted)." xml:space="preserve">
- <source>By using sophisticated AI it’s possible to analyze the traffic of data packets going in and out of your device (even if the traffic is encrypted).</source>
- <target state="translated">Med sofistikerad AI är det möjligt att analysera trafiken för datapaket som går in och ut från din enhet (även om trafiken är krypterad).</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cancel" xml:space="preserve">
- <source>Cancel</source>
- <target state="translated">Avbryt</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot complete the purchase" xml:space="preserve">
- <source>Cannot complete the purchase</source>
- <target state="needs-translation">Cannot complete the purchase</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot read the AppStore receipt from disk" xml:space="preserve">
- <source>Cannot read the AppStore receipt from disk</source>
- <target state="needs-translation">Cannot read the AppStore receipt from disk</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot refresh the AppStore receipt: %@" xml:space="preserve">
- <source>Cannot refresh the AppStore receipt: %@</source>
- <target state="needs-translation">Cannot refresh the AppStore receipt: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot restore purchases" xml:space="preserve">
- <source>Cannot restore purchases</source>
- <target state="needs-translation">Cannot restore purchases</target>
- <note/>
- </trans-unit>
- <trans-unit id="Checking account number" xml:space="preserve">
- <source>Checking account number</source>
- <target state="translated">Kontrollerar kontonummer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cipher" xml:space="preserve">
- <source>Cipher</source>
- <target state="translated">Chiffrering</target>
- <note/>
- </trans-unit>
- <trans-unit id="Clear" xml:space="preserve">
- <source>Clear</source>
- <target state="translated">Rensa</target>
- <note/>
- </trans-unit>
- <trans-unit id="Clear all overrides" xml:space="preserve">
- <source>Clear all overrides</source>
- <target state="translated">Rensa alla åsidosättningar</target>
- <note/>
- </trans-unit>
- <trans-unit id="Clear all overrides?" xml:space="preserve">
- <source>Clear all overrides?</source>
- <target state="translated">Rensa alla åsidosättningar?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Clearing the imported overrides changes the server IPs, in the Select location view, back to default." xml:space="preserve">
- <source>Clearing the imported overrides changes the server IPs, in the Select location view, back to default.</source>
- <target state="translated">Om du rensar de importerade åsidosättningarna ändras servrarnas IP:adresser tillbaka till standard i Välj platsvy.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Client is not allowed to issue the request." xml:space="preserve">
- <source>Client is not allowed to issue the request.</source>
- <target state="needs-translation">Client is not allowed to issue the request.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Collapse %@" xml:space="preserve">
- <source>Collapse %@</source>
- <target state="needs-translation">Collapse %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Collapses this location." xml:space="preserve">
- <source>Collapses this location.</source>
- <target state="needs-translation">Collapses this location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Congrats!" xml:space="preserve">
- <source>Congrats!</source>
- <target state="translated">Grattis!</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connect" xml:space="preserve">
- <source>Connect</source>
- <target state="translated">Anslut</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connected" xml:space="preserve">
- <source>Connected</source>
- <target state="translated">Ansluten</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connected to %@, %@" xml:space="preserve">
- <source>Connected to %1$@, %2$@</source>
- <target state="needs-translation">Connected to %1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connecting to %@, %@" xml:space="preserve">
- <source>Connecting to %1$@, %2$@</source>
- <target state="needs-translation">Connecting to %1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connecting..." xml:space="preserve">
- <source>Connecting...</source>
- <target state="translated">Ansluter ...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Connection details" xml:space="preserve">
- <source>Connection details</source>
- <target state="translated">Anslutningsinformation</target>
- <note/>
- </trans-unit>
- <trans-unit id="Continue with login" xml:space="preserve">
- <source>Continue with login</source>
- <target state="translated">Fortsätt med inloggning</target>
- <note/>
- </trans-unit>
- <trans-unit id="Copied Mullvad account number to pasteboard" xml:space="preserve">
- <source>Copied Mullvad account number to pasteboard</source>
- <target state="needs-translation">Copied Mullvad account number to pasteboard</target>
- <note/>
- </trans-unit>
- <trans-unit id="Correct account number" xml:space="preserve">
- <source>Correct account number</source>
- <target state="needs-translation">Correct account number</target>
- <note/>
- </trans-unit>
- <trans-unit id="Create" xml:space="preserve">
- <source>Create</source>
- <target state="translated">Skapa</target>
- <note/>
- </trans-unit>
- <trans-unit id="Create account" xml:space="preserve">
- <source>Create account</source>
- <target state="translated">Skapa konto</target>
- <note/>
- </trans-unit>
- <trans-unit id="Create new account" xml:space="preserve">
- <source>Create new account</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Skapa nytt konto</target>
- <note/>
- </trans-unit>
- <trans-unit id="Created: %@" xml:space="preserve">
- <source>Created: %@</source>
- <target state="needs-translation">Created: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Creating new account" xml:space="preserve">
- <source>Creating new account</source>
- <target state="needs-translation">Creating new account</target>
- <note/>
- </trans-unit>
- <trans-unit id="Current device" xml:space="preserve">
- <source>Current device</source>
- <target state="translated">Aktuell enhet</target>
- <note/>
- </trans-unit>
- <trans-unit id="Custom" xml:space="preserve">
- <source>Custom</source>
- <target state="translated">Anpassad</target>
- <note/>
- </trans-unit>
- <trans-unit id="Custom DNS" xml:space="preserve">
- <source>Custom DNS</source>
- <target state="translated">Anpassad DNS</target>
- <note/>
- </trans-unit>
- <trans-unit id="Custom lists" xml:space="preserve">
- <source>Custom lists</source>
- <target state="translated">Anpassade listor</target>
- <note/>
- </trans-unit>
- <trans-unit id="DAITA" xml:space="preserve">
- <source>DAITA</source>
- <target state="needs-translation">DAITA</target>
- <note/>
- </trans-unit>
- <trans-unit id="DAITA isn't available at the currently selected location. After enabling, please go to the &quot;Select location&quot; view and select a location that supports DAITA." xml:space="preserve">
- <source>DAITA isn't available at the currently selected location. After enabling, please go to the "Select location" view and select a location that supports DAITA.</source>
- <target state="needs-translation">DAITA isn't available at the currently selected location. After enabling, please go to the "Select location" view and select a location that supports DAITA.</target>
- <note/>
- </trans-unit>
- <trans-unit id="DAITA isn't available on the current entry server. After enabling, please go to the &quot;Select location&quot; view and select an entry location that supports DAITA." xml:space="preserve">
- <source>DAITA isn't available on the current entry server. After enabling, please go to the "Select location" view and select an entry location that supports DAITA.</source>
- <target state="needs-translation">DAITA isn't available on the current entry server. After enabling, please go to the "Select location" view and select an entry location that supports DAITA.</target>
- <note/>
- </trans-unit>
- <trans-unit id="DAITA-enabled" xml:space="preserve">
- <source>DAITA-enabled</source>
- <target state="needs-translation">DAITA-enabled</target>
- <note/>
- </trans-unit>
- <trans-unit id="DNS content blockers" xml:space="preserve">
- <source>DNS content blockers</source>
- <target state="translated">DNS-innehållsblockerare</target>
- <note/>
- </trans-unit>
- <trans-unit id="DNS settings" xml:space="preserve">
- <source>DNS settings</source>
- <target state="needs-translation">DNS settings</target>
- <note/>
- </trans-unit>
- <trans-unit id="Defense against AI-guided Traffic Analysis" xml:space="preserve">
- <source>Defense against AI-guided Traffic Analysis</source>
- <target state="needs-translation">Defense against AI-guided Traffic Analysis</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete" xml:space="preserve">
- <source>Delete</source>
- <target state="translated">Ta bort</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete %@?" xml:space="preserve">
- <source>Delete %@?</source>
- <target state="needs-translation">Delete %@?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete account" xml:space="preserve">
- <source>Delete account</source>
- <target state="needs-translation">Delete account</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete list" xml:space="preserve">
- <source>Delete list</source>
- <target state="translated">Ta bort lista</target>
- <note/>
- </trans-unit>
- <trans-unit id="Delete method" xml:space="preserve">
- <source>Delete method</source>
- <target state="translated">Radera metod</target>
- <note/>
- </trans-unit>
- <trans-unit id="Deleting account..." xml:space="preserve">
- <source>Deleting account...</source>
- <target state="needs-translation">Deleting account...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Device is inactive" xml:space="preserve">
- <source>Device is inactive</source>
- <target state="translated">Enheten är inaktiv</target>
- <note/>
- </trans-unit>
- <trans-unit id="Device name" xml:space="preserve">
- <source>Device name</source>
- <target state="translated">Enhetens namn</target>
- <note/>
- </trans-unit>
- <trans-unit id="Device name: %@" xml:space="preserve">
- <source>Device name: %@</source>
- <target state="needs-translation">Device name: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Direct only" xml:space="preserve">
- <source>Direct only</source>
- <target state="translated">Endast direkt</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disable all &quot;%@&quot; above to activate this setting." xml:space="preserve">
- <source>Disable all "%@" above to activate this setting.</source>
- <target state="translated">Inaktivera alla "%@" ovan för att aktivera inställningen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disabled" xml:space="preserve">
- <source>Disabled</source>
- <target state="needs-translation">Disabled</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disabling" xml:space="preserve">
- <source>Disabling</source>
- <target state="needs-translation">Disabling</target>
- <note/>
- </trans-unit>
- <trans-unit id="Discard changes" xml:space="preserve">
- <source>Discard changes</source>
- <target state="translated">Ignorera ändringarna</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disconnect" xml:space="preserve">
- <source>Disconnect</source>
- <target state="translated">Koppla från</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disconnected" xml:space="preserve">
- <source>Disconnected</source>
- <target state="translated">Frånkopplad</target>
- <note/>
- </trans-unit>
- <trans-unit id="Disconnecting..." xml:space="preserve">
- <source>Disconnecting...</source>
- <target state="translated">Kopplar från ...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Do you agree to remaining anonymous?" xml:space="preserve">
- <source>Do you agree to remaining anonymous?</source>
- <target state="needs-translation">Do you agree to remaining anonymous?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Do you want to create a new account?" xml:space="preserve">
- <source>Do you want to create a new account?</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Vill du skapa ett nytt konto?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Do you want to delete the list **%@**?" xml:space="preserve">
- <source>Do you want to delete the list **%@**?</source>
- <target state="needs-translation">Do you want to delete the list **%@**?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Done" xml:space="preserve">
- <source>Done</source>
- <target state="needs-translation">Done</target>
- <note/>
- </trans-unit>
- <trans-unit id="Don’t have an account number?" xml:space="preserve">
- <source>Don’t have an account number?</source>
- <target state="translated">Har du inget kontonummer?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit custom list" xml:space="preserve">
- <source>Edit custom list</source>
- <target state="needs-translation">Edit custom list</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit lists" xml:space="preserve">
- <source>Edit lists</source>
- <target state="translated">Redigera listor</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit locations" xml:space="preserve">
- <source>Edit locations</source>
- <target state="translated">Redigera platser</target>
- <note/>
- </trans-unit>
- <trans-unit id="Edit message" xml:space="preserve">
- <source>Edit message</source>
- <target state="translated">Redigera meddelande</target>
- <note/>
- </trans-unit>
- <trans-unit id="Either buy credit on our website or make an in-app purchase via the **Add time** button below." xml:space="preserve">
- <source>Either buy credit on our website or make an in-app purchase via the **Add time** button below.</source>
- <target state="needs-translation">Either buy credit on our website or make an in-app purchase via the **Add time** button below.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Either buy credit on our website or redeem a voucher." xml:space="preserve">
- <source>Either buy credit on our website or redeem a voucher.</source>
- <target state="translated">Du kan antingen köpa kredit på vår webbplats eller lösa in en kupong.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enable" xml:space="preserve">
- <source>Enable</source>
- <target state="translated">Aktivera</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enable &quot;%@&quot;" xml:space="preserve">
- <source>Enable "%@"</source>
- <target state="needs-translation">Enable "%@"</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enable method" xml:space="preserve">
- <source>Enable method</source>
- <target state="translated">Aktivera metod</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enabling" xml:space="preserve">
- <source>Enabling</source>
- <target state="needs-translation">Enabling</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enter IP" xml:space="preserve">
- <source>Enter IP</source>
- <target state="translated">Ange IP</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enter voucher code" xml:space="preserve">
- <source>Enter voucher code</source>
- <target state="translated">Ange kupongkod</target>
- <note/>
- </trans-unit>
- <trans-unit id="Enter your account number" xml:space="preserve">
- <source>Enter your account number</source>
- <target state="translated">Ange ditt kontonummer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Entry" xml:space="preserve">
- <source>Entry</source>
- <target state="translated">Ingång</target>
- <note/>
- </trans-unit>
- <trans-unit id="Exit" xml:space="preserve">
- <source>Exit</source>
- <target state="translated">Utgång</target>
- <note/>
- </trans-unit>
- <trans-unit id="Expand %@" xml:space="preserve">
- <source>Expand %@</source>
- <target state="needs-translation">Expand %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Expands this location." xml:space="preserve">
- <source>Expands this location.</source>
- <target state="needs-translation">Expands this location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="FAQs &amp; Guides" xml:space="preserve">
- <source>FAQs &amp; Guides</source>
- <target state="needs-translation">FAQs &amp; Guides</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to load products, please try again" xml:space="preserve">
- <source>Failed to load products, please try again</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Det gick inte att läsa in produkterna, försök igen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to send" xml:space="preserve">
- <source>Failed to send</source>
- <target state="translated">Det gick inte att skicka</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to send the receipt to server: %@" xml:space="preserve">
- <source>Failed to send the receipt to server: %@</source>
- <target state="needs-translation">Failed to send the receipt to server: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to start the tunnel." xml:space="preserve">
- <source>Failed to start the tunnel.</source>
- <target state="needs-translation">Failed to start the tunnel.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to start the tunnel: %@." xml:space="preserve">
- <source>Failed to start the tunnel: %@.</source>
- <target state="needs-translation">Failed to start the tunnel: %@.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to stop the tunnel." xml:space="preserve">
- <source>Failed to stop the tunnel.</source>
- <target state="needs-translation">Failed to stop the tunnel.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to stop the tunnel: %@." xml:space="preserve">
- <source>Failed to stop the tunnel: %@.</source>
- <target state="needs-translation">Failed to stop the tunnel: %@.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Failed to validate account number: %@" xml:space="preserve">
- <source>Failed to validate account number: %@</source>
- <target state="needs-translation">Failed to validate account number: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Fetching devices..." xml:space="preserve">
- <source>Fetching devices...</source>
- <target state="needs-translation">Fetching devices...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Filter" xml:space="preserve">
- <source>Filter</source>
- <target state="translated">Filtrera</target>
- <note/>
- </trans-unit>
- <trans-unit id="Filtered:" xml:space="preserve">
- <source>Filtered:</source>
- <target state="translated">Filtrerat:</target>
- <note/>
- </trans-unit>
- <trans-unit id="Gambling" xml:space="preserve">
- <source>Gambling</source>
- <target state="translated">Hasardspel</target>
- <note/>
- </trans-unit>
- <trans-unit id="Go ahead and start using the app to begin reclaiming your online privacy." xml:space="preserve">
- <source>Go ahead and start using the app to begin reclaiming your online privacy.</source>
- <target state="translated">Sätt igång och börja använda appen för att ta tillbaka din onlinesekretess.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Go to login" xml:space="preserve">
- <source>Go to login</source>
- <target state="translated">Gå till inloggning</target>
- <note/>
- </trans-unit>
- <trans-unit id="Going to login will unblock the Internet on this device." xml:space="preserve">
- <source>Going to login will unblock the Internet on this device.</source>
- <target state="translated">Om du loggar in avblockeras internet på den här enheten.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Got it!" xml:space="preserve">
- <source>Got it!</source>
- <target state="translated">Jag förstår!</target>
- <note/>
- </trans-unit>
- <trans-unit id="Here’s your account number. Save it!" xml:space="preserve">
- <source>Here’s your account number. Save it!</source>
- <target state="translated">Här är ditt kontonummer. Spara det!</target>
- <note/>
- </trans-unit>
- <trans-unit id="Hide account number" xml:space="preserve">
- <source>Hide account number</source>
- <target state="translated">Dölj kontonummer</target>
- <note/>
- </trans-unit>
- <trans-unit id="If an observer monitors these data packets, %@ makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating." xml:space="preserve">
- <source>If an observer monitors these data packets, %@ makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating.</source>
- <target state="translated">Om dessa datapaket övervakas av en observatör, gör %@ det svårare för dem att identifiera vilka webbplatser du besöker eller vem du kommunicerar med.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If needed we will contact you at %@" xml:space="preserve">
- <source>If needed we will contact you at %@</source>
- <target state="translated">Om det behövs kontaktar vi dig på %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you are having issues connecting to VPN servers, please contact support." xml:space="preserve">
- <source>If you are having issues connecting to VPN servers, please contact support.</source>
- <target state="translated">Kontakta supporten om du har problem med att ansluta till VPN-servrar.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare." xml:space="preserve">
- <source>If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare.</source>
- <target state="needs-translation">If you are not connected to our VPN, then the Encrypted DNS proxy will use your own non-VPN IP when connecting. The DoH servers are hosted by one of the following providers: Quad9 or Cloudflare.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you disconnect now, you won’t be able to secure your connection until the device is online." xml:space="preserve">
- <source>If you disconnect now, you won’t be able to secure your connection until the device is online.</source>
- <target state="needs-translation">If you disconnect now, you won’t be able to secure your connection until the device is online.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you exit the form and try again later, the information you already entered will still be here." xml:space="preserve">
- <source>If you exit the form and try again later, the information you already entered will still be here.</source>
- <target state="translated">Om du lämnar formuläret och försöker igen senare kommer informationen du anger att finnas kvar.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you haven’t received additional VPN time after purchasing" xml:space="preserve">
- <source>If you haven’t received additional VPN time after purchasing</source>
- <target state="needs-translation">If you haven’t received additional VPN time after purchasing</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you log out, the device and the device name is removed. When you log back in again, the device will get a new name." xml:space="preserve">
- <source>If you log out, the device and the device name is removed. When you log back in again, the device will get a new name.</source>
- <target state="translated">Om du loggar ut tas enheten och enhetsnamnet bort. När du loggar in igen får enheten ett nytt namn.</target>
- <note/>
- </trans-unit>
- <trans-unit id="If you still experience issues you can email our support directly at **%@**. Please attach your app log to your email." xml:space="preserve">
- <source>If you still experience issues you can email our support directly at **%@**. Please attach your app log to your email.</source>
- <target state="needs-translation">If you still experience issues you can email our support directly at **%@**. Please attach your app log to your email.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import" xml:space="preserve">
- <source>Import</source>
- <target state="translated">Importera</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import file" xml:space="preserve">
- <source>Import file</source>
- <target state="translated">Importera fil</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import files or text with new IP addresses for the servers in the Select location view." xml:space="preserve">
- <source>Import files or text with new IP addresses for the servers in the Select location view.</source>
- <target state="translated">Importera filer eller text med nya IP-adresser för servrarna i Välj platsvy.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import of %@ was successful, overrides are now active." xml:space="preserve">
- <source>Import of %@ was successful, overrides are now active.</source>
- <target state="needs-translation">Import of %@ was successful, overrides are now active.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import of %@ was unsuccessful, please try again." xml:space="preserve">
- <source>Import of %@ was unsuccessful, please try again.</source>
- <target state="needs-translation">Import of %@ was unsuccessful, please try again.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import successful" xml:space="preserve">
- <source>Import successful</source>
- <target state="needs-translation">Import successful</target>
- <note/>
- </trans-unit>
- <trans-unit id="Import via text" xml:space="preserve">
- <source>Import via text</source>
- <target state="translated">Importera via text</target>
- <note/>
- </trans-unit>
- <trans-unit id="In" xml:space="preserve">
- <source>In</source>
- <target state="needs-translation">In</target>
- <note/>
- </trans-unit>
- <trans-unit id="In use" xml:space="preserve">
- <source>In use</source>
- <target state="translated">Används</target>
- <note/>
- </trans-unit>
- <trans-unit id="Include all networks" xml:space="preserve">
- <source>Include all networks</source>
- <target state="needs-translation">Include all networks</target>
- <note/>
- </trans-unit>
- <trans-unit id="Internal error occurred. Settings will be reset to defaults and device logged out." xml:space="preserve">
- <source>Internal error occurred. Settings will be reset to defaults and device logged out.</source>
- <target state="needs-translation">Internal error occurred. Settings will be reset to defaults and device logged out.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Internal error." xml:space="preserve">
- <source>Internal error.</source>
- <target state="needs-translation">Internal error.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Invalid account number" xml:space="preserve">
- <source>Invalid account number</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Ogiltigt kontonummer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Invalid device state." xml:space="preserve">
- <source>Invalid device state.</source>
- <target state="needs-translation">Invalid device state.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Invalid purchase identifier." xml:space="preserve">
- <source>Invalid purchase identifier.</source>
- <target state="needs-translation">Invalid purchase identifier.</target>
- <note/>
- </trans-unit>
- <trans-unit id="It does this by performing an extra key exchange using a quantum safe algorithm and mixing the result into WireGuard’s regular encryption. This extra step uses approximately 500 kiB of traffic every time a new tunnel is established." xml:space="preserve">
- <source>It does this by performing an extra key exchange using a quantum safe algorithm and mixing the result into WireGuard’s regular encryption. This extra step uses approximately 500 kiB of traffic every time a new tunnel is established.</source>
- <target state="translated">Den gör det genom att göra ett extra nyckelutbyte med en kvantsäker algoritm och kombinera resultatet med WireGuards vanliga kryptering. Det här extra steget använder ungefär 500 KiB i trafik varje gång en ny tunnel upprättas.</target>
- <note/>
- </trans-unit>
- <trans-unit id="It looks like you’ve entered an account number instead of a voucher code. If you would like to change the active account, please log out first." xml:space="preserve">
- <source>It looks like you’ve entered an account number instead of a voucher code. If you would like to change the active account, please log out first.</source>
- <target state="translated">Det verkar som om du angett ett kontonummer istället för en kupongkod. Logga först ut om du vill ändra den aktiva koden.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Language" xml:space="preserve">
- <source>Language</source>
- <target state="translated">Språk</target>
- <note/>
- </trans-unit>
- <trans-unit id="Last four digits of the account number are incorrect" xml:space="preserve">
- <source>Last four digits of the account number are incorrect</source>
- <target state="needs-translation">Last four digits of the account number are incorrect</target>
- <note/>
- </trans-unit>
- <trans-unit id="Last used account" xml:space="preserve">
- <source>Last used account</source>
- <target state="needs-translation">Last used account</target>
- <note/>
- </trans-unit>
- <trans-unit id="Learn about privacy" xml:space="preserve">
- <source>Learn about privacy</source>
- <target state="translated">Läs mer om sekretess</target>
- <note/>
- </trans-unit>
- <trans-unit id="Less than a day" xml:space="preserve">
- <source>Less than a day</source>
- <target state="needs-translation">Less than a day</target>
- <note/>
- </trans-unit>
- <trans-unit id="Local network sharing" xml:space="preserve">
- <source>Local network sharing</source>
- <target state="translated">Lokal nätverksdelning</target>
- <note/>
- </trans-unit>
- <trans-unit id="Log in" xml:space="preserve">
- <source>Log in</source>
- <target state="needs-translation">Log in</target>
- <note/>
- </trans-unit>
- <trans-unit id="Log out" xml:space="preserve">
- <source>Log out</source>
- <target state="translated">Logga ut</target>
- <note/>
- </trans-unit>
- <trans-unit id="Logged in" xml:space="preserve">
- <source>Logged in</source>
- <target state="translated">Inloggad</target>
- <note/>
- </trans-unit>
- <trans-unit id="Logging in..." xml:space="preserve">
- <source>Logging in...</source>
- <target state="translated">Loggar in...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Logging out..." xml:space="preserve">
- <source>Logging out...</source>
- <target state="needs-translation">Logging out...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Login" xml:space="preserve">
- <source>Login</source>
- <target state="translated">Logga in</target>
- <note/>
- </trans-unit>
- <trans-unit id="Login failed" xml:space="preserve">
- <source>Login failed</source>
- <target state="translated">Inloggningen misslyckades</target>
- <note/>
- </trans-unit>
- <trans-unit id="Make a purchase with StoreKit2" xml:space="preserve">
- <source>Make a purchase with StoreKit2</source>
- <target state="needs-translation">Make a purchase with StoreKit2</target>
- <note/>
- </trans-unit>
- <trans-unit id="Malware" xml:space="preserve">
- <source>Malware</source>
- <target state="translated">Skadlig kod</target>
- <note/>
- </trans-unit>
- <trans-unit id="Manage and add custom methods to access the Mullvad API." xml:space="preserve">
- <source>Manage and add custom methods to access the Mullvad API.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Hantera och lägg till anpassade metoder för att komma åt Mullvad API.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Manage devices" xml:space="preserve">
- <source>Manage devices</source>
- <target state="translated">Hantera enheter</target>
- <note/>
- </trans-unit>
- <trans-unit id="Method settings" xml:space="preserve">
- <source>Method settings</source>
- <target state="needs-translation">Method settings</target>
- <note/>
- </trans-unit>
- <trans-unit id="Multihop" xml:space="preserve">
- <source>Multihop</source>
- <target state="translated">Multihopp</target>
- <note/>
- </trans-unit>
- <trans-unit id="Multihop is being used to enable DAITA for your selected location." xml:space="preserve">
- <source>Multihop is being used to enable DAITA for your selected location.</source>
- <target state="needs-translation">Multihop is being used to enable DAITA for your selected location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Multihop routes your traffic into one WireGuard server and out another, making it harder to trace. This results in increased latency but increases anonymity online." xml:space="preserve">
- <source>Multihop routes your traffic into one WireGuard server and out another, making it harder to trace. This results in increased latency but increases anonymity online.</source>
- <target state="translated">Multihopp dirigerar din trafik till en WireGuard-server och ut genom en annan, vilket gör det svårare att spåra. Detta leder till ökad fördröjning men bättre anonymitet online.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Multiple validation errors occurred." xml:space="preserve">
- <source>Multiple validation errors occurred.</source>
- <target state="needs-translation">Multiple validation errors occurred.</target>
- <note/>
- </trans-unit>
- <trans-unit id="NETWORK ISSUES" xml:space="preserve">
- <source>NETWORK ISSUES</source>
- <target state="needs-translation">NETWORK ISSUES</target>
- <note/>
- </trans-unit>
- <trans-unit id="NEW DEVICE CREATED" xml:space="preserve">
- <source>NEW DEVICE CREATED</source>
- <target state="translated">NY ENHET HAR SKAPATS</target>
- <note/>
- </trans-unit>
- <trans-unit id="NEW VERSION INSTALLED" xml:space="preserve">
- <source>NEW VERSION INSTALLED</source>
- <target state="translated">NY VERSION INSTALLERAD</target>
- <note/>
- </trans-unit>
- <trans-unit id="Name" xml:space="preserve">
- <source>Name</source>
- <target state="translated">Namn</target>
- <note/>
- </trans-unit>
- <trans-unit id="Name is already taken." xml:space="preserve">
- <source>Name is already taken.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Namnet används redan.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Name should be no longer than %i characters." xml:space="preserve">
- <source>Name should be no longer than %i characters.</source>
- <target state="needs-translation">Name should be no longer than %i characters.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Network error: %@" xml:space="preserve">
- <source>Network error: %@</source>
- <target state="needs-translation">Network error: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="New custom list" xml:space="preserve">
- <source>New custom list</source>
- <target state="needs-translation">New custom list</target>
- <note/>
- </trans-unit>
- <trans-unit id="Next" xml:space="preserve">
- <source>Next</source>
- <target state="translated">Nästa</target>
- <note/>
- </trans-unit>
- <trans-unit id="No DAITA compatible servers match your location settings. Try changing location." xml:space="preserve">
- <source>No DAITA compatible servers match your location settings. Try changing location.</source>
- <target state="needs-translation">No DAITA compatible servers match your location settings. Try changing location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="No matching relays found, check your filter settings." xml:space="preserve">
- <source>No matching relays found, check your filter settings.</source>
- <target state="needs-translation">No matching relays found, check your filter settings.</target>
- <note/>
- </trans-unit>
- <trans-unit id="No matching servers" xml:space="preserve">
- <source>No matching servers</source>
- <target state="needs-translation">No matching servers</target>
- <note/>
- </trans-unit>
- <trans-unit id="No network" xml:space="preserve">
- <source>No network</source>
- <target state="needs-translation">No network</target>
- <note/>
- </trans-unit>
- <trans-unit id="No overrides imported" xml:space="preserve">
- <source>No overrides imported</source>
- <target state="needs-translation">No overrides imported</target>
- <note/>
- </trans-unit>
- <trans-unit id="No servers match your location filter. Try changing filter settings." xml:space="preserve">
- <source>No servers match your location filter. Try changing filter settings.</source>
- <target state="needs-translation">No servers match your location filter. Try changing filter settings.</target>
- <note/>
- </trans-unit>
- <trans-unit id="No servers match your obfuscation settings. Try changing location or obfuscation method." xml:space="preserve">
- <source>No servers match your obfuscation settings. Try changing location or obfuscation method.</source>
- <target state="needs-translation">No servers match your obfuscation settings. Try changing location or obfuscation method.</target>
- <note/>
- </trans-unit>
- <trans-unit id="No servers match your settings, try changing server or other settings." xml:space="preserve">
- <source>No servers match your settings, try changing server or other settings.</source>
- <target state="translated">Inga servrar matchar dina inställningar. Försök att byta server eller ändra inställningarna.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Not all our servers are %@-enabled. Therefore, we use multihop automatically to enable %@ with any server." xml:space="preserve">
- <source>Not all our servers are %1$@-enabled. Therefore, we use multihop automatically to enable %2$@ with any server.</source>
- <target state="translated">Det är inte alla våra servrar som är %1$@-aktiverade. Därför använder vi multihopp automatiskt för att aktivera %2$@ med alla servrar.</target>
- <note/>
- </trans-unit>
- <trans-unit id="OUT OF TIME" xml:space="preserve">
- <source>OUT OF TIME</source>
- <target state="translated">INGEN TID KVAR</target>
- <note/>
- </trans-unit>
- <trans-unit id="Obfuscation" xml:space="preserve">
- <source>Obfuscation</source>
- <target state="translated">Obfuskering</target>
- <note/>
- </trans-unit>
- <trans-unit id="Obfuscation hides the WireGuard traffic inside another protocol. It can be used to help circumvent censorship and other types of filtering, where a plain WireGuard connection would be blocked." xml:space="preserve">
- <source>Obfuscation hides the WireGuard traffic inside another protocol. It can be used to help circumvent censorship and other types of filtering, where a plain WireGuard connection would be blocked.</source>
- <target state="translated">Obfuskering döljer WireGuard-trafik inne i ett annat protokoll. Det kan användas för att kringgå censur och andra filtertyper där en vanlig WireGuard-anslutning skulle blockeras.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Obscured" xml:space="preserve">
- <source>Obscured</source>
- <target state="needs-translation">Obscured</target>
- <note/>
- </trans-unit>
- <trans-unit id="Off" xml:space="preserve">
- <source>Off</source>
- <target state="translated">Av</target>
- <note/>
- </trans-unit>
- <trans-unit id="On" xml:space="preserve">
- <source>On</source>
- <target state="translated">På</target>
- <note/>
- </trans-unit>
- <trans-unit id="On some networks, where various types of censorship are being used, our server IP addresses are sometimes blocked." xml:space="preserve">
- <source>On some networks, where various types of censorship are being used, our server IP addresses are sometimes blocked.</source>
- <target state="translated">På vissa nätverk där olika typer av censureringar används blockeras blir ibland vår servers IP-adresser blockerade.</target>
- <note/>
- </trans-unit>
- <trans-unit id="On some networks, where various types of censorship are being used, the API servers might not be directly reachable." xml:space="preserve">
- <source>On some networks, where various types of censorship are being used, the API servers might not be directly reachable.</source>
- <target state="translated">Det kanske inte går att nå API-servrarna direkt på nätverk som använder olika censureringstyper.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Open %@ settings" xml:space="preserve">
- <source>Open %@ settings</source>
- <target state="needs-translation">Open %@ settings</target>
- <note/>
- </trans-unit>
- <trans-unit id="Optional" xml:space="preserve">
- <source>Optional</source>
- <target state="translated">Valfritt</target>
- <note/>
- </trans-unit>
- <trans-unit id="Out IPv4" xml:space="preserve">
- <source>Out IPv4</source>
- <target state="needs-translation">Out IPv4</target>
- <note/>
- </trans-unit>
- <trans-unit id="Out IPv6" xml:space="preserve">
- <source>Out IPv6</source>
- <target state="needs-translation">Out IPv6</target>
- <note/>
- </trans-unit>
- <trans-unit id="Out of time" xml:space="preserve">
- <source>Out of time</source>
- <target state="translated">Ingen tid kvar</target>
- <note/>
- </trans-unit>
- <trans-unit id="Overrides active" xml:space="preserve">
- <source>Overrides active</source>
- <target state="translated">Åsidosättningar aktiva</target>
- <note/>
- </trans-unit>
- <trans-unit id="Owned" xml:space="preserve">
- <source>Owned</source>
- <target state="translated">Ägd</target>
- <note/>
- </trans-unit>
- <trans-unit id="Ownership" xml:space="preserve">
- <source>Ownership</source>
- <target state="translated">Ägarskap</target>
- <note/>
- </trans-unit>
- <trans-unit id="Paid until" xml:space="preserve">
- <source>Paid until</source>
- <target state="translated">Betalat till</target>
- <note/>
- </trans-unit>
- <trans-unit id="Password" xml:space="preserve">
- <source>Password</source>
- <target state="translated">Lösenord</target>
- <note/>
- </trans-unit>
- <trans-unit id="Performs a connection test to a Mullvad API server via this access method." xml:space="preserve">
- <source>Performs a connection test to a Mullvad API server via this access method.</source>
- <target state="needs-translation">Performs a connection test to a Mullvad API server via this access method.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Please enter a valid IPv4 or IPv6 address." xml:space="preserve">
- <source>Please enter a valid IPv4 or IPv6 address.</source>
- <target state="translated">Ange en giltig IPv4- eller IPv6-adress.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Please enter a valid port." xml:space="preserve">
- <source>Please enter a valid port.</source>
- <target state="needs-translation">Please enter a valid port.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Please log out of at least one by removing it from the list below. You can find the corresponding device name under the device’s Account settings." xml:space="preserve">
- <source>Please log out of at least one by removing it from the list below. You can find the corresponding device name under the device’s Account settings.</source>
- <target state="translated">Logga ut på minst en enhet genom att ta bort den från listan nedan. Du hittar motsvarande enhetsnamn i enhetens kontoinställningar.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Please retry by using the &quot;Restore purchases&quot; button." xml:space="preserve">
- <source>Please retry by using the "Restore purchases" button.</source>
- <target state="needs-translation">Please retry by using the "Restore purchases" button.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Port" xml:space="preserve">
- <source>Port</source>
- <target state="needs-translation">Port</target>
- <note/>
- </trans-unit>
- <trans-unit id="Port: %@" xml:space="preserve">
- <source>Port: %@</source>
- <target state="needs-translation">Port: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Previous" xml:space="preserve">
- <source>Previous</source>
- <target state="needs-translation">Previous</target>
- <note/>
- </trans-unit>
- <trans-unit id="Providers" xml:space="preserve">
- <source>Providers</source>
- <target state="translated">Leverantörer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Providers: %d" xml:space="preserve">
- <source>Providers: %d</source>
- <target state="needs-translation">Providers: %d</target>
- <note/>
- </trans-unit>
- <trans-unit id="QUIC" xml:space="preserve">
- <source>QUIC</source>
- <target state="needs-translation">QUIC</target>
- <note/>
- </trans-unit>
- <trans-unit id="Quantum resistance" xml:space="preserve">
- <source>Quantum resistance</source>
- <target state="translated">Kvantresistens</target>
- <note/>
- </trans-unit>
- <trans-unit id="Quantum-resistant tunnel" xml:space="preserve">
- <source>Quantum-resistant tunnel</source>
- <target state="translated">Kvantresistent tunnel</target>
- <note/>
- </trans-unit>
- <trans-unit id="Reconnecting" xml:space="preserve">
- <source>Reconnecting</source>
- <target state="translated">Återansluter</target>
- <note/>
- </trans-unit>
- <trans-unit id="Reconnecting to %@, %@" xml:space="preserve">
- <source>Reconnecting to %1$@, %2$@</source>
- <target state="needs-translation">Reconnecting to %1$@, %2$@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Redeem" xml:space="preserve">
- <source>Redeem</source>
- <target state="translated">Lös in</target>
- <note/>
- </trans-unit>
- <trans-unit id="Redeem voucher" xml:space="preserve">
- <source>Redeem voucher</source>
- <target state="translated">Lös in kupong</target>
- <note/>
- </trans-unit>
- <trans-unit id="Refund last purchase with StoreKit2" xml:space="preserve">
- <source>Refund last purchase with StoreKit2</source>
- <target state="needs-translation">Refund last purchase with StoreKit2</target>
- <note/>
- </trans-unit>
- <trans-unit id="Refund successful" xml:space="preserve">
- <source>Refund successful</source>
- <target state="needs-translation">Refund successful</target>
- <note/>
- </trans-unit>
- <trans-unit id="Remove" xml:space="preserve">
- <source>Remove</source>
- <target state="translated">Ta bort</target>
- <note/>
- </trans-unit>
- <trans-unit id="Remove %@?" xml:space="preserve">
- <source>Remove %@?</source>
- <target state="translated">Ta bort %@?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Remove last used account" xml:space="preserve">
- <source>Remove last used account</source>
- <target state="needs-translation">Remove last used account</target>
- <note/>
- </trans-unit>
- <trans-unit id="Removing the saved account number from this device cannot be undone.&#10;Do you want to remove the saved account number?" xml:space="preserve">
- <source>Removing the saved account number from this device cannot be undone.
-Do you want to remove the saved account number?</source>
- <target state="needs-translation">Removing the saved account number from this device cannot be undone.
-Do you want to remove the saved account number?</target>
- <note/>
- </trans-unit>
- <trans-unit id="Rented" xml:space="preserve">
- <source>Rented</source>
- <target state="translated">Hyrd</target>
- <note/>
- </trans-unit>
- <trans-unit id="Report a problem" xml:space="preserve">
- <source>Report a problem</source>
- <target state="translated">Rapportera ett problem</target>
- <note/>
- </trans-unit>
- <trans-unit id="Required" xml:space="preserve">
- <source>Required</source>
- <target state="translated">Obligatoriskt</target>
- <note/>
- </trans-unit>
- <trans-unit id="Restore purchases" xml:space="preserve">
- <source>Restore purchases</source>
- <target state="needs-translation">Restore purchases</target>
- <note/>
- </trans-unit>
- <trans-unit id="Save" xml:space="preserve">
- <source>Save</source>
- <target state="translated">Spara</target>
- <note/>
- </trans-unit>
- <trans-unit id="Saving changes..." xml:space="preserve">
- <source>Saving changes...</source>
- <target state="needs-translation">Saving changes...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Search for..." xml:space="preserve">
- <source>Search for...</source>
- <target state="translated">Sök efter …</target>
- <note/>
- </trans-unit>
- <trans-unit id="Select location" xml:space="preserve">
- <source>Select location</source>
- <target state="translated">Välj plats</target>
- <note/>
- </trans-unit>
- <trans-unit id="Selected" xml:space="preserve">
- <source>Selected</source>
- <target state="needs-translation">Selected</target>
- <note/>
- </trans-unit>
- <trans-unit id="Send" xml:space="preserve">
- <source>Send</source>
- <target state="translated">Skicka</target>
- <note/>
- </trans-unit>
- <trans-unit id="Send anyway" xml:space="preserve">
- <source>Send anyway</source>
- <target state="translated">Skicka ändå</target>
- <note/>
- </trans-unit>
- <trans-unit id="Sending..." xml:space="preserve">
- <source>Sending...</source>
- <target state="translated">Skicka...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Sent" xml:space="preserve">
- <source>Sent</source>
- <target state="translated">Skickat</target>
- <note/>
- </trans-unit>
- <trans-unit id="Server" xml:space="preserve">
- <source>Server</source>
- <target state="needs-translation">Server</target>
- <note/>
- </trans-unit>
- <trans-unit id="Server IP override" xml:space="preserve">
- <source>Server IP override</source>
- <target state="translated">Åsidosättning av serverns IP-adress</target>
- <note/>
- </trans-unit>
- <trans-unit id="Server details" xml:space="preserve">
- <source>Server details</source>
- <target state="translated">Serverinformation</target>
- <note/>
- </trans-unit>
- <trans-unit id="Setting: %@" xml:space="preserve">
- <source>Setting: %@</source>
- <target state="needs-translation">Setting: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="Settings" xml:space="preserve">
- <source>Settings</source>
- <target state="translated">Inställningar</target>
- <note/>
- </trans-unit>
- <trans-unit id="Settings migration error" xml:space="preserve">
- <source>Settings migration error</source>
- <target state="needs-translation">Settings migration error</target>
- <note/>
- </trans-unit>
- <trans-unit id="Shadowsocks" xml:space="preserve">
- <source>Shadowsocks</source>
- <target state="needs-translation">Shadowsocks</target>
- <note/>
- </trans-unit>
- <trans-unit id="Show account number" xml:space="preserve">
- <source>Show account number</source>
- <target state="translated">Visa kontonummer</target>
- <note/>
- </trans-unit>
- <trans-unit id="Social media" xml:space="preserve">
- <source>Social media</source>
- <target state="translated">Sociala medier</target>
- <note/>
- </trans-unit>
- <trans-unit id="Socks5" xml:space="preserve">
- <source>Socks5</source>
- <target state="needs-translation">Socks5</target>
- <note/>
- </trans-unit>
- <trans-unit id="Start using the app" xml:space="preserve">
- <source>Start using the app</source>
- <target state="translated">Börja använda appen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Super!" xml:space="preserve">
- <source>Super!</source>
- <target state="needs-translation">Super!</target>
- <note/>
- </trans-unit>
- <trans-unit id="Switch location" xml:space="preserve">
- <source>Switch location</source>
- <target state="translated">Växla plats</target>
- <note/>
- </trans-unit>
- <trans-unit id="TCP" xml:space="preserve">
- <source>TCP</source>
- <target state="needs-translation">TCP</target>
- <note/>
- </trans-unit>
- <trans-unit id="TUNNEL ERROR" xml:space="preserve">
- <source>TUNNEL ERROR</source>
- <target state="needs-translation">TUNNEL ERROR</target>
- <note/>
- </trans-unit>
- <trans-unit id="Tap **Edit** to add at least one DNS server." xml:space="preserve">
- <source>Tap **Edit** to add at least one DNS server.</source>
- <target state="needs-translation">Tap **Edit** to add at least one DNS server.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Test method" xml:space="preserve">
- <source>Test method</source>
- <target state="translated">Testmetod</target>
- <note/>
- </trans-unit>
- <trans-unit id="Testing..." xml:space="preserve">
- <source>Testing...</source>
- <target state="translated">Testar ...</target>
- <note/>
- </trans-unit>
- <trans-unit id="Thanks for your purchase" xml:space="preserve">
- <source>Thanks for your purchase</source>
- <target state="needs-translation">Thanks for your purchase</target>
- <note/>
- </trans-unit>
- <trans-unit id="Thanks!" xml:space="preserve">
- <source>Thanks!</source>
- <target state="translated">Tack!</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app communicates with a Mullvad API server directly." xml:space="preserve">
- <source>The app communicates with a Mullvad API server directly.</source>
- <target state="needs-translation">The app communicates with a Mullvad API server directly.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app communicates with a Mullvad API server via a Mullvad bridge server." xml:space="preserve">
- <source>The app communicates with a Mullvad API server via a Mullvad bridge server.</source>
- <target state="needs-translation">The app communicates with a Mullvad API server via a Mullvad bridge server.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app communicates with a Mullvad API server via a proxy address." xml:space="preserve">
- <source>The app communicates with a Mullvad API server via a proxy address.</source>
- <target state="needs-translation">The app communicates with a Mullvad API server via a proxy address.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app needs to communicate with a Mullvad API server to log you in, fetch server lists, and other critical operations." xml:space="preserve">
- <source>The app needs to communicate with a Mullvad API server to log you in, fetch server lists, and other critical operations.</source>
- <target state="translated">Appen måste kommunicera med en Mullvad API-server för att logga in dig, hämta serverlistor och andra viktiga åtgärder.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The app will test the method before saving." xml:space="preserve">
- <source>The app will test the method before saving.</source>
- <target state="needs-translation">The app will test the method before saving.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The automatic setting will randomly choose from the valid port ranges shown below." xml:space="preserve">
- <source>The automatic setting will randomly choose from the valid port ranges shown below.</source>
- <target state="translated">Den automatiska inställningen väljer slumpmässigt från giltiga portintervall som visas nedan.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The custom port can be any value inside the valid ranges: %@." xml:space="preserve">
- <source>The custom port can be any value inside the valid ranges: %@.</source>
- <target state="translated">Den anpassade porten kan vara ett värde inom de giltiga intervallen: %@.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The device will be removed from the list and logged out." xml:space="preserve">
- <source>The device will be removed from the list and logged out.</source>
- <target state="translated">Enheten kommer att tas bort från listan och loggas ut.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The entry and exit servers cannot be the same. Try changing one to a new server or location." xml:space="preserve">
- <source>The entry and exit servers cannot be the same. Try changing one to a new server or location.</source>
- <target state="needs-translation">The entry and exit servers cannot be the same. Try changing one to a new server or location.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The entry server for %@ is currently overridden by %@. To select an entry server, please first enable “%@” or disable “%@“ in the settings." xml:space="preserve">
- <source>The entry server for %1$@ is currently overridden by %2$@. To select an entry server, please first enable “%3$@” or disable “%4$@“ in the settings.</source>
- <target state="needs-translation">The entry server for %1$@ is currently overridden by %2$@. To select an entry server, please first enable “%3$@” or disable “%4$@“ in the settings.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The payment request was cancelled." xml:space="preserve">
- <source>The payment request was cancelled.</source>
- <target state="needs-translation">The payment request was cancelled.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The selected WireGuard port is not supported, please change it under **VPN settings**." xml:space="preserve">
- <source>The selected WireGuard port is not supported, please change it under **VPN settings**.</source>
- <target state="needs-translation">The selected WireGuard port is not supported, please change it under **VPN settings**.</target>
- <note/>
- </trans-unit>
- <trans-unit id="The version of settings stored on device is unrecognized.Settings will be reset to defaults and the device will be logged out." xml:space="preserve">
- <source>The version of settings stored on device is unrecognized.Settings will be reset to defaults and the device will be logged out.</source>
- <target state="needs-translation">The version of settings stored on device is unrecognized.Settings will be reset to defaults and the device will be logged out.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This can be useful if the API is censored but Mullvad’s bridge servers are not." xml:space="preserve">
- <source>This can be useful if the API is censored but Mullvad’s bridge servers are not.</source>
- <target state="translated">Detta kan vara användbart om API:n är censurerad men Mullvads broservrar inte är det.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This can be useful when you are not affected by censorship." xml:space="preserve">
- <source>This can be useful when you are not affected by censorship.</source>
- <target state="translated">Detta kan vara användbart när du inte påverkas av censurering.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This device is not allowed to make the payment." xml:space="preserve">
- <source>This device is not allowed to make the payment.</source>
- <target state="needs-translation">This device is not allowed to make the payment.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc." xml:space="preserve">
- <source>This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc.</source>
- <target state="translated">Funktionen tillåter åtkomst till andra enheter på det lokala nätverket, t.ex. för att dela, skriva ut, streama osv.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This feature allows you to circumvent that censorship by adding custom ways to access the API via proxies and similar methods." xml:space="preserve">
- <source>This feature allows you to circumvent that censorship by adding custom ways to access the API via proxies and similar methods.</source>
- <target state="translated">Men den här funktionen kan du kringgå censureringen genom att lägga till anpassade sätt att komma åt API:n via proxyservrar och liknande metoder.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers." xml:space="preserve">
- <source>This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers.</source>
- <target state="translated">Den här funktionen gör WireGuard-tunneln resistent mot potentiella attacker från kvantdatorer.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This is the name assigned to the device. Each device logged in on a Mullvad account gets a unique name that helps you identify it when you manage your devices in the app or on the website." xml:space="preserve">
- <source>This is the name assigned to the device. Each device logged in on a Mullvad account gets a unique name that helps you identify it when you manage your devices in the app or on the website.</source>
- <target state="translated">Det här är namnet som tilldelas enheten. Varje enhet som är inloggad på ett Mullvad-konto får ett unikt namn som hjälper dig att identifiera den när du hanterar dina enheter i appen eller på webbplatsen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This logs out all devices using this account and all VPN access will be denied even if there is time left on the account. Enter the last 4 digits of the account number and hit &quot;Delete account&quot; if you really want to delete the account:" xml:space="preserve">
- <source>This logs out all devices using this account and all VPN access will be denied even if there is time left on the account. Enter the last 4 digits of the account number and hit "Delete account" if you really want to delete the account:</source>
- <target state="needs-translation">This logs out all devices using this account and all VPN access will be denied even if there is time left on the account. Enter the last 4 digits of the account number and hit "Delete account" if you really want to delete the account:</target>
- <note/>
- </trans-unit>
- <trans-unit id="This might cause issues on certain websites, services, and apps." xml:space="preserve">
- <source>This might cause issues on certain websites, services, and apps.</source>
- <target state="translated">Detta kan orsaka problem på vissa webbplatser, tjänster och appar.</target>
- <note/>
- </trans-unit>
- <trans-unit id="This voucher code has already been used." xml:space="preserve">
- <source>This voucher code has already been used.</source>
- <target state="needs-translation">This voucher code has already been used.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Time left: %@" xml:space="preserve">
- <source>Time left: %@</source>
- <target state="needs-translation">Time left: %@</target>
- <note/>
- </trans-unit>
- <trans-unit id="To add more, you will need to disconnect and access the Internet with an unsecure connection." xml:space="preserve">
- <source>To add more, you will need to disconnect and access the Internet with an unsecure connection.</source>
- <target state="translated">Om du vill lägga till mer måste du koppla från och öppna internet med en oskyddad anslutning.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To assist you better, please write in English or Swedish and include which country you are connecting from." xml:space="preserve">
- <source>To assist you better, please write in English or Swedish and include which country you are connecting from.</source>
- <target state="translated">Skriv på engelska eller svenska och ange från vilket land du är ansluten så att vi kan hjälpa dig bättre.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To circumvent this you can import a file or a text, provided by our support team, with new IP addresses that override the default addresses of the servers in the Select location view." xml:space="preserve">
- <source>To circumvent this you can import a file or a text, provided by our support team, with new IP addresses that override the default addresses of the servers in the Select location view.</source>
- <target state="translated">För att kringgå detta kan du importera en fil eller text, som tillhandahålls av vårt supportteam, med nya IP-adresser som åsidosätter servrarnas standardadresser i Välj platsvy.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools." xml:space="preserve">
- <source>To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools.</source>
- <target state="translated">Om du vill fortsätta din resa som sekretessninja kan du gå till vår webbplats för att lära dig sekretessvänliga vanor och verktyg.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To create a custom list, tap on &quot;...&quot; " xml:space="preserve">
- <source>To create a custom list, tap on "..." </source>
- <target state="needs-translation">To create a custom list, tap on "..." </target>
- <note/>
- </trans-unit>
- <trans-unit id="To enable this setting, add at least one server." xml:space="preserve">
- <source>To enable this setting, add at least one server.</source>
- <target state="needs-translation">To enable this setting, add at least one server.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To help you more effectively, your app’s log file will be attached to this message. Your data will remain secure and private, as it is anonymised before being sent over an encrypted channel." xml:space="preserve">
- <source>To help you more effectively, your app’s log file will be attached to this message. Your data will remain secure and private, as it is anonymised before being sent over an encrypted channel.</source>
- <target state="translated">För att hjälpa dig mer effektivt kommer appens loggfil att bifogas i detta meddelande. Dina uppgifter förblir säkra och privata, eftersom de anonymiseras innan de skickas över en krypterad kanal.</target>
- <note/>
- </trans-unit>
- <trans-unit id="To start using the app, you first need to add time to your account." xml:space="preserve">
- <source>To start using the app, you first need to add time to your account.</source>
- <target state="translated">Om du vill börja använda appen måste du först lägga till tid i ditt konto.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Too many devices" xml:space="preserve">
- <source>Too many devices</source>
- <target state="translated">För många enheter</target>
- <note/>
- </trans-unit>
- <trans-unit id="Trackers" xml:space="preserve">
- <source>Trackers</source>
- <target state="translated">Spårare</target>
- <note/>
- </trans-unit>
- <trans-unit id="Try again" xml:space="preserve">
- <source>Try again</source>
- <target state="translated">Försök igen</target>
- <note/>
- </trans-unit>
- <trans-unit id="Tunnel is unset." xml:space="preserve">
- <source>Tunnel is unset.</source>
- <target state="needs-translation">Tunnel is unset.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Type" xml:space="preserve">
- <source>Type</source>
- <target state="translated">Typ</target>
- <note/>
- </trans-unit>
- <trans-unit id="UDP" xml:space="preserve">
- <source>UDP</source>
- <target state="needs-translation">UDP</target>
- <note/>
- </trans-unit>
- <trans-unit id="UDP-over-TCP" xml:space="preserve">
- <source>UDP-over-TCP</source>
- <target state="translated">UDP över TCP</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unable to authenticate account. Please log out and log back in." xml:space="preserve">
- <source>Unable to authenticate account. Please log out and log back in.</source>
- <target state="needs-translation">Unable to authenticate account. Please log out and log back in.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unable to start tunnel connection after update. Please disconnect and reconnect." xml:space="preserve">
- <source>Unable to start tunnel connection after update. Please disconnect and reconnect.</source>
- <target state="needs-translation">Unable to start tunnel connection after update. Please disconnect and reconnect.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unable to start tunnel connection. Please send a problem report." xml:space="preserve">
- <source>Unable to start tunnel connection. Please send a problem report.</source>
- <target state="translated">Det går inte att starta tunnelanslutning. Skicka en problemrapport.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unexpected server response: %1$@ (HTTP status: %2$d)" xml:space="preserve">
- <source>Unexpected server response: %1$@ (HTTP status: %2$d)</source>
- <target state="needs-translation">Unexpected server response: %1$@ (HTTP status: %2$d)</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unexpected server response: %d" xml:space="preserve">
- <source>Unexpected server response: %d</source>
- <target state="needs-translation">Unexpected server response: %d</target>
- <note/>
- </trans-unit>
- <trans-unit id="Unknown error." xml:space="preserve">
- <source>Unknown error.</source>
- <target state="translated">Okänt fel.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Use custom DNS server" xml:space="preserve">
- <source>Use custom DNS server</source>
- <target state="translated">Använd anpassad DNS-server</target>
- <note/>
- </trans-unit>
- <trans-unit id="Username" xml:space="preserve">
- <source>Username</source>
- <target state="translated">Användarnamn</target>
- <note/>
- </trans-unit>
- <trans-unit id="VPN settings" xml:space="preserve">
- <source>VPN settings</source>
- <target state="translated">VPN-inställningar</target>
- <note/>
- </trans-unit>
- <trans-unit id="Valid range: %d - %d" xml:space="preserve">
- <source>Valid range: %1$d - %2$d</source>
- <target state="translated">Giltigt intervall: %1$d–%2$d</target>
- <note/>
- </trans-unit>
- <trans-unit id="Verifying voucher..." xml:space="preserve">
- <source>Verifying voucher...</source>
- <target state="translated">Verifierar kupong ...</target>
- <note/>
- </trans-unit>
- <trans-unit id="View and manage all your logged in devices. You can have up to 5 devices on one account at a time. Each device gets a name when logged in to help you tell them apart easily." xml:space="preserve">
- <source>View and manage all your logged in devices. You can have up to 5 devices on one account at a time. Each device gets a name when logged in to help you tell them apart easily.</source>
- <target state="translated">Visa och hantera alla dina inloggade enheter. Du kan ha upp till fem enheter åt gången på ett konto. Varje enhet får ett namn när den loggas in så att du enklare kan skilja dem åt.</target>
- <note/>
- </trans-unit>
- <trans-unit id="View app logs" xml:space="preserve">
- <source>View app logs</source>
- <target state="translated">Visa appens loggar</target>
- <note/>
- </trans-unit>
- <trans-unit id="Voucher code is invalid." xml:space="preserve">
- <source>Voucher code is invalid.</source>
- <target state="translated">Kupongkoden är ogiltig.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Voucher was successfully redeemed." xml:space="preserve">
- <source>Voucher was successfully redeemed.</source>
- <target state="translated">Kupongen har lösts in.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Warning: The malware blocker is not an anti-virus and should not be treated as such, this is just an extra layer of protection." xml:space="preserve">
- <source>Warning: The malware blocker is not an anti-virus and should not be treated as such, this is just an extra layer of protection.</source>
- <target state="translated">Varning! Blockering av skadlig kod är inte ett antivirusprogram och bör inte behandlas som ett. Det här är bara ett extra skyddslager.</target>
- <note/>
- </trans-unit>
- <trans-unit id="We are having some issues, please try again later" xml:space="preserve">
- <source>We are having some issues, please try again later</source>
- <target state="needs-translation">We are having some issues, please try again later</target>
- <note/>
- </trans-unit>
- <trans-unit id="We will look into this." xml:space="preserve">
- <source>We will look into this.</source>
- <target state="translated">Vi kommer att undersöka detta.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Welcome, this device is now called **%@**. For more details see the info button in Account." xml:space="preserve">
- <source>Welcome, this device is now called **%@**. For more details see the info button in Account.</source>
- <target state="needs-translation">Welcome, this device is now called **%@**. For more details see the info button in Account.</target>
- <note/>
- </trans-unit>
- <trans-unit id="What’s new" xml:space="preserve">
- <source>What’s new</source>
- <target state="translated">Vad är nytt</target>
- <note/>
- </trans-unit>
- <trans-unit id="When this feature is enabled it stops the device from contacting certain domains or websites known for distributing ads, malware, trackers and more." xml:space="preserve">
- <source>When this feature is enabled it stops the device from contacting certain domains or websites known for distributing ads, malware, trackers and more.</source>
- <target state="translated">När den här funktionen är aktiverad stoppas enheten från att kontakta vissa domäner eller webbplatser som är kända för att sprida annonser, skadlig kod, spårare med mera.</target>
- <note/>
- </trans-unit>
- <trans-unit id="When using DAITA, one provider with DAITA-enabled servers is required." xml:space="preserve">
- <source>When using DAITA, one provider with DAITA-enabled servers is required.</source>
- <target state="needs-translation">When using DAITA, one provider with DAITA-enabled servers is required.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Which TCP port the UDP-over-TCP obfuscation protocol should connect to on the VPN server." xml:space="preserve">
- <source>Which TCP port the UDP-over-TCP obfuscation protocol should connect to on the VPN server.</source>
- <target state="translated">Vilken TCP-port som UDP-över-TCP-obfuskeringsprotokoll bör ansluta till på VPN-servern.</target>
- <note/>
- </trans-unit>
- <trans-unit id="WireGuard obfuscation" xml:space="preserve">
- <source>WireGuard obfuscation</source>
- <target state="translated">WireGuard-obfuskering</target>
- <note/>
- </trans-unit>
- <trans-unit id="WireGuard port" xml:space="preserve">
- <source>WireGuard port</source>
- <target state="translated">WireGuard-port</target>
- <note/>
- </trans-unit>
- <trans-unit id="With the “Direct” method, the app communicates with a Mullvad API server directly without any intermediate proxies." xml:space="preserve">
- <source>With the “Direct” method, the app communicates with a Mullvad API server directly without any intermediate proxies.</source>
- <target state="translated">Med metoden "Direkt" kommunicerar appen med en Mullvad API-server direkt utan mellanliggande proxyservrar.</target>
- <note/>
- </trans-unit>
- <trans-unit id="With the “Encrypted DNS proxy” method, the app will communicate with our Mullvad API through a proxy address. It does this by retrieving an address from a DNS over HTTPS (DoH) server and then using that to reach our API servers." xml:space="preserve">
- <source>With the “Encrypted DNS proxy” method, the app will communicate with our Mullvad API through a proxy address. It does this by retrieving an address from a DNS over HTTPS (DoH) server and then using that to reach our API servers.</source>
- <target state="translated">Med metoden "Krypterad DNS-proxy" kommunicerar appen med vår Mullvad API via en proxyadress. Den gör det genom att hämta en adress från en DNS over HTTPS-server (DoH) och sedan använda den för att nå våra API-servrar.</target>
- <note/>
- </trans-unit>
- <trans-unit id="With the “Mullvad bridges” method, the app communicates with a Mullvad API server via a Mullvad bridge server. It does this by sending the traffic obfuscated by Shadowsocks." xml:space="preserve">
- <source>With the “Mullvad bridges” method, the app communicates with a Mullvad API server via a Mullvad bridge server. It does this by sending the traffic obfuscated by Shadowsocks.</source>
- <target state="translated">Med metoden "Mullvad-broar" kommunicerar appen med en Mullvad API-server via en Mullvad-broserver. Den gör det genom att skicka trafiken som obfuskeras av Shadowsocks.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Yes, continue" xml:space="preserve">
- <source>Yes, continue</source>
- <target state="needs-translation">Yes, continue</target>
- <note/>
- </trans-unit>
- <trans-unit id="Yes, log out device" xml:space="preserve">
- <source>Yes, log out device</source>
- <target state="translated">Ja, logga ut enheten</target>
- <note/>
- </trans-unit>
- <trans-unit id="You already have a saved account number, by creating a new account the saved account number will be removed from this device. This cannot be undone." xml:space="preserve">
- <source>You already have a saved account number, by creating a new account the saved account number will be removed from this device. This cannot be undone.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">Du har redan ett sparat kontonummer. Om du skapar ett nytt konto tas det sparade kontonumret bort från enheten. Det går inte att ångra detta.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You are about to send the problem report without a way for us to get back to you. If you want an answer to your report you will have to enter an email address." xml:space="preserve">
- <source>You are about to send the problem report without a way for us to get back to you. If you want an answer to your report you will have to enter an email address.</source>
- <target state="translated">Du är på väg att skicka problemrapporten utan att vi har möjlighet att besvara dig. Om du vill ha svar på din rapport måste du ange en e-postadress.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You are logged in with an invalid account number. Please log out and try another one." xml:space="preserve">
- <source>You are logged in with an invalid account number. Please log out and try another one.</source>
- <target state="translated">Du är inloggad med ett ogiltigt kontonummer. Logga ut och försök med ett annat.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You can add more time via the account view or website to continue using the VPN." xml:space="preserve">
- <source>You can add more time via the account view or website to continue using the VPN.</source>
- <target state="needs-translation">You can add more time via the account view or website to continue using the VPN.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You can have up to 5 devices logged in on one Mullvad account." xml:space="preserve">
- <source>You can have up to 5 devices logged in on one Mullvad account.</source>
- <target state="translated">Upp till fem enheter kan vara inloggade på ett Mullvad-konto.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You can now continue logging in on this device." xml:space="preserve">
- <source>You can now continue logging in on this device.</source>
- <target state="translated">Du kan nu fortsätta med att logga in på den här enheten.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You can use the &quot;restore purchases&quot; function to check for any in-app payments made via Apple services. If there is a payment that has not been credited, it will add the time to the currently logged in Mullvad account." xml:space="preserve">
- <source>You can use the "restore purchases" function to check for any in-app payments made via Apple services. If there is a payment that has not been credited, it will add the time to the currently logged in Mullvad account.</source>
- <target state="needs-translation">You can use the "restore purchases" function to check for any in-app payments made via Apple services. If there is a payment that has not been credited, it will add the time to the currently logged in Mullvad account.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have %@ left on this account." xml:space="preserve">
- <source>You have %@ left on this account.</source>
- <target state="needs-translation">You have %@ left on this account.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have a right to privacy. That’s why we never store activity logs, don’t ask for personal information, and encourage anonymous payments.&#10;&#10;In some situations, as outlined in our privacy policy, we might process personal data that you choose to send, for example if you email us.&#10;&#10;We strongly believe in retaining as little data as possible because we want you to remain anonymous." xml:space="preserve">
- <source>You have a right to privacy. That’s why we never store activity logs, don’t ask for personal information, and encourage anonymous payments.
-
-In some situations, as outlined in our privacy policy, we might process personal data that you choose to send, for example if you email us.
-
-We strongly believe in retaining as little data as possible because we want you to remain anonymous.</source>
- <target state="needs-translation">You have a right to privacy. That’s why we never store activity logs, don’t ask for personal information, and encourage anonymous payments.
-
-In some situations, as outlined in our privacy policy, we might process personal data that you choose to send, for example if you email us.
-
-We strongly believe in retaining as little data as possible because we want you to remain anonymous.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have no more VPN time left on this account. " xml:space="preserve">
- <source>You have no more VPN time left on this account. </source>
- <target state="translated">Du har ingen VPN-tid kvar på det här kontot. </target>
- <note/>
- </trans-unit>
- <trans-unit id="You have one day left on this account. Please add more time to continue using the VPN." xml:space="preserve">
- <source>You have one day left on this account. Please add more time to continue using the VPN.</source>
- <target state="needs-translation">You have one day left on this account. Please add more time to continue using the VPN.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have removed this device. To connect again, you will need to log back in." xml:space="preserve">
- <source>You have removed this device. To connect again, you will need to log back in.</source>
- <target state="translated">Du har tagit bort den här enheten. Du måste logga in igen för att återansluta.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You have unsaved changes." xml:space="preserve">
- <source>You have unsaved changes.</source>
- <target state="needs-translation">You have unsaved changes.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your device is offline. The tunnel will automatically connect once your device is back online." xml:space="preserve">
- <source>Your device is offline. The tunnel will automatically connect once your device is back online.</source>
- <target state="translated">Din enhet är offline. Tunneln ansluts automatiskt när din enhet är online igen.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your device is offline. Try connecting again when the device has access to Internet." xml:space="preserve">
- <source>Your device is offline. Try connecting again when the device has access to Internet.</source>
- <target state="needs-translation">Your device is offline. Try connecting again when the device has access to Internet.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your email (optional)" xml:space="preserve">
- <source>Your email (optional)</source>
- <target state="translated">Din e-postadress (valfritt)</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your previous purchases have already been added to this account." xml:space="preserve">
- <source>Your previous purchases have already been added to this account.</source>
- <target state="needs-translation">Your previous purchases have already been added to this account.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your purchase was successfully refunded." xml:space="preserve">
- <source>Your purchase was successfully refunded.</source>
- <target state="needs-translation">Your purchase was successfully refunded.</target>
- <note/>
- </trans-unit>
- <trans-unit id="You’re all set!!" xml:space="preserve">
- <source>You’re all set!!</source>
- <target state="translated">Du är klar!!</target>
- <note/>
- </trans-unit>
- <trans-unit id="file" xml:space="preserve">
- <source>file</source>
- <target state="translated">fil</target>
- <note/>
- </trans-unit>
- <trans-unit id="method" xml:space="preserve">
- <source>method</source>
- <target state="needs-translation">method</target>
- <note/>
- </trans-unit>
- <trans-unit id="multihop" xml:space="preserve">
- <source>multihop</source>
- <target state="translated">multihopp</target>
- <note/>
- </trans-unit>
- <trans-unit id="text" xml:space="preserve">
- <source>text</source>
- <target state="needs-translation">text</target>
- <note/>
- </trans-unit>
- <trans-unit id="value" xml:space="preserve">
- <source>value</source>
- <target state="needs-translation">value</target>
- <note/>
- </trans-unit>
- <trans-unit id="“%@ Local network sharing” requires restarting the VPN connection, which will disconnect you and briefly expose your traffic.&#10;To prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing.&#10;Would you like to continue to enable “Local network sharing”?" xml:space="preserve">
- <source>“%@ Local network sharing” requires restarting the VPN connection, which will disconnect you and briefly expose your traffic.
-To prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing.
-Would you like to continue to enable “Local network sharing”?</source>
- <target state="needs-translation">“%@ Local network sharing” requires restarting the VPN connection, which will disconnect you and briefly expose your traffic.
-To prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing.
-Would you like to continue to enable “Local network sharing”?</target>
- <note/>
- </trans-unit>
- </body>
- </file>
- <file original="Assets/MullvadSettings-InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="Assets/MullvadTypes-InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadLogging-InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadMockData/MullvadMockData-InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadREST/InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadRustRuntime-InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="MullvadVPN/Supporting Files/InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSLocalNetworkUsageDescription" xml:space="preserve">
- <source>The app needs this to connect and test a new method.</source>
- <target state="needs-translation">The app needs this to connect and test a new method.</target>
- <note>Privacy - Local Network Usage Description</note>
- </trans-unit>
- </body>
- </file>
- <file original="Operations/Operations-InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="PacketTunnel/InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- </body>
- </file>
- <file original="PacketTunnel/Localizable.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="%@ was added to your account." xml:space="preserve">
- <source>%@ was added to your account.</source>
- <target state="needs-review-translation" state-qualifier="leveraged-tm">%@ har lagts till i ditt konto.</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot complete the purchase" xml:space="preserve">
- <source>Cannot complete the purchase</source>
- <target state="needs-translation">Cannot complete the purchase</target>
- <note/>
- </trans-unit>
- <trans-unit id="Cannot restore purchases" xml:space="preserve">
- <source>Cannot restore purchases</source>
- <target state="needs-translation">Cannot restore purchases</target>
- <note/>
- </trans-unit>
- <trans-unit id="Restore purchases" xml:space="preserve">
- <source>Restore purchases</source>
- <target state="needs-translation">Restore purchases</target>
- <note/>
- </trans-unit>
- <trans-unit id="Thanks for your purchase" xml:space="preserve">
- <source>Thanks for your purchase</source>
- <target state="needs-translation">Thanks for your purchase</target>
- <note/>
- </trans-unit>
- <trans-unit id="Your previous purchases have already been added to this account." xml:space="preserve">
- <source>Your previous purchases have already been added to this account.</source>
- <target state="needs-translation">Your previous purchases have already been added to this account.</target>
- <note/>
- </trans-unit>
- </body>
- </file>
- <file original="PacketTunnelCore/PacketTunnelCore-InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
- <file original="Routing/Routing-InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext">
- <header>
- <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/>
- </header>
- <body>
- <trans-unit id="NSHumanReadableCopyright" translate="no" xml:space="preserve">
- <source>Copyright © 2025 Mullvad VPN AB. All rights reserved.</source>
- <target state="needs-translation">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target>
- <note>Copyright (human-readable)</note>
- </trans-unit>
- </body>
- </file>
-</xliff>
diff --git a/ios/translation/scripts/Readme.md b/ios/translation/scripts/Readme.md
index 44674d7eff..7350a53354 100644
--- a/ios/translation/scripts/Readme.md
+++ b/ios/translation/scripts/Readme.md
@@ -17,7 +17,7 @@ This folder contains a Bash workflow that:
```
/mullvadvpn-app/ios/translation
├── locales
-│   └── en.xliff
+│ └── en.xliff
└── scripts
├── localizations.sh # Main Bash script
├── build # Ephemeral DerivedData or build scratch dir (ignored)
@@ -26,8 +26,6 @@ This folder contains a Bash workflow that:
```
-> **Important:** Ensure `build/` and `logs/` are ignored by Git (see [Git Ignore](#git-ignore)).
-
---
## Quick Start
@@ -92,6 +90,3 @@ logs/
build_20250723_142915.log
build_20250724_094401.log
```
-
-To prune logs older than 7 days automatically, the script includes an optional cleanup step (disabled by default; enable by setting `PRUNE_LOGS_DAYS`).
-
diff --git a/ios/translation/scripts/localizations.sh b/ios/translation/scripts/localizations.sh
index 76bb1eef2f..40e611bd5a 100755
--- a/ios/translation/scripts/localizations.sh
+++ b/ios/translation/scripts/localizations.sh
@@ -1,16 +1,14 @@
#!/usr/bin/env bash
# localizations.sh
-# Exports Swift/SwiftUI localization files (.xliff) from an Xcode project.
+# Exports strings from and Imports them to an Xcode project.
-#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LOG_DIR="$SCRIPT_DIR/logs"
mkdir -p "$LOG_DIR"
-LOG_FILE="$LOG_DIR/export-localization_$(date +%Y%m%d_%H%M%S).log"
-TMP_LOG="$(mktemp)"
+TMP_LOG="$(mktemp)"
PROJECT_NAME="MullvadVPN"
SCHEME_NAME="$PROJECT_NAME"
XCODE_PROJECT_PATH="$SCRIPT_DIR/../../$PROJECT_NAME.xcodeproj"
@@ -27,54 +25,63 @@ trap 'on_fail' ERR
on_fail() {
set +e
- echo "❌ Export failed. Cleaning up and saving log..."
+ echo "Export failed. Cleaning up and saving log..."
cleanup_build_folder
cleanup_temp_folder
mkdir -p "$(dirname "$LOG_FILE")"
cat "$TMP_LOG" >"$LOG_FILE"
- echo "💥 Full log saved to: $LOG_FILE"
+ echo "Full log saved to: $LOG_FILE"
exit 1
}
cleanup_build_folder() {
- echo "🧹 Cleaning build folder at: $BUILD_OUTPUT_DIR"
rm -rf "$BUILD_OUTPUT_DIR"
}
cleanup_temp_folder() {
- echo "🧹 Cleaning temp folder at: $TMP_EXPORT_DIR"
rm -rf "$TMP_EXPORT_DIR"
}
exec > >(tee "$TMP_LOG") 2>&1
build_project() {
- echo "👉 Building project..."
- xcodebuild \
+ echo "Building project..."
+ if ! xcodebuild \
-project "$XCODE_PROJECT_PATH" \
-scheme "$SCHEME_NAME" \
-destination 'generic/platform=iOS' \
-configuration "$CONFIGURATION" \
-derivedDataPath "$DERIVED_DATA_DIR" \
+ -quiet \
CODE_SIGNING_REQUIRED=NO \
CODE_SIGNING_ALLOWED=NO \
- clean build
- echo "✅ Build succeeded"
+ clean build >"$TMP_LOG" 2>&1; then
+ echo "Failed to build project"
+ on_fail
+ fi
+ echo "Build succeeded"
}
export_localizations() {
- echo "🌍 Exporting localizations for languages: $EXPORT_LANGUAGES"
+ echo "Exporting localizations for languages: $EXPORT_LANGUAGES"
IFS=',' read -r -a LANG_ARRAY <<<"$EXPORT_LANGUAGES"
for lang in "${LANG_ARRAY[@]}"; do
- echo "➡️ Exporting $lang"
- xcodebuild -exportLocalizations \
+ # Run xcodebuild and capture errors
+ if ! xcodebuild -exportLocalizations \
-project "$XCODE_PROJECT_PATH" \
-scheme "$SCHEME_NAME" \
-derivedDataPath "$DERIVED_DATA_DIR" \
-localizationPath "$TMP_EXPORT_DIR" \
- -exportLanguage "$lang"
+ -exportLanguage "$lang" \
+ -quiet \
+ CODE_SIGNING_REQUIRED=NO \
+ CODE_SIGNING_ALLOWED=NO \
+ >"$TMP_LOG" 2>&1; then
+ echo "Failed to export localization for $lang"
+ on_fail
+ fi
local xcloc_dir="${TMP_EXPORT_DIR}/${lang}.xcloc"
@@ -83,13 +90,13 @@ export_localizations() {
xliff_file=$(find "$xcloc_dir" -name '*.xliff' | head -n 1)
if [[ -f "$xliff_file" ]]; then
cp "$xliff_file" "$LOCALIZATION_DIR/${lang}.xliff"
- echo "✔️ Extracted $lang.xliff for Crowdin upload"
+ echo "Extracted $lang.xliff for Crowdin upload"
else
- echo "❌ No .xliff file found in $xcloc_dir"
+ echo "No .xliff file found in $xcloc_dir"
false
fi
else
- echo "❌ .xcloc bundle not found for $lang"
+ echo ".xcloc bundle not found for $lang"
false
fi
done
@@ -98,7 +105,7 @@ export_localizations() {
clean_xliff_translations() {
xliff_dir="$LOCALIZATION_DIR"
if [[ ! -d "$xliff_dir" ]]; then
- echo "❌ Directory not found: $xliff_dir"
+ echo "Directory not found: $xliff_dir"
return 1
fi
@@ -106,18 +113,16 @@ clean_xliff_translations() {
declare -A UNNEEDED_KEYS=(
["CFBundleName"]=1
["CFBundleDisplayName"]=1
+ ["NSHumanReadableCopyright"]=1
# Add more keys here if needed
)
-
- echo "🧹 Cleaning unneeded keys from XLIFFs in $xliff_dir"
for xliff in "$xliff_dir"/*.xliff; do
if [[ -f "$xliff" ]]; then
for key in "${!UNNEEDED_KEYS[@]}"; do
sed -i '' -E "/<trans-unit[^>]*id=\"$key\"[^>]*>/,/<\/trans-unit>/d" "$xliff"
done
- echo "✔️ Cleaned $xliff"
else
- echo "⚠️ File not found: $xliff, skipping"
+ echo "File not found: $xliff, skipping"
fi
done
@@ -131,67 +136,66 @@ import_localizations() {
# Skip if no files found
[ -e "$xliff_file" ] || continue
- # Remove unwanted attributes from the XLIFF file
- # sed -i '' -E 's/ state="needs-review-translation"//g' "$xliff_file"
-
# Extract language code from filename, e.g., fr.xliff → fr
language_code=$(basename "$xliff_file" .xliff)
- echo "📥 Importing localization: $language_code from $xliff_file"
+ echo "Importing localization: $language_code from $xliff_file"
+ # Run xcodebuild and check for errors
if ! xcodebuild -importLocalizations \
-project "$XCODE_PROJECT_PATH" \
-scheme "$SCHEME_NAME" \
-derivedDataPath "$DERIVED_DATA_DIR" \
-localizationPath "$xliff_file" \
-exportLanguage "$language_code" \
- -disableAutomaticPackageResolution; then
- echo "❌ Failed to import $xliff_file"
- exit 1
+ -quiet \
+ CODE_SIGNING_REQUIRED=NO \
+ CODE_SIGNING_ALLOWED=NO \
+ >"$TMP_LOG" 2>&1; then
+ echo "Failed to import $xliff_file"
+ on_fail
fi
done
- echo "✅ All localizations imported successfully."
+ echo "All localizations imported successfully."
}
localization_to_export() {
- echo "📝 Export script started at: $(date)"
+ LOG_FILE="$LOG_DIR/export-localization_$(date +%Y%m%d_%H%M%S).log"
build_project
export_localizations
clean_xliff_translations
cleanup_build_folder
cleanup_temp_folder
- echo "🎉 Export complete. Crowdin-ready .xliff files are in: $LOCALIZATION_DIR"
- echo "✅ Script finished at: $(date)"
+ echo "Export complete. Crowdin-ready .xliff files are in: $LOCALIZATION_DIR"
rm -f "$TMP_LOG"
}
localization_to_import() {
- echo "📝 Import script started at: $(date)"
+ LOG_FILE="$LOG_DIR/import-localization_$(date +%Y%m%d_%H%M%S).log"
build_project
import_localizations
cleanup_build_folder
cleanup_temp_folder
- echo "🎉 Import complete. Localized .xliff files have been imported to code"
- echo "✅ Script finished at: $(date)"
+ echo "Import complete. Localized .xliff files have been imported to code"
rm -f "$TMP_LOG"
}
# Main entrypoint
main() {
case "${1:-}" in
- export)
- localization_to_export
- ;;
- import)
- localization_to_import
- ;;
- "")
- echo "Available subcommands: export, import"
- ;;
- *)
- echo "❌ Unknown parameter: $1"
- exit 1
- ;;
+ export)
+ localization_to_export
+ ;;
+ import)
+ localization_to_import
+ ;;
+ "")
+ echo "Available subcommands: export, import"
+ ;;
+ *)
+ echo "Unknown parameter: $1"
+ exit 1
+ ;;
esac
}