diff options
| author | Jon Petersson <jon.petersson@mullvad.net> | 2025-09-18 10:00:03 +0200 |
|---|---|---|
| committer | Jon Petersson <jon.petersson@mullvad.net> | 2025-09-18 10:00:03 +0200 |
| commit | d7338f2065ab26686cbae3c99693d4d95800175a (patch) | |
| tree | c06451de02cec820e0e3ddf8098e387f6812f0b8 | |
| parent | b8a3f1bd251188051e1928a455e901d81c6c364a (diff) | |
| parent | 43f726f8261c1e9c00bbe582966c49d6ce281eeb (diff) | |
| download | mullvadvpn-d7338f2065ab26686cbae3c99693d4d95800175a.tar.xz mullvadvpn-d7338f2065ab26686cbae3c99693d4d95800175a.zip | |
Merge branch 'align-strings-across-platforms-ios-1276'
48 files changed, 3797 insertions, 5352 deletions
diff --git a/ios/Assets/Localizable.xcstrings b/ios/Assets/Localizable.xcstrings index ca2823228f..673968eadb 100644 --- a/ios/Assets/Localizable.xcstrings +++ b/ios/Assets/Localizable.xcstrings @@ -2,334 +2,195 @@ "sourceLanguage" : "en", "strings" : { "“%@ Local network sharing” requires restarting the VPN connection, which will disconnect you and briefly expose your traffic.\nTo prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing.\nWould you like to continue to enable “Local network sharing”?" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "“%@ Local Network Sharing” erfordert einen Neustart der VPN-Verbindung, die dich trennt und deinen Traffic kurz offenbart.\nUm dies zu verhindern, aktivieren Sie den Flugmodus manuell und deaktivieren Sie das WLAN, bevor Sie fortfahren.\nMöchten Sie weiterhin \"Lokales Netzwerkteilen\" aktivieren?" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Le « Partage de réseau local%@ » nécessite de redémarrer la connexion VPN, ce qui vous déconnectera et exposera brièvement votre trafic.\nPour éviter cela, activez manuellement le mode avion et éteignez le Wi-Fi avant de continuer.\nVoulez-vous continuer à activer le « Partage de réseau local»?" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "“%@ Lokalt nätverksdelning” kräver att VPN-anslutningen startas om, vilket kopplar bort dig och kortfattat exponerar din trafik.\nFör att förhindra detta, aktivera flygplansläge manuellt och stäng av Wi-Fi innan du fortsätter.\nVill du fortsätta att aktivera “Lokalt nätverk delning”?" - } - } - } + }, - "**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.**\n\nDAITA (Defense against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic.\n\nBy 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)." : { + "**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 Geschwindigkeit, Latenz und Akkuverbrauch aus. Verwende mit Vorsicht auf begrenzte Tarife. *\n\nDAITA (Verteidigung gegen AI-geführte Verkehrsanalyse) versteckt Muster in deinem verschlüsselten VPN-Verkehr.\n\nDurch die Verwendung einer ausgefeilten KI ist es möglich, den Datenverkehr von Datenpaketen zu analysieren, die auf Ihrem Gerät ein- und auslaufen (selbst wenn der Datenverkehr verschlüsselt ist)." + "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 : Ceci augmente le trafic réseau et affectera également la vitesse, la latence et l'utilisation de la batterie. À utiliser avec prudence sur des plans limités. *\n\nDAITA (Défense contre l'analyse du trafic guidée par AI) masque les patrons dans votre trafic VPN chiffré.\n\nEn utilisant une IA sophistiquée, il est possible d'analyser le trafic des paquets de données entrants et sortants de votre appareil (même si le trafic est chiffré)." + "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" : "**Uppmärksamhet: Detta ökar nätverkstrafiken och kommer också att påverka hastighet, latens och batterianvändning. Använd med försiktighet på begränsade planer. *\n\nDAITA (Försvar mot AI-styrda Trafikanalys) döljer mönster i din krypterade VPN-trafik.\n\nGenom att använda sofistikerad AI är det möjligt att analysera trafiken av datapaket som går in och ut från din enhet (även om trafiken är krypterad)." + "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." : { + "**Tap here** to see what’s new" : { + + }, + "%@" : { + + }, + "%@ (%@) hides patterns in your encrypted VPN traffic." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "**Tippe hier** um zu sehen, was neu ist." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "**Tapotez ici** pour voir les nouveautés." + "value" : "%1$@ (%2$@) verbirgt Muster in Ihrem verschlüsselten VPN-Traffic." } }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "**Tryck här** för att se vad som är nytt." - } - } - } - }, - "%@" : { - "localizations" : { - "de" : { + "en" : { "stringUnit" : { - "state" : "translated", - "value" : "%@" + "state" : "new", + "value" : "%1$@ (%2$@) hides patterns in your encrypted VPN traffic." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "%@" + "value" : "%1$@ (%2$@) masque les schémas de votre trafic VPN chiffré." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "%@" + "value" : "%1$@ (%2$@) döljer mönster i din krypterade VPN-trafik." } } } }, "%@ cannot be empty." : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ darf nicht leer sein." - } - }, "fr" : { "stringUnit" : { "state" : "translated", "value" : "%@ ne peut pas être vide." } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ kan inte vara tomt." - } } } }, - "%@ have been added to your account" : { + "%@ does this by carefully adding network noise and making all network packets the same size." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "%@ wurde Ihrem Konto hinzugefügt" + "value" : "%@ tut dies, indem es Netzwerkrauschen gezielt hinzufügt und alle Netzwerkpakete gleich groß macht." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "%@ a été ajouté à votre compte" + "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" : "%@ har lagts till på ditt konto" + "value" : "%@ gör det genom att noggrant lägga till nätverksbrus och se till så att alla nätverkspaket har samma storlek." } } } }, + "%@ have been added to your account" : { + + }, "%@ left on this account" : { + + }, + "%@ via %@" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "%@ auf diesem Konto übrig" + "value" : "%1$@ über %2$@" } }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ restant sur ce compte" - } - }, - "sv" : { + "en" : { "stringUnit" : { - "state" : "translated", - "value" : "%@ kvar på detta konto" + "state" : "new", + "value" : "%1$@ via %2$@" } } } }, "%@ were added to your account." : { + + }, + "%@, %@" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ wurden deinem Konto hinzugefügt." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "%@ a été ajouté à votre compte." - } - }, - "sv" : { + "en" : { "stringUnit" : { - "state" : "translated", - "value" : "%@ lades till på ditt konto." + "state" : "new", + "value" : "%1$@, %2$@" } } } }, + "%@: Multihop" : { + + }, "%d more..." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "%d mehr..." + "value" : "%d weitere …" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "%d de plus..." + "value" : "%d de plus…" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "%d mer..." + "value" : "%d till ..." } } } }, - "A custom list with this name exists, please choose a unique name." : { + "%lld more..." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Eine benutzerdefinierte Liste mit diesem Namen existiert bereits, bitte wählen Sie einen eindeutigen Namen." + "value" : "%lld weitere …" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Une liste personnalisée avec ce nom existe, veuillez choisir un nom unique." + "value" : "%lld de plus…" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "En anpassad lista med detta namn finns, välj ett unikt namn." + "value" : "%lld till ..." } } } }, + "A custom list with this name exists, please choose a unique name." : { + + }, "About API access…" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Über API-Zugriff…" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "A propos de l'accès à l'API…" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Om API-åtkomst…" - } - } - } + }, "About Direct method..." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Über Direkte Methode..." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "À propos de la méthode Direct..." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Om Direkt metod..." - } - } - } + }, "About Encrypted DNS proxy method..." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Über Verschlüsselte DNS-Proxy-Methode..." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "À propos de la méthode de proxy DNS chiffré..." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Om krypterad DNS-proxymetod..." - } - } - } + }, "About Mullvad bridges method..." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Über Mullvad Bridges Methode..." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "À propos de la méthode des ponts Mullvad..." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Om Mullvad broar metod..." - } - } - } + }, "About Server IP override..." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Über Server IP überschreiben..." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "À propos du remplacement de l'IP du serveur..." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Om Server IP åsidosätta..." - } - } - } + }, "Account" : { "localizations" : { @@ -342,7 +203,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Compte client" + "value" : "Compte" } }, "sv" : { @@ -370,7 +231,7 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Konto skapat" + "value" : "Kontot har skapats" } } } @@ -386,79 +247,63 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Le crédit du compte expire bientôt" + "value" : "Les crédits du compte expirent bientôt" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Konto kredit upphör snart" + "value" : "Kontokrediten slutar snart gälla" } } } }, "Account credit has expired" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kontoguthaben ist abgelaufen" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Le crédit du compte a expiré" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Konto kredit har löpt ut" - } - } - } + }, "Account deletion" : { + + }, + "Account number" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Konto löschen" + "value" : "Kontonummer" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Suppression du compte" + "value" : "Numéro de compte" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Radering av konto" + "value" : "Kontonummer" } } } }, - "Account number" : { + "Active features" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Kundennummer" + "value" : "Aktive Funktionen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Numéro de compte" + "value" : "Fonctionnalités activées" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Kontonummer" + "value" : "Aktiva funktioner" } } } @@ -468,7 +313,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neu" + "value" : "Hinzufügen" } }, "fr" : { @@ -486,48 +331,10 @@ } }, "Add 30 days" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "30 Tage hinzufügen" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ajouter 30 jours" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Lägg till 30 dagar" - } - } - } + }, "Add 90 days" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "90 Tage hinzufügen" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ajouter 90 jours" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Lägg till 90 dagar" - } - } - } + }, "Add a server" : { "localizations" : { @@ -552,39 +359,20 @@ } }, "Add access method" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Zugriffsmethode hinzufügen" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ajouter une méthode d'accès" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Lägg till accessmetod" - } - } - } + }, "Add locations" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Orte hinzufügen" + "value" : "Standorte hinzufügen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ajouter des emplacements" + "value" : "Ajouter des localisations" } }, "sv" : { @@ -596,39 +384,20 @@ } }, "Add new list" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Neue Liste hinzufügen" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ajouter une nouvelle liste" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Lägg till ny lista" - } - } - } + }, "Add time" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neue Zeit" + "value" : "Zeit hinzufügen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ajouter une heure" + "value" : "Ajouter du temps" } }, "sv" : { @@ -640,39 +409,20 @@ } }, "Add Time" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Neue Zeit" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ajouter une heure" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Lägg till tid" - } - } - } + }, "Ads" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Anzeigen" + "value" : "Werbung" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Annonces" + "value" : "Publicités" } }, "sv" : { @@ -688,45 +438,48 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Erwachseneninhalt" + "value" : "Inhalte für Erwachsene" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Contenu adulte" + "value" : "Contenu pour adultes" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Vuxen innehåll" + "value" : "Vuxet innehåll" } } } }, - "All" : { + "Agree and continue" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Alle" + "value" : "Akzeptieren und weiter" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Tous" + "value" : "Accepter et continuer" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Alla" + "value" : "Godkänn och fortsätt" } } } }, + "All" : { + + }, "All locations" : { "localizations" : { "de" : { @@ -738,7 +491,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Tous les emplacements" + "value" : "Toutes les localisations" } }, "sv" : { @@ -750,39 +503,20 @@ } }, "All Providers" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Alle Anbieter" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tous les fournisseurs" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Alla leverantörer" - } - } - } + }, "Any" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Alle" + "value" : "Beliebige" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "N'importe quel" + "value" : "N'importe lequel" } }, "sv" : { @@ -810,29 +544,7 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "API åtkomst" - } - } - } - }, - "API could not be reached, save anyway?" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "API konnte nicht erreicht werden, trotzdem speichern?" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "L'API n'a pas pu être atteinte, enregistrer quand même ?" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "API kunde inte nås, spara ändå?" + "value" : "API-åtkomst" } } } @@ -848,7 +560,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "API accessible" + "value" : "API joignable" } }, "sv" : { @@ -876,54 +588,41 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "API onåbar" + "value" : "API kan inte nås" } } } }, - "App logs" : { + "API unreachable, save anyway?" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "App-Logs" + "value" : "API nicht erreichbar, dennoch speichern?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Journaux des applications" + "value" : "API injoignable, l'enregistrer quand même ?" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "App loggar" + "value" : "API kan inte nås, spara ändå?" } } } }, + "App logs" : { + + }, "AppStore receipt is not found on disk." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "AppStore Quittung wurde nicht gefunden." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Le reçu de l'AppStore est introuvable sur le disque." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "AppStore-kvitto finns inte på disken." - } - } - } + + }, + "Are you sure you want to log %@ out?" : { + }, "At least one method needs to be enabled." : { "localizations" : { @@ -942,11 +641,17 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Minst en metod måste aktiveras." + "value" : "Minst en metod måste vara aktiverad." } } } }, + "Attention: this setting cannot be used in combination with **“%@“**." : { + + }, + "Attention: toggling “Local network sharing” requires restarting the VPN connection." : { + + }, "Authentication" : { "localizations" : { "de" : { @@ -992,133 +697,64 @@ } }, "Back to editing" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Zurück zur Bearbeitung" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Retour à l'édition" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tillbaka till redigering" - } - } - } + }, "Blocked connection" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Verbindung blockiert" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Connexion bloquée" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Blockerad anslutning" - } - } - } + }, "BLOCKING INTERNET" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "BLOCKING INTERNET" + "value" : "INTERNET SPERREN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "INTERNET DE BLOCKING" + "value" : "BLOCAGE D'INTERNET" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "BLOCKAR INTERNET" + "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." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Internetblockierung: Deine Zeit auf diesem Konto ist abgelaufen. Um das Internet weiter zu nutzen, füge bitte mehr Zeit hinzu oder trenne das VPN." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Blocage d'Internet: Votre temps sur ce compte a expiré. Pour continuer à utiliser Internet, veuillez ajouter plus de temps ou déconnecter le VPN." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Blockera internet: Din tid på detta konto har gått ut. För att fortsätta använda internet, lägg till mer tid eller koppla från VPN." - } - } - } + }, - "By enabling \"Direct only\" you will have to manually select a server that is DAITA-enabled. Multihop won't automatically be used to enable DAITA with any server." : { + "By enabling “%@” you will have to manually select a server that is %@-enabled. %@ won't automatically be used to enable DAITA with any server." : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Wenn Sie \"Nur Direkt\" aktivieren, müssen Sie manuell einen Server auswählen, der DAITA-aktiviert ist. Multihop wird nicht automatisch verwendet, um DAITA mit irgendeinem Server zu aktivieren." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "En activant \"Direct only\", vous devrez sélectionner manuellement un serveur qui est activé par DAITA. Multihop ne sera pas automatiquement utilisé pour activer DAITA avec aucun serveur." - } - }, - "sv" : { + "en" : { "stringUnit" : { - "state" : "translated", - "value" : "Genom att aktivera \"Direct only\" måste du manuellt välja en server som är DAITA-aktiverad. Multihop används inte automatiskt för att aktivera DAITA med någon server." + "state" : "new", + "value" : "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." } } } }, - "By enabling \"Direct only\" you will have to manually select a server that is DAITA-enabled. This can cause you to end up in a blocked state until you have selected a compatible server in the \"Select location\" view." : { + "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" : "Wenn Sie \"Nur Direkt\" aktivieren, müssen Sie manuell einen Server auswählen, der DAITA-aktiviert ist. Dies kann dazu führen, dass Sie in einem blockierten Zustand enden, bis Sie einen kompatiblen Server in der Ansicht \"Standort auswählen\" ausgewählt haben." + "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" : "En activant \"Direct only\", vous devrez sélectionner manuellement un serveur qui est activé par DAITA. Cela peut vous faire tomber dans un état bloqué jusqu'à ce que vous ayez sélectionné un serveur compatible dans la vue « Sélectionner un emplacement »." + "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" : "Genom att aktivera \"Direct only\" måste du manuellt välja en server som är DAITA-aktiverad. Detta kan leda till att du hamnar i ett blockerat tillstånd tills du har valt en kompatibel server i \"Välj plats\"-vyn." + "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)." } } } @@ -1134,7 +770,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Abandonner" + "value" : "Annuler" } }, "sv" : { @@ -1146,105 +782,29 @@ } }, "Cannot complete the purchase" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kauf kann nicht abgeschlossen werden" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible de terminer l'achat" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kan inte slutföra köpet" - } - } - } + }, "Cannot read the AppStore receipt from disk" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kann die AppStore-Quittung nicht lesen" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible de lire la réception de l'AppStore depuis le disque" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kan inte läsa AppStore-kvittot från disk" - } - } - } + }, "Cannot refresh the AppStore receipt: %@" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kann den AppStore Beleg nicht aktualisieren: %@" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible d'actualiser le reçu de l'AppStore : %@" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kan inte uppdatera AppStore-kvitto: %@" - } - } - } + }, "Cannot restore purchases" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Käufe können nicht wiederhergestellt werden" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible de restaurer les achats" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kan inte återställa köp" - } - } - } + }, "Checking account number" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Überprüfe Kontonummer" + "value" : "Ihre Kontonummer wird geprüft" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Numéro de compte de la vérification" + "value" : "Vérification du numéro de compte" } }, "sv" : { @@ -1260,7 +820,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Cipher" + "value" : "Chiffre" } }, "fr" : { @@ -1272,7 +832,7 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Cipher" + "value" : "Chiffrering" } } } @@ -1282,13 +842,13 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Leeren" + "value" : "Löschen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nettoyer" + "value" : "Effacer" } }, "sv" : { @@ -1310,7 +870,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Effacer toutes les surcharges" + "value" : "Effacer toutes les substitutions" } }, "sv" : { @@ -1332,13 +892,13 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Effacer toutes les dérogations ?" + "value" : "Effacer toutes les substitutions ?" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Rensa alla överskridningar?" + "value" : "Rensa alla åsidosättningar?" } } } @@ -1348,85 +908,72 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Das Löschen der importierten Überschreibungen ändert die Server-IPs in der Standortansicht auswählen wieder auf die Standardeinstellung." + "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" : "La suppression des surcharges importées modifie les adresses IP du serveur, dans la vue de l'emplacement de sélection, par défaut." + "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" : "Rensar de importerade åsidosättningarna ändrar serverns IP-adresser, i Välj plats vyn, tillbaka till standard." + "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." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Der Kunde darf die Anfrage nicht ausstellen." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Le client n'est pas autorisé à émettre la requête." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kunden har inte tillåtelse att utfärda begäran." - } - } - } + + }, + "Collapse %@" : { + }, "Collapses this location." : { + + }, + "Congrats!" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Schließt diesen Ort aus." + "value" : "Glückwunsch!" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Réduire cet emplacement." + "value" : "Félicitations !" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Kollapsar denna plats." + "value" : "Grattis!" } } } }, - "Congrats!" : { + "Connect" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Glückwunsch!" + "value" : "Verbinden" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Félicitations !" + "value" : "Connexion" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Grattis!" + "value" : "Anslut" } } } @@ -1453,159 +1000,175 @@ } } }, - "Copy to pasteboard" : { + "Connected to %@, %@" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kopiere in die Einlage" - } - }, - "fr" : { + "en" : { "stringUnit" : { - "state" : "translated", - "value" : "Copier dans le presse-papier" + "state" : "new", + "value" : "Connected to %1$@, %2$@" } - }, - "sv" : { + } + } + }, + "Connecting to %@, %@" : { + "localizations" : { + "en" : { "stringUnit" : { - "state" : "translated", - "value" : "Kopiera till pasteboard" + "state" : "new", + "value" : "Connecting to %1$@, %2$@" } } } }, - "Correct account number" : { + "Connecting..." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Richtige Kontonummer" + "value" : "Verbinden …" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Numéro de compte correct" + "value" : "Connexion..." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Rätt kontonummer" + "value" : "Ansluter ..." } } } }, - "Create" : { + "Connection details" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Anlegen" + "value" : "Verbindungsdetails" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Créer" + "value" : "Détails de la connexion" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Skapa" + "value" : "Anslutningsinformation" } } } }, - "Create account" : { + "Continue with login" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Konto erstellen" + "value" : "Weiter mit Anmeldung" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Créer un compte" + "value" : "Continuer avec la connexion" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Skapa konto" + "value" : "Fortsätt med inloggning" } } } }, - "Create new account" : { + "Copy to pasteboard" : { }, - "Creating new account" : { + "Correct account number" : { + + }, + "Create" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neues Konto erstellen" + "value" : "Erstellen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Création d'un nouveau compte" + "value" : "Créer" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Skapa nytt konto" + "value" : "Skapa" } } } }, - "Creating quantum secure connection" : { + "Create account" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Quantensichere Verbindung erstellen" + "value" : "Konto erstellen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Création de la connexion quantique sécurisée" + "value" : "Créer un compte" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Skapar kvantsäker anslutning" + "value" : "Skapa konto" } } } }, + "Create new account" : { + + }, + "Created: %@" : { + + }, + "Creating new account" : { + + }, + "Creating quantum secure connection" : { + + }, "Creating secure connection" : { + + }, + "Current device" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Sichere Verbindung erstellen" + "value" : "Aktuelles Gerät" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Création d'une connexion sécurisée" + "value" : "Appareil actuel" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Skapar säker anslutning" + "value" : "Aktuell enhet" } } } @@ -1615,7 +1178,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Eigene" + "value" : "Benutzerdefiniert" } }, "fr" : { @@ -1637,7 +1200,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Eigener DNS" + "value" : "Eigenes DNS" } }, "fr" : { @@ -1677,130 +1240,19 @@ } }, "DAITA" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA" - } - } - } - }, - "DAITA (Defence against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. If anyone is monitoring your connection, this makes it significantly harder for them to identify what websites you are visiting.\nIt does this by carefully adding network noise and making all network packets the same size.\nNot all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server.\nAttention: Be cautious if you have a limited data plan as this feature will increase your network traffic." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA (Verteidigung gegen AI-geführte Verkehrsanalyse) versteckt Muster in Ihrem verschlüsselten VPN-Verkehr. Wenn jemand Ihre Verbindung überwacht, erschwert dies es ihnen, deutlich zu erkennen, welche Websites Sie besuchen.\nDies geschieht durch das sorgfältige Hinzufügen von Netzwerkrauschen und die gleiche Größe aller Netzwerkpakete.\nNicht alle unsere Server sind DAITA-fähig. Daher verwenden wir Multihop automatisch, um DAITA mit jedem Server zu aktivieren.\nAchtung: Seien Sie vorsichtig, wenn Sie einen begrenzten Datenplan haben, da diese Funktion Ihren Netzwerkverkehr erhöhen wird." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA (Defence against AI-guided Traffic Analysis) döljer mönster i din krypterade VPN-trafik. Om någon övervakar din anslutning, detta gör det betydligt svårare för dem att identifiera vilka webbplatser du besöker.\nDet gör detta genom att noggrant lägga till nätverksljud och göra alla nätverkspaket till samma storlek.\nAlla våra servrar är inte DAITA-aktiverade. Därför använder vi multihop automatiskt för att aktivera DAITA med alla servrar.\nObservera: Var försiktig om du har en begränsad dataplan eftersom denna funktion kommer att öka din nätverkstrafik." - } - } - } + }, "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." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA ist an der aktuell ausgewählten Stelle nicht verfügbar. Nach der Aktivierung gehen Sie bitte zur Ansicht \"Standort auswählen\" und wählen einen Ort, der DAITA unterstützt." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA n'est pas disponible à l'emplacement actuellement sélectionné. Après l'activation, veuillez aller dans la vue \"Sélectionner un emplacement\" et sélectionner un emplacement qui prend en charge DAITA." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA är inte tillgängligt på den valda platsen för närvarande. Efter aktivering, gå till \"Välj plats\"-vyn och välj en plats som stöder DAITA." - } - } - } + }, "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." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA ist auf dem aktuellen Eintragsserver nicht verfügbar. Nach der Aktivierung gehen Sie bitte in die Ansicht \"Standort auswählen\" und wählen einen Eintragsort aus, der DAITA unterstützt." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA n'est pas disponible sur le serveur d'entrée actuel. Après l'activation, veuillez aller dans la vue \"Sélectionner un emplacement\" et sélectionner un emplacement d'entrée qui prend en charge DAITA." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA är inte tillgängligt på den aktuella postservern. Efter aktivering, gå till \"Välj plats\"-vyn och välj en postplats som stöder DAITA." - } - } - } + }, "DAITA-enabled" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA-aktiviert" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Activé par DAITA" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA-aktiverat" - } - } - } + }, - "DAITA: Multihop" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA: Multihop" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA : Multihop" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA: Multihop" - } - } - } + "Defense against AI-guided Traffic Analysis" : { + }, "Delete" : { "localizations" : { @@ -1813,60 +1265,25 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Supprimez" + "value" : "Supprimer" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Radera" + "value" : "Ta bort" } } } }, + "Delete %@?" : { + + }, "Delete account" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Konto löschen" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Supprimer le compte" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ta bort konto" - } - } - } + }, "Delete Account" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Konto löschen" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Supprimer le compte" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ta bort konto" - } - } - } + }, "Delete list" : { "localizations" : { @@ -1901,38 +1318,19 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Méthode de suppression" + "value" : "Supprimer la méthode" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Ta bort metod" + "value" : "Radera metod" } } } }, "Deleting account..." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Konto wird gelöscht..." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Suppression du compte..." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tar bort konto..." - } - } - } + }, "Device is inactive" : { "localizations" : { @@ -1979,48 +1377,10 @@ } }, "Device name: %@" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Gerätename: %@" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Nom de l'appareil : %@" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Enhetsnamn: %@" - } - } - } + }, "Direct" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Direkt" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Directement" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Direkt" - } - } - } + }, "Direct only" : { "localizations" : { @@ -2033,7 +1393,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Direct uniquement" + "value" : "Directe uniquement" } }, "sv" : { @@ -2044,112 +1404,96 @@ } } }, - "Disable all content blockers to activate this setting." : { + "Disable all \"%@\" above to activate this setting." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Deaktivieren Sie alle Inhaltsblocker, um diese Einstellung zu aktivieren." + "value" : "Deaktivieren Sie oben alle „%@“, um diese Einstellung zu aktivieren." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Désactiver tous les bloqueurs de contenu pour activer ce paramètre." + "value" : "Désactivez tous les « %@ » ci-dessus pour activer ce paramètre." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Inaktivera alla innehållsblockerare för att aktivera denna inställning." + "value" : "Inaktivera alla \"%@\" ovan för att aktivera inställningen." } } } }, "Disabled" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Deaktiviert" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Désactivé" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Inaktiverad" - } - } - } + }, "Disabling" : { + + }, + "Discard changes" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Deaktivieren" + "value" : "Änderungen verwerfen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Désactivation" + "value" : "Annuler les modifications " } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Inaktiverar" + "value" : "Ignorera ändringarna" } } } }, - "Discard changes" : { + "Disconnect" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Änderungen verwerfen" + "value" : "Trennen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Annuler les modifications" + "value" : "Déconnexion" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Ignorera ändringar" + "value" : "Koppla från" } } } }, - "Disconnect" : { + "Disconnected" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Verbindung trennen" + "value" : "Verbindung getrennt" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Déconnecter" + "value" : "Déconnecté" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Koppla från" + "value" : "Frånkopplad" } } } @@ -2159,13 +1503,13 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Trennen" + "value" : "Verbindung wird getrennt" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Déconnexion" + "value" : "Déconnexion en cours" } }, "sv" : { @@ -2176,56 +1520,68 @@ } } }, - "DNS content blockers" : { + "Disconnecting..." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DNS-Inhaltsblocker" + "value" : "Verbindung wird getrennt …" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Blocages de contenu DNS" + "value" : "Déconnexion en cours..." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "DNS-innehållsblockerare" + "value" : "Kopplar från ..." } } } }, - "DNS settings" : { + "DNS content blockers" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DNS-Einstellungen" + "value" : "DNS-Inhaltssperren" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Paramètres DNS" + "value" : "Bloqueurs de contenu DNS" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "DNS-inställningar" + "value" : "DNS-innehållsblockerare" } } } }, + "DNS settings" : { + + }, + "Do you agree to remaining anonymous?" : { + + }, + "Do you want to create a new account?" : { + + }, + "Do you want to delete the list **%@**?" : { + + }, "Don’t have an account number?" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Haben Sie noch keine Kontonummer?" + "value" : "Sie haben keine Kontonummer?" } }, "fr" : { @@ -2243,48 +1599,10 @@ } }, "Done" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Fertig" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Fait" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Klar" - } - } - } + }, "Edit custom list" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Eigene Liste bearbeiten" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Modifier la liste personnalisée" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Redigera anpassad lista" - } - } - } + }, "Edit lists" : { "localizations" : { @@ -2297,7 +1615,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Editer les listes" + "value" : "Modifier les listes" } }, "sv" : { @@ -2313,13 +1631,13 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Orte bearbeiten" + "value" : "Standorte bearbeiten" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Modifier les emplacements" + "value" : "Modifier les localisations" } }, "sv" : { @@ -2352,50 +1670,56 @@ } } }, - "Enable" : { + "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" : "Aktivieren" + "value" : "Kaufen Sie entweder Guthaben über unsere Seite oder lösen Sie einen Gutschein ein." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Activer" + "value" : "Achetez du crédit sur notre site web ou échangez un bon." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Aktivera" + "value" : "Du kan antingen köpa kredit på vår webbplats eller lösa in en kupong." } } } }, - "Enable \"%@\"" : { + "Enable" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "\"%@ \" aktivieren" + "value" : "Aktivieren" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Activer «%@»" + "value" : "Activer" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Aktivera \"%@\"" + "value" : "Aktivera" } } } }, + "Enable \"%@\"" : { + + }, "Enable method" : { "localizations" : { "de" : { @@ -2419,48 +1743,10 @@ } }, "Enabling" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aktivieren" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Activation" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aktiverar" - } - } - } + }, "Encrypted DNS proxy" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Verschlüsselter DNS-Proxy" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Proxy DNS chiffré" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Krypterad DNS-proxy" - } - } - } + }, "Enter IP" : { "localizations" : { @@ -2473,7 +1759,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Entrez l'adresse IP" + "value" : "Saisir l'IP" } }, "sv" : { @@ -2495,13 +1781,13 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Entrez le code du bon de réduction" + "value" : "Saisissez un code de bon" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Ange rabattkod" + "value" : "Ange kupongkod" } } } @@ -2517,7 +1803,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Entrez votre numéro de compte" + "value" : "Saisissez votre numéro de compte" } }, "sv" : { @@ -2533,7 +1819,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Eintrag" + "value" : "Eingang" } }, "fr" : { @@ -2545,7 +1831,7 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Inlägg" + "value" : "Ingång" } } } @@ -2555,73 +1841,38 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Beenden" + "value" : "Ausgang" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Quitter" + "value" : "Sortie" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Avsluta" + "value" : "Utgång" } } } }, + "Expand %@" : { + + }, "Expands this location." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Erweitert diesen Standort." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Développe cet emplacement." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Expanderar denna plats." - } - } - } + }, "Failed to connect to App store, please try again later." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Verbindung zum App Store fehlgeschlagen, bitte versuchen Sie es später erneut." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible de se connecter à l'App Store, veuillez réessayer plus tard." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Det gick inte att ansluta till App Store, försök igen senare." - } - } - } + }, "Failed to send" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Senden fehlgeschlagen" + "value" : "Fehler beim Senden" } }, "fr" : { @@ -2639,181 +1890,57 @@ } }, "Failed to send the receipt to server: %@" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Fehler beim Senden der Quittung an Server: %@" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible d'envoyer la réception au serveur: %@" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Det gick inte att skicka kvittot till server: %@" - } - } - } + }, "Failed to start the tunnel: %@." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Fehler beim Starten des Tunnels: %@." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible de démarrer le tunnel : %@." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Det gick inte att starta tunneln: %@." - } - } - } + }, "Failed to start the tunnel." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tunnel konnte nicht gestartet werden." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible de démarrer le tunnel." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Det gick inte att starta tunneln." - } - } - } + }, "Failed to stop the tunnel: %@." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Fehler beim Beenden des Tunnels: %@." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible d'arrêter le tunnel : %@." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Det gick inte att stoppa tunneln: %@." - } - } - } + }, "Failed to stop the tunnel." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Fehler beim Stoppen des Tunnels." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible d'arrêter le tunnel." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Det gick inte att stoppa tunneln." - } - } - } + }, "Failed to validate account number: %@" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Fehler beim Überprüfen der Kontonummer: %@" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible de valider le numéro de compte : %@" - } - } - } + }, "FAQs & Guides" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "FAQ & Anleitungen" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "FAQs & Guider" - } - } - } + }, "Fetching devices..." : { + + }, + "file" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Geräte werden abgerufen..." + "value" : "datei" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Récupération des appareils..." + "value" : "fichier" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Hämtar enheter..." + "value" : "fil" } } } }, "Filter" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Filtern" - } - }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Filtre" + "value" : "Filtrer" } }, "sv" : { @@ -2851,35 +1978,41 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Spielen" + "value" : "Glücksspiel" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Jeu" + "value" : "Jeux d'argent" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Spelande" + "value" : "Hasardspel" } } } }, - "Go ahead and start using the app to begin reclaiming your online privacy.\nTo continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools." : { + "Go ahead and start using the app to begin reclaiming your online privacy." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Gehen Sie voran und verwenden Sie die App, um Ihre Privatsphäre wiederherzustellen.\nUm Ihre Reise als privates Ninja fortzusetzen, besuchen Sie unsere Website, um andere datenschutzfreundliche Gewohnheiten und Werkzeuge zu übernehmen." + "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" : "Gå vidare och börja använda appen för att börja återta din integritet online.\nFör att fortsätta din resa som privatliv ninja, besök vår hemsida för att plocka upp andra integritetsvänliga vanor och verktyg." + "value" : "Sätt igång och börja använda appen för att ta tillbaka din onlinesekretess." } } } @@ -2889,7 +2022,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zum Login" + "value" : "Zur Anmeldung" } }, "fr" : { @@ -2911,19 +2044,19 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Wenn Sie sich anmelden, wird das Internet auf diesem Gerät entsperrt." + "value" : "Wenn Sie mit der Anmeldung fortfahren, wird die Internetsperre auf diesem Gerät aufgehoben." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Se connecter débloquera Internet sur cet appareil." + "value" : "Aller à la connexion débloquera la connexion Internet sur cet appareil." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Att gå till inloggning kommer att avblockera Internet på den här enheten." + "value" : "Om du loggar in avblockeras internet på den här enheten." } } } @@ -2939,7 +2072,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Compris!" + "value" : "Compris !" } }, "sv" : { @@ -2955,13 +2088,13 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Hier ist deine Kontonummer. Speichere es!" + "value" : "Hier ist Ihre Kontonummer. Verlieren Sie sie nicht!" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Voici votre numéro de compte. Enregistrez-le !" + "value" : "Voici votre numéro de compte. Gardez-le !" } }, "sv" : { @@ -2977,13 +2110,13 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Kontonummer ausblenden" + "value" : "Kontonummer verbergen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Cacher le numéro de compte" + "value" : "Masquer le numéro de compte" } }, "sv" : { @@ -2994,24 +2127,24 @@ } } }, - "If an observer monitors these data packets, DAITA makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating.\n\nDAITA does this by carefully adding network noise and making all network packets the same size.\n\nNot all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server.\n" : { + "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, DAITA macht es für sie wesentlich schwieriger, herauszufinden, welche Websites Sie besuchen oder mit wem Sie kommunizieren.\n\nDAITA tut dies, indem es Netzwerkrauschen einfügt und alle Netzwerkpakete auf die gleiche Größe bringt.\n\nNicht alle unsere Server sind DAITA-fähig. Daher verwenden wir Multihop automatisch, um DAITA mit jedem Server zu aktivieren.\n" + "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, DAITA leur rend beaucoup plus difficile d'identifier les sites Web que vous visitez ou avec lesquels vous communiquez.\n\nDAITA le fait en ajoutant soigneusement du bruit du réseau et en faisant de tous les paquets du réseau la même taille.\n\nTous nos serveurs ne sont pas activés par DAITA. Par conséquent, nous utilisons le multilien automatiquement pour activer DAITA avec n'importe quel serveur.\n" + "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 en observatör övervakar dessa datapaket, DAITA gör det betydligt svårare för dem att identifiera vilka webbplatser du besöker eller med vilka du kommunicerar.\n\nDAITA gör detta genom att noggrant lägga till nätverksljud och göra alla nätverkspaket till samma storlek.\n\nAlla våra servrar är inte DAITA-aktiverade. Därför använder vi multihop automatiskt för att aktivera DAITA med alla servrar.\n" + "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." } } } @@ -3021,89 +2154,60 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bei Bedarf werden wir dich unter %@ kontaktieren" + "value" : "Bei Bedarf werden wir Sie über %@ kontaktieren" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Si nécessaire, nous vous contacterons à %@" + "value" : "Si nécessaire, nous vous contacterons à l'adresse %@" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Om det behövs kommer vi att kontakta dig på %@" + "value" : "Om det behövs kontaktar vi dig på %@" } } } }, + "If so, click log out below to log in with the other account number." : { + + }, "If you are having issues connecting to VPN servers, please contact support." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Wenn du Probleme beim Verbinden mit VPN-Servern hast, kontaktiere bitte den Support." + "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 le support." + "value" : "Si vous rencontrez des problèmes de connexion aux serveurs VPN, veuillez contacter l'assistance." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Om du har problem med att ansluta till VPN-servrar, vänligen kontakta support." + "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.\nThe DoH servers are hosted by one of the following providers: Quad9 or Cloudflare." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Wenn du nicht mit unserem VPN verbunden bist, wird der verschlüsselte DNS-Proxy deine eigene nicht-VPN-IP beim Verbinden verwenden.\nDie DoH-Server werden von einem der folgenden Anbieter gehostet: Quad9 oder Cloudflare." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Om du inte är ansluten till vårt VPN kommer den krypterade DNS-proxyn att använda din egen icke-VPN IP när du ansluter.\nDoH-servrarna är värd för en av följande leverantörer: Quad9 eller 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." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Wenn Sie die Verbindung jetzt trennen, werden Sie Ihre Verbindung nicht sichern können, bis das Gerät online ist." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Si vous vous déconnectez maintenant, vous ne pourrez pas sécuriser votre connexion tant que l'appareil ne sera pas en ligne." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Om du kopplar från nu kommer du inte att kunna säkra din anslutning förrän enheten är 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" : "Wenn Sie das Formular verlassen und versuchen Sie es später noch einmal, werden die von Ihnen eingegebenen Informationen immer noch hier sein." + "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" : { @@ -3115,54 +2219,38 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Om du avslutar formuläret och försöker igen senare, kommer informationen du redan angett fortfarande att vara här." + "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 du nach dem Kauf keine zusätzliche VPN-Zeit erhalten hast" + "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 n'avez pas reçu de temps VPN supplémentaire après l'achat" + "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 inte har fått ytterligare VPN-tid efter köp" + "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." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Wenn Sie immer noch Probleme haben, können Sie unseren Support direkt unter **%@** per E-Mail senden. Bitte fügen Sie Ihr App-Log an Ihre E-Mail hinzu." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Si vous rencontrez toujours des problèmes, vous pouvez envoyer un e-mail à notre assistance directement à **%@**. Veuillez joindre votre journal d'application à votre adresse e-mail." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Om du fortfarande upplever problem kan du maila vår support direkt på **%@**. Vänligen bifoga din app-logg till din e-post." - } - } - } + }, "Import" : { "localizations" : { @@ -3175,7 +2263,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Importation" + "value" : "Importer" } }, "sv" : { @@ -3186,50 +2274,6 @@ } } }, - "Import %@ was successful, overrides are now active." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Import %@ war erfolgreich, Überschreibungen sind jetzt aktiv." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Importation %@ réussie, les remplacements sont maintenant actifs." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Import %@ lyckades, åsidosättningar är nu aktiva." - } - } - } - }, - "Import %@ was unsuccessful, please try again." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Import %@ war nicht erfolgreich, bitte versuchen Sie es erneut." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "L'importation de %@ a échoué, veuillez réessayer." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Importen av %@ misslyckades, försök igen." - } - } - } - }, "Import file" : { "localizations" : { "de" : { @@ -3252,56 +2296,43 @@ } } }, - "Import files or text with the new IP addresses for the servers in the Select location view." : { + "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 den neuen IP-Adressen für die Server in der Standortansicht auswählen." + "value" : "Importieren Sie Dateien oder Text mit neuen IP-Adressen für die Server in der Ortsauswahl." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Importer des fichiers ou du texte avec les nouvelles adresses IP pour les serveurs dans la vue Choisir un emplacement." + "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 de nya IP-adresserna för servrarna i Välj plats vyn." + "value" : "Importera filer eller text med nya IP-adresser för servrarna i Välj platsvy." } } } }, + "Import of %@ was successful, overrides are now active." : { + + }, + "Import of %@ was unsuccessful, please try again." : { + + }, "Import successful" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Import erfolgreich" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Importation réussie" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Importen lyckades" - } - } - } + }, "Import via text" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Über Text importieren" + "value" : "Import via Text" } }, "fr" : { @@ -3318,178 +2349,102 @@ } } }, - "In use" : { + "In" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "In Verwendung" + "value" : "Eingehend" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "En cours d'utilisation" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "I bruk" + "value" : "Entrante" } } } }, - "Include all networks" : { + "In use" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Alle Netzwerke einbeziehen" + "value" : "Wird verwendet" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Inclure tous les réseaux" + "value" : "En cours d'utilisation" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Inkludera alla nätverk" + "value" : "Används" } } } }, + "Include all networks" : { + + }, "Internal error occurred. Settings will be reset to defaults and device logged out." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Interner Fehler aufgetreten. Einstellungen werden auf Standardwerte zurückgesetzt und das Gerät ist abgemeldet." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Une erreur interne est survenue. Les paramètres seront réinitialisés par défaut et le périphérique sera déconnecté." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Internt fel uppstod. Inställningarna återställs till standardinställningar och enheten loggas ut." - } - } - } + }, "Internal error." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Interner Fehler." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Erreur interne." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Internt fel." - } - } - } + }, "Invalid account" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ungültiges Konto" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Compte invalide" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ogiltigt konto" - } - } - } + }, "Invalid device state." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ungültiger Gerätestatus." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Etat de l'appareil non valide." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ogiltig enhets status." - } - } - } + }, "Invalid purchase identifier." : { + + }, + "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" : "Ungültige Einkaufsbezeichnung." + "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" : "Identifiant d'achat invalide." + "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" : "Ogiltig inköpsidentifierare" + "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 have entered a Mullvad account number instead of a voucher code. Do you want to log in to an existing account?\nIf so, click log out below to log in with the other account number." : { + "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" : "Es sieht so aus, als hätten Sie statt eines Gutscheincodes eine Mullvad-Kontonummer eingegeben. Möchten Sie sich bei einem bestehenden Konto anmelden?\nWenn ja, klicken Sie unten auf Abmelden, um sich mit der anderen Kontonummer anzumelden." + "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" : "On dirait que vous avez entré un numéro de compte Mullvad au lieu d'un code coupon. Voulez-vous vous connecter à un compte existant ?\nSi c'est le cas, cliquez sur déconnecter ci-dessous pour vous connecter avec l'autre numéro de compte." + "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 har angett ett Mullva-kontonummer istället för en kupongkod. Vill du logga in på ett befintligt konto?\nOm så är fallet, klicka på logga ut nedan för att logga in med det andra kontonumret." + "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." } } } @@ -3517,61 +2472,23 @@ } }, "Last four digits of the account number are incorrect" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Die letzten vier Ziffern der Kontonummer sind falsch" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Les quatre derniers chiffres du numéro de compte sont incorrects" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "De fyra sista siffrorna i kontonumret är felaktiga" - } - } - } + }, "Last used account" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Zuletzt genutztes Konto" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Dernier compte utilisé" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Senast använda konto" - } - } - } + }, "Learn about privacy" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Erfahren Sie mehr über Privatsphäre" + "value" : "Mehr über Privatsphäre erfahren" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "En savoir plus sur la confidentialité" + "value" : "Plus d'informations sur la confidentialité" } }, "sv" : { @@ -3583,70 +2500,32 @@ } }, "Less than a day" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Weniger als ein Tag" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Moins d'un jour" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Mindre än en dag" - } - } - } + }, "Local network sharing" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Gemeinsames Netzwerk" + "value" : "Teilen im lokalen Netzwerk" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Partage de réseau local" + "value" : "Partage réseau local" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Delning av lokalt nätverk" + "value" : "Lokal nätverksdelning" } } } }, "Log in" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Anmelden" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Se connecter" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Logga in" - } - } - } + }, "Log out" : { "localizations" : { @@ -3697,13 +2576,13 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Anmelden..." + "value" : "Anmeldung läuft..." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Connexion en cours..." + "value" : "Connexion..." } }, "sv" : { @@ -3715,26 +2594,7 @@ } }, "Logging out..." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Abmelden..." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Déconnexion..." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Loggar ut..." - } - } - } + }, "Login" : { "localizations" : { @@ -3747,13 +2607,13 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Se connecter" + "value" : "Connexion" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Inloggning" + "value" : "Logga in" } } } @@ -3763,7 +2623,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Login fehlgeschlagen" + "value" : "Anmeldung fehlgeschlagen" } }, "fr" : { @@ -3775,98 +2635,29 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Inloggning misslyckades" + "value" : "Inloggningen misslyckades" } } } }, "Make a purchase with StoreKit2" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kaufen Sie mit StoreKit2" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Faites un achat avec StoreKit2" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Gör ett köp med StoreKit2" - } - } - } + }, "Malware" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Malware" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Malware" - } - }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Malware" + "value" : "Skadlig kod" } } } }, "Manage default and setup custom methods to access the Mullvad API." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Verwalten Sie die Standardeinstellungen und konfigurieren Sie benutzerdefinierte Methoden, um auf die Mullvad API zuzugreifen." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Gérer les méthodes par défaut et configurer les méthodes personnalisées pour accéder à l'API Mullvad." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Hantera standard och konfigurera anpassade metoder för att komma åt Mullvads API." - } - } - } + }, "Manage default and setup custom methods to access the Mullvad API. " : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Verwalten Sie die Standardeinstellungen und konfigurieren Sie benutzerdefinierte Methoden, um auf die Mullvad API zuzugreifen. " - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Gérer les méthodes par défaut et configurer les méthodes personnalisées pour accéder à l'API Mullvad. " - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Hantera standard och konfigurera anpassade metoder för att komma åt Mullvads API. " - } - } - } + }, "Manage devices" : { "localizations" : { @@ -3891,183 +2682,64 @@ } }, "method" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Methode" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Méthode" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "metod" - } - } - } + }, "Method settings" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Methodeneinstellungen" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Paramètres de la méthode" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Metod inställningar" - } - } - } + }, "Mullvad bridges" : { + + }, + "multihop" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Mullvad Brücken" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ponts de Mullvad" - } - }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Mullvad bryggor" + "value" : "multihopp" } } } }, "Multihop" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Mehrfachbogen" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Multilien" - } - }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Multihop" + "value" : "Multihopp" } } } }, "Multihop is being used to enable DAITA for your selected location." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Multihop wird verwendet, um DAITA für Ihren ausgewählten Standort zu aktivieren." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Le multilien est utilisé pour activer DAITA pour l'emplacement que vous avez sélectionné." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Multihop används för att aktivera DAITA för din valda plats." - } - } - } - }, - "Multihop routes your traffic into one WireGuard server and out another, making it harder to trace.\nThis results in increased latency but increases anonymity online." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Multihop leitet Ihren Datenverkehr auf einen WireGuard-Server und einen anderen aus, was es schwieriger macht, ihn zu verfolgen.\nDies führt zu erhöhter Latenz, erhöht aber die Anonymität online." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Multihop rutter din trafik i en WireGuard server och ut en annan, vilket gör det svårare att spåra.\nDetta resulterar i ökad fördröjning men ökar anonymiteten på nätet." - } - } - } + }, "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 führt Ihren Traffic auf einen WireGuard-Server und einen anderen aus, wodurch es schwieriger wird, das Aufspüren zu erschweren. Dies führt zu erhöhter Latenz, erhöht aber die Anonymität online." + "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" : "Multihop achemine votre trafic vers un serveur WireGuard et un autre, ce qui rend la traçabilité plus difficile. Cela entraîne une latence accrue mais augmente l'anonymat en ligne." + "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" : "Multihop leder din trafik till en WireGuard-server och ut en annan, vilket gör det svårare att spåra. Detta resulterar i ökad fördröjning men ökar anonymiteten online." + "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." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Mehrere Validierungsfehler sind aufgetreten." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Plusieurs erreurs de validation se sont produites." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Flera valideringsfel uppstod." - } - } - } + }, "Name" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Name" - } - }, "fr" : { "stringUnit" : { "state" : "translated", @@ -4083,105 +2755,35 @@ } }, "Name should be no longer than %i characters." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Name darf nicht länger als %i Zeichen sein." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Namnet får inte vara längre än %i tecken." - } - } - } + }, "Network error: %@" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Netzwerkfehler: %@" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Erreur réseau : %@" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Nätverksfel: %@" - } - } - } + }, "NETWORK ISSUES" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "NETZWERK ISSUES" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "ÎLES DE RÉSEAU" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "NETWORK ISSUES" - } - } - } + }, "New custom list" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Neue benutzerdefinierte Liste" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Nouvelle liste personnalisée" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ny anpassad lista" - } - } - } + }, "NEW DEVICE CREATED" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "NEUE GERÄT ERSTELLT" + "value" : "NEUES GERÄT ERSTELLT" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "NOUVEAU APPAREIL CRÉÉ" + "value" : "NOUVEL APPAREIL CRÉÉ" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "NYA ENHETER SKAPAD" + "value" : "NY ENHET HAR SKAPATS" } } } @@ -4191,13 +2793,13 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "NEUE VERSION INSTALLED" + "value" : "NEUE VERSION INSTALLIERT" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "NOUVELLE VERSION INSTALLEE" + "value" : "NOUVELLE VERSION INSTALLÉE" } }, "sv" : { @@ -4213,7 +2815,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nächste" + "value" : "Weiter" } }, "fr" : { @@ -4231,158 +2833,72 @@ } }, "No DAITA compatible servers match your location settings. Try changing location." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Keine DAITA-kompatiblen Server stimmen mit Ihren Standorteinstellungen überein. Versuchen Sie, den Standort zu ändern." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aucun serveur compatible DAITA ne correspond à vos paramètres de localisation. Essayez de changer d'emplacement." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Inga DAITA-kompatibla servrar matchar dina platsinställningar. Försök att ändra plats." - } - } - } + }, "No matching relays found, check your filter settings." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Keine passenden Relais gefunden, überprüfen Sie Ihre Filtereinstellungen." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aucun relais correspondant, vérifiez les paramètres de votre filtre." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Inga matchande reläer hittade, kontrollera dina filterinställningar." - } - } - } + }, "No matching servers" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Keine passenden Server" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aucun serveur correspondant" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Inga matchande servrar" - } - } - } + }, "No network" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kein Netzwerk" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aucun réseau" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Inget nätverk" - } - } - } + }, "No overrides imported" : { + + }, + "No servers match your location filter. Try changing filter settings." : { + + }, + "No servers match your obfuscation settings. Try changing location or obfuscation method." : { + + }, + "No servers match your settings, try changing server or other settings." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Keine importierten Überschreibungen" + "value" : "Kein Server entspricht Ihren Einstellungen. Versuchen Sie, den Server oder andere Einstellungen zu ändern." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Aucune substitution importée" + "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 åsidosättningar importerade" + "value" : "Inga servrar matchar dina inställningar. Försök att byta server eller ändra inställningarna." } } } }, - "No servers match your location filter. Try changing filter settings." : { + "Not all our servers are %@-enabled. Therefore, we use multihop automatically to enable %@ with any server." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Keine Server stimmen mit Ihrem Standortfilter überein. Versuchen Sie, die Filtereinstellungen zu ändern." + "value" : "Nicht alle unsere Server sind %1$@-fähig. Daher verwenden wir automatisch Multihop, um %2$@ mit jedem Server zu aktivieren." } }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Aucun serveur ne correspond à votre filtre de localisation. Essayez de changer les paramètres de filtre." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Inga servrar matchar ditt platsfilter. Prova att ändra filterinställningar." - } - } - } - }, - "No servers match your obfuscation settings. Try changing location or obfuscation method." : { - - }, - "No servers match your settings, try changing server or other settings." : { - "localizations" : { - "de" : { + "en" : { "stringUnit" : { - "state" : "translated", - "value" : "Keine Server entsprechen deinen Einstellungen, versuche Server oder andere Einstellungen zu ändern." + "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" : "Aucun serveur ne correspond à vos paramètres, essayez de changer de serveur ou d'autres paramètres." + "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" : "Inga servrar matchar dina inställningar, prova att ändra server eller andra inställningar." + "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." } } } @@ -4398,13 +2914,13 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Obfuscation" + "value" : "Dissimulation" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Obfusk" + "value" : "Obfuskering" } } } @@ -4414,44 +2930,25 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Verschleierung versteckt den WireGuard-Verkehr innerhalb eines anderen Protokolls. Es kann verwendet werden, um Zensur und andere Filterarten zu umgehen, wo eine einfache WireGuard-Verbindung blockiert würde." + "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" : "L'obfuscation cache le trafic WireGuard à l'intérieur d'un autre protocole. Il peut être utilisé pour aider à contourner la censure et d'autres types de filtrage, où une simple connexion WireGuard serait bloquée." + "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" : "Obduktion döljer WireGuard trafik inuti ett annat protokoll. Den kan användas för att kringgå censur och andra typer av filtrering, där en vanlig WireGuard-anslutning skulle blockeras." + "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" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Verdeckt" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Obscuré" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Obscured" - } - } - } + }, "Off" : { "localizations" : { @@ -4480,7 +2977,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "An" + "value" : "Ein" } }, "fr" : { @@ -4502,19 +2999,19 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "In einigen Netzen, in denen verschiedene Arten von Zensur genutzt werden, werden unsere Server-IP-Adressen manchmal blockiert." + "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ù différents types de censure sont utilisés, les adresses IP de notre serveur sont parfois bloquées." + "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 censur används, blockeras ibland våra serverIP-adresser." + "value" : "På vissa nätverk där olika typer av censureringar används blockeras blir ibland vår servers IP-adresser blockerade." } } } @@ -4524,85 +3021,66 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "In einigen Netzwerken, in denen verschiedene Arten von Zensur verwendet werden, sind die API-Server möglicherweise nicht direkt erreichbar." + "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ù différents types de censure sont utilisés, les serveurs API peuvent ne pas être directement accessibles." + "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" : "På vissa nätverk, där olika typer av censur används, kanske API-servrarna inte är direkt nåbara." + "value" : "Det kanske inte går att nå API-servrarna direkt på nätverk som använder olika censureringstyper." } } } }, - "Open DAITA settings" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "DAITA-Einstellungen öffnen" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ouvrir les paramètres DAITA" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Öppna DAITA-inställningar" - } - } - } + "Open %@ settings" : { + }, "Optional" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Optional" - } - }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Optionnel" + "value" : "Facultatif" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Valfri" + "value" : "Valfritt" } } } }, + "Out IPv4" : { + + }, + "Out IPv6" : { + + }, "Out of time" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nicht mehr Zeit" + "value" : "Zeit abgelaufen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Dépassement de temps" + "value" : "Plus de temps" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Slut på tid" + "value" : "Ingen tid kvar" } } } @@ -4612,19 +3090,19 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "ZEIT VON ZEIT" + "value" : "ZEIT ABGELAUFEN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "HORS DU TEMPS" + "value" : "PLUS DE TEMPS" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "SLUT AV TID" + "value" : "INGEN TID KVAR" } } } @@ -4634,19 +3112,19 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Überschreibt aktiv" + "value" : "Überschreibungen aktiv" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Substitutions activées" + "value" : "Substitutions actives" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Ersätter aktiva" + "value" : "Åsidosättningar aktiva" } } } @@ -4656,7 +3134,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Besitzt" + "value" : "In Besitz" } }, "fr" : { @@ -4678,7 +3156,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Eigentum" + "value" : "Eigentümerschaft" } }, "fr" : { @@ -4712,7 +3190,7 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Betalad till" + "value" : "Betalat till" } } } @@ -4740,158 +3218,66 @@ } }, "Performs a connection test to a Mullvad API server via this access method." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Führt einen Verbindungstest an einen Mullvad-API-Server über diese Zugriffsmethode durch." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Effectue un test de connexion à un serveur API Mullvad via cette méthode d'accès." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Utför ett anslutningstest till en Mullvads API-server via denna åtkomstmetod." - } - } - } + }, "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." + "value" : "Bitte geben Sie eine gültige IPv4- oder IPv6-Adresse ein." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Veuillez entrer une adresse IPv4 ou IPv6 valide." + "value" : "Merci de saisir une adresse IPv4 ou IPv6 valide." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Ange en giltig IPv4 eller IPv6-adress." + "value" : "Ange en giltig IPv4- eller IPv6-adress." } } } }, "Please enter a valid 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 geben Sie einen gültigen Port ein." + "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" : "Veuillez entrer un port valide." + "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" : "Ange en giltig port." + "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." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Bitte versuchen Sie es noch einmal, indem Sie den Button \"Einkäufe wiederherstellen\" verwenden." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Veuillez réessayer en utilisant le bouton \"Restaurer les achats\"." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Försök igen genom att använda knappen \"Återställ köp\"." - } - } - } + }, "Port" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Port" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Port" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Port" - } - } - } + }, "Port: %@" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Port: %@" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Port : %@" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Port: %@" - } - } - } + }, "Previous" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Vorherige" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Précédent" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Föregående" - } - } - } + }, "Providers" : { "localizations" : { @@ -4916,33 +3302,14 @@ } }, "Providers: %d" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Anbieter: %d" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Fournisseurs : %d" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Leverantörer: %d" - } - } - } + }, "Quantum resistance" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Quantenwiderstand" + "value" : "Quantenresistenz" } }, "fr" : { @@ -4954,58 +3321,21 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Kvantmotstånd" + "value" : "Kvantresistens" } } } }, "Quantum secure connection" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Quantensichere Verbindung" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Connexion sécurisée Quantum" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kvantsäker anslutning" - } - } - } + }, "Quantum secure connection. Connected to %@, %@" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sichere Quantenverbindung. Verbunden mit %1$@, %2$@" - } - }, "en" : { "stringUnit" : { "state" : "new", "value" : "Quantum secure connection. Connected to %1$@, %2$@" } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Connexion sécurisée quantique. Connectée à %1$@, %2$@" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Kvantsäker anslutning. Ansluten till %1$@, %2$@" - } } } }, @@ -5020,45 +3350,26 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Tunnel résistant aux Quantumes" + "value" : "Tunnel résistant aux attaques quantiques" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Kvantbeständig tunnel" + "value" : "Kvantresistent tunnel" } } } }, "QUIC" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "QUISCH" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "QUIQUE" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "FRÅGOR" - } - } - } + }, "Reconnecting" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Erneut verbinden" + "value" : "Wiederherstellen der Verbindung" } }, "fr" : { @@ -5077,29 +3388,11 @@ }, "Reconnecting to %@, %@" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Verbinde dich mit %1$@, %2$@" - } - }, "en" : { "stringUnit" : { "state" : "new", "value" : "Reconnecting to %1$@, %2$@" } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Reconnexion à %1$@, %2$@" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Återansluter till %1$@, %2$@" - } } } }, @@ -5108,19 +3401,19 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Redeem" + "value" : "Einlösen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Redeem" + "value" : "Échanger" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Redeem" + "value" : "Lös in" } } } @@ -5130,92 +3423,76 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Redeem voucher" + "value" : "Gutschein einlösen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Redeem voucher" + "value" : "Échangez un bon" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Redeem voucher" + "value" : "Lös in kupong" } } } }, "Refund last purchase with StoreKit2" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Letzten Kauf mit StoreKit2 erstatten" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Rembourser le dernier achat avec StoreKit2" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Återbetala senaste köp med StoreKit2" - } - } - } + }, "Refund successful" : { + + }, + "Remove" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Rückerstattung erfolgreich" + "value" : "Entfernen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Remboursement réussi" + "value" : "Supprimer" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Återbetalning slutförd" + "value" : "Ta bort" } } } }, - "Remove" : { - - }, - "Remove last used account" : { + "Remove %@?" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Letztes Konto entfernen" + "value" : "%@ entfernen?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Supprimer le dernier compte utilisé" + "value" : "Supprimer %@ ?" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Ta bort senast använda konto" + "value" : "Ta bort %@?" } } } }, + "Remove last used account" : { + + }, "Removing the saved account number from this device cannot be undone.\nDo you want to remove the saved account number?" : { }, @@ -5224,7 +3501,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Vermietung" + "value" : "Gemietet" } }, "fr" : { @@ -5246,7 +3523,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ein Problem melden" + "value" : "Problem melden" } }, "fr" : { @@ -5268,7 +3545,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Benötigt" + "value" : "Erforderlich" } }, "fr" : { @@ -5280,32 +3557,13 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Krävs" + "value" : "Obligatoriskt" } } } }, "Restore purchases" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Käufe wiederherstellen" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Restaurer les achats" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Återställ köp" - } - } - } + }, "Save" : { "localizations" : { @@ -5330,55 +3588,17 @@ } }, "Save anyway" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Trotzdem speichern" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Enregistrer quand même" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Spara ändå" - } - } - } + }, "Saving changes..." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Änderungen werden gespeichert..." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Enregistrement des modifications..." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sparar ändringar..." - } - } - } + }, "Search for..." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Suche nach..." + "value" : "Suchen nach …" } }, "fr" : { @@ -5390,36 +3610,18 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Sök efter..." + "value" : "Sök efter …" } } } }, "Secure connection. Connected to %@, %@" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sichere Verbindung. %1$@, %2$@" - } - }, "en" : { "stringUnit" : { "state" : "new", "value" : "Secure connection. Connected to %1$@, %2$@" } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Connexion sécurisée. Connectée à %1$@, %2$@" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Säker anslutning. Ansluten till %1$@, %2$@" - } } } }, @@ -5428,13 +3630,13 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Standort auswählen" + "value" : "Ort auswählen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Sélectionnez un emplacement" + "value" : "Sélectionner une localisation" } }, "sv" : { @@ -5446,26 +3648,7 @@ } }, "Selected" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ausgewählt" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sélectionnés" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Vald" - } - } - } + }, "Send" : { "localizations" : { @@ -5516,7 +3699,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Senden..." + "value" : "Wird gesendet..." } }, "fr" : { @@ -5528,7 +3711,7 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Skickar..." + "value" : "Skicka..." } } } @@ -5557,23 +3740,11 @@ }, "Server" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Server" - } - }, "fr" : { "stringUnit" : { "state" : "translated", "value" : "Serveur" } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Server" - } } } }, @@ -5582,7 +3753,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Serverdetails" + "value" : "Serverdaten" } }, "fr" : { @@ -5594,7 +3765,7 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Serverdetaljer" + "value" : "Serverinformation" } } } @@ -5604,88 +3775,28 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Server-IP-Überschreibung" + "value" : "Server-IP überschreiben" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Surcharge IP du serveur" + "value" : "Substitution d'IP de serveur" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Server IP åsidosätter" + "value" : "Åsidosättning av serverns IP-adress" } } } }, "Server IP Override" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Server-IP-Überschreibung" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Surcharge IP du serveur" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Server IP åsidosättning" - } - } - } - }, - "Setting: DAITA" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Einstellung: DAITA" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Paramètre: DAITA" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Inställning: DAITA" - } - } - } + }, - "Setting: Obfuscation" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Einstellung: Verschleierung" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Paramètre: Obfuscation" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Inställning: Obfusk" - } - } - } + "Setting: %@" : { + }, "Settings" : { "localizations" : { @@ -5698,7 +3809,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Réglages" + "value" : "Paramètres" } }, "sv" : { @@ -5710,48 +3821,10 @@ } }, "Settings migration error" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Einstellungs-Migrationsfehler" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Erreur de migration des paramètres" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Migreringsfel för inställningar" - } - } - } + }, "Shadowsocks" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Schattensocken" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Chaussettes fantômes" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Skuggstrumpor" - } - } - } + }, "Show account number" : { "localizations" : { @@ -5780,7 +3853,7 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Soziale Medien" + "value" : "Social Media" } }, "fr" : { @@ -5798,33 +3871,14 @@ } }, "Socks5" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Socks5" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Socks5" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Socks5" - } - } - } + }, "Start using the app" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Mit der App beginnen" + "value" : "Mit dem Benutzen der App anfangen" } }, "fr" : { @@ -5843,22 +3897,10 @@ }, "Super!" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Super!" - } - }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Super!" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Super!" + "value" : "Super !" } } } @@ -5868,63 +3910,47 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Standort wechseln" + "value" : "Ort wechseln" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Changer d'emplacement" + "value" : "Changer de localisation" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Byt plats" + "value" : "Växla plats" } } } }, "Tap **Edit** to add at least one DNS server." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tippe **Bearbeiten** um mindestens einen DNS-Server hinzuzufügen." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Appuyez sur **Modifier** pour ajouter au moins un serveur DNS." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tryck på **Redigera** för att lägga till minst en DNS-server." - } - } - } + + }, + "TCP" : { + }, "Test method" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Testmethode" + "value" : "Methode testen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Méthode de test" + "value" : "Tester la méthode" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Testa metod" + "value" : "Testmetod" } } } @@ -5934,45 +3960,36 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Testen..." + "value" : "Testen …" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Test en cours..." + "value" : "Test..." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Testar..." + "value" : "Testar ..." } } } }, - "Thanks for your purchase" : { + "text" : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Vielen Dank für Ihren Kauf" - } - }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Merci pour votre achat" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tack för ditt köp" + "value" : "texte" } } } }, + "Thanks for your purchase" : { + + }, "Thanks!" : { "localizations" : { "de" : { @@ -5984,7 +4001,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Merci!" + "value" : "Merci !" } }, "sv" : { @@ -5996,265 +4013,145 @@ } }, "The app communicates with a Mullvad API server directly." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Die App kommuniziert direkt mit einem Mullvad API-Server." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "L'application communique directement avec un serveur API Mullvad." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Appen kommunicerar direkt med en Mullvads API-server." - } - } - } + }, "The app communicates with a Mullvad API server via a Mullvad bridge server." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Die App kommuniziert mit einem Mullvad API-Server über einen Mullvad Bridge-Server." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "L'application communique avec un serveur API Mullvad via un pont de connexion Mullvad." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Appen kommunicerar med en Mullvads API-server via en Mullvads brygga." - } - } - } + }, "The app communicates with a Mullvad API server via a proxy address." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Die App kommuniziert mit einem Mullvad API-Server über eine Proxy-Adresse." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "L'application communique avec un serveur API Mullvad via une adresse proxy." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Appen kommunicerar med en Mullvads API-server via en proxyadress." - } - } - } + }, "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 sich anzumelden, Serverlisten abzurufen und andere kritische Operationen durchzuführen." + "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 a besoin de communiquer avec un serveur API Mullvad pour vous connecter, récupérer les listes de serveurs et d'autres opérations critiques." + "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 behöver kommunicera med en Mullvads API-server för att logga in dig, hämta serverlistor och andra kritiska operationer." + "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 App wird die Methode vor dem Speichern testen." + "value" : "Die automatische Einstellung wählt zufällig aus den unten gezeigten gültigen Portbereichen." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "L'application va tester la méthode avant d'enregistrer." + "value" : "Le réglage automatique choisira au hasard parmi la plage de ports valide affichée ci-dessous." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Appen testar metoden innan du sparar." + "value" : "Den automatiska inställningen väljer slumpmässigt från giltiga portintervall som visas nedan." } } } }, - "The automatic setting will randomly choose from the valid port ranges shown below.\nThe custom port can be any value inside the valid ranges:\n%@" : { + "The custom port can be any value inside the valid ranges: %@." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Die automatische Einstellung wird zufällig aus den unten angezeigten Portbereichen auswählen.\nDer benutzerdefinierte Port kann ein beliebiger Wert innerhalb der gültigen Bereiche sein:\n%@" + "value" : "Der benutzerdefinierte Port kann ein beliebiger Wert innerhalb dieser gültigen Bereiche sein: %@." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Le réglage automatique choisira aléatoirement parmi les plages de ports valides indiquées ci-dessous.\nLe port personnalisé peut ętre n'importe quelle valeur dans les plages valides :\n%@" + "value" : "Le port personnalisé peut prendre n'importe quelle valeur dans les plages valides : %@." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Den automatiska inställningen kommer slumpmässigt att välja från de giltiga portintervall som visas nedan.\nDen anpassade porten kan vara valfritt värde inom de giltiga intervallen:\n%@" + "value" : "Den anpassade porten kan vara ett värde inom de giltiga intervallen: %@." } } } }, - "The entry and exit servers cannot be the same. Try changing one to a new server or location." : { + "The device will be removed from the list and logged out." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Die Ein- und Ausstiegsserver können nicht identisch sein. Versuchen Sie, einen zu einem neuen Server oder Standort zu wechseln." + "value" : "Das Gerät wird aus der Liste entfernt und abgemeldet." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Les serveurs d'entrée et de sortie ne peuvent pas être identiques. Essayez d'en changer un sur un nouveau serveur ou un nouvel emplacement." + "value" : "L'appareil sera supprimé de la liste et déconnecté." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Inmatnings- och utgångsservrarna kan inte vara desamma. Försök att ändra en till en ny server eller plats." + "value" : "Enheten kommer att tas bort från listan och loggas ut." } } } }, - "The entry server for multihop is currently overridden by DAITA. To select an entry server, please first enable “Direct only” or disable “DAITA” in the settings." : { + "The entry and exit servers cannot be the same. Try changing one to a new server or location." : { + + }, + "The entry server for %@ is currently overridden by %@. To select an entry server, please first enable “%@” or disable “%@“ in the settings." : { "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Der Einstiegsserver für Multihop wird derzeit von DAITA überschrieben. Um einen Eintragsserver auszuwählen, aktivieren Sie bitte zuerst „Nur Direkt“ oder deaktivieren Sie „DAITA“ in den Einstellungen." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Le serveur d'entrée pour le multisaut est actuellement remplacé par DAITA. Pour sélectionner un serveur d'entrée, veuillez d'abord activer \"Direct only\" ou désactiver \"DAITA\" dans les paramètres." - } - }, - "sv" : { + "en" : { "stringUnit" : { - "state" : "translated", - "value" : "Inmatningsservern för multihop är för närvarande åsidosatt av DAITA. För att välja en postserver, vänligen först aktivera “Direct only” eller inaktivera “DAITA” i inställningarna." + "state" : "new", + "value" : "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." } } } }, "The payment request was cancelled." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Die Zahlungsaufforderung wurde abgebrochen." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "La demande de paiement a été annulée." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Betalningsbegäran avbröts." - } - } - } + }, "The selected WireGuard port is not supported, please change it under **VPN settings**." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Der ausgewählte WireGuard-Port wird nicht unterstützt, bitte ändern Sie ihn unter **VPN-Einstellungen**." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Le port WireGuard sélectionné n'est pas pris en charge, veuillez le modifier dans les **paramètres VPN**." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Den valda WireGuard-porten stöds inte, vänligen ändra den under **VPN-inställningar**." - } - } - } + }, "The version of settings stored on device is unrecognized.Settings will be reset to defaults and the device will be logged out." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Die Version der auf dem Gerät gespeicherten Einstellungen ist nicht erkannt. Die Einstellungen werden auf die Standardwerte zurückgesetzt und das Gerät wird abgemeldet." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "La version des paramètres stockés sur l'appareil n'est pas reconnue. Les paramètres seront réinitialisés par défaut et l'appareil sera déconnecté." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Versionen av inställningar som lagras på enheten känns inte igen.Inställningar kommer att återställas till standardvärden och enheten kommer att loggas ut." - } - } - } + }, "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 wird, aber Mullvads Bridge-Server nicht." + "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 de Mullvad ne le sont pas." + "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:et är censurerat men Mullvads bryggservrar är det inte." + "value" : "Detta kan vara användbart om API:n är censurerad men Mullvads broservrar inte är det." } } } @@ -6270,177 +4167,157 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Cela peut être utile lorsque vous n'êtes pas affecté par la censure." + "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 censur." + "value" : "Detta kan vara användbart när du inte påverkas av censurering." } } } }, "This device is not allowed to make the payment." : { + + }, + "This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Dieses Gerät ist nicht berechtigt, die Zahlung durchzuführen." + "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" : "Cet appareil n'est pas autorisé à effectuer le paiement." + "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" : "Denna enhet är inte tillåten att göra betalningen." + "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 access to other devices on the local network, such as for sharing, printing, streaming, etc.\nAttention: toggling “Local network sharing” requires restarting the VPN connection." : { + "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" : "Diese Funktion ermöglicht den Zugriff auf andere Geräte im lokalen Netzwerk, wie zum Beispiel zum Teilen, Drucken, Streamen usw.\nAchtung: Das Umschalten von \"Lokales Netzwerkteilen\" erfordert einen Neustart der VPN-Verbindung." + "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é permet d'accéder à d'autres périphériques du réseau local, tels que le partage, l'impression, le streaming, etc.\nAttention : activer le « Partage de réseau local » nécessite un redémarrage de la connexion VPN." + "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" : "Den här funktionen ger åtkomst till andra enheter på det lokala nätverket, till exempel för att dela, skriva ut, strömma etc.\nObservera: växla mellan “Lokalt nätverk delning” kräver omstart av VPN-anslutningen." + "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 allows you to circumvent that censorship by adding custom ways to access the API via proxies and similar methods." : { + "This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers." : { "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 Proxies und ähnliche Methoden hinzufügen." + "value" : "Diese Funktion macht den WireGuard-Tunnel resistent gegen mögliche Angriffe von Quantencomputern." } }, "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 mandataires et des méthodes similaires." + "value" : "Cette fonctionnalité rend le tunnel WireGuard résistant aux attaques potentielles des ordinateurs quantiques." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Denna funktion gör att du kan kringgå censur genom att lägga till anpassade sätt att komma åt API:et via proxies och liknande metoder." + "value" : "Den här funktionen gör WireGuard-tunneln resistent mot potentiella attacker från kvantdatorer." } } } }, - "This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers.\nIt does this by performing an extra key exchange using a quantum safe algorithm and mixing the result into WireGuard’s regular encryption.\nThis extra step uses approximately 500 kiB of traffic every time a new tunnel is established." : { + "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" : "Dieses Feature macht den WireGuard-Tunnel gegen potentielle Angriffe von Quantencomputern resistent.\nDies geschieht, indem ein zusätzlicher Schlüsselaustausch mit einem quantensicheren Algorithmus durchgeführt wird und das Ergebnis in WireGuards regulärer Verschlüsselung gemischt wird.\nDieser zusätzliche Schritt verwendet bei jedem Bau eines neuen Tunnels etwa 500 kiB Verkehr." + "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." } }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Denna funktion gör WireGuard-tunneln resistent mot potentiella attacker från kvantdatorer.\nDet gör detta genom att utföra ett extra nyckelutbyte med hjälp av en kvantsäker algoritm och blanda resultatet i WireGuards vanliga kryptering.\nDetta extra steg använder cirka 500 kiB trafik varje gång en ny tunnel etableras." - } - } - } - }, - "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.\nYou can have up to 5 devices logged in on one Mullvad account.\nIf 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" : { + "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Dies ist der Name, der dem Gerät zugewiesen ist. Jedes Gerät, das sich auf einem Mullvad-Konto eingeloggt hat, erhält einen einzigartigen Namen, der Ihnen hilft, ihn zu identifizieren, wenn Sie Ihre Geräte in der App oder auf der Website verwalten.\nDu kannst bis zu 5 Geräte auf einem Mullvad Konto eingeloggt haben.\nWenn Sie sich abmelden, wird das Gerät und der Gerätename entfernt. Wenn Sie sich erneut anmelden, erhält das Gerät einen neuen Namen." + "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" : "Detta är namnet som tilldelats enheten. Varje enhet som är inloggad på ett Mullva-konto får ett unikt namn som hjälper dig att identifiera det när du hanterar dina enheter i appen eller på webbplatsen.\nDu kan ha upp till 5 enheter inloggade på ett Mullva-konto.\nOm du loggar ut tas enheten och enhetsnamnet bort. När du loggar in igen får enheten ett nytt namn." + "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 protokolliert alle Geräte, die dieses Konto nutzen, und alle VPN-Zugriffe werden verweigert, selbst wenn noch Zeit auf dem Konto bleibt. Geben Sie die letzten 4 Ziffern der Kontonummer ein und klicken Sie auf \"Konto löschen\", wenn Sie das Konto wirklich löschen möchten:" + "value" : "Dies kann bei bestimmten Websites, Diensten und Apps zu Problemen führen." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ceci déconnecte tous les appareils utilisant ce compte et tous les accès VPN seront refusés, même s'il reste du temps sur le compte. Entrez les 4 derniers chiffres du numéro de compte et cliquez sur \"Supprimer le compte\" si vous voulez vraiment supprimer le compte :" + "value" : "Cela peut causer des problèmes sur certains sites Web, services et applications." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Detta loggar ut alla enheter som använder detta konto och all VPN-åtkomst nekas även om det finns tid kvar på kontot. Ange de 4 sista siffrorna i kontonumret och tryck på \"Ta bort konto\" om du verkligen vill ta bort kontot:" + "value" : "Detta kan orsaka problem på vissa webbplatser, tjänster och appar." } } } }, "This voucher code has already been used." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Dieser Gutscheincode wurde bereits verwendet." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ce bon de réduction a déjà été utilisé." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Denna rabattkod har redan använts." - } - } - } + }, "Time left: %@" : { + + }, + "To add more, you will need to disconnect and access the Internet with an unsecure connection." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Verbleibende Zeit: %@" + "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" : "Temps restant : %@" + "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" : "Återstående tid: %@" + "value" : "Om du vill lägga till mer måste du koppla från och öppna internet med en oskyddad anslutning." } } } @@ -6450,19 +4327,19 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Um Ihnen besser zu helfen, schreiben Sie bitte auf Englisch oder Schwedisch und legen Sie fest, aus welchem Land Sie sich verbinden." + "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 mieux vous aider, écrivez en anglais ou en suédois et indiquez le pays depuis lequel vous vous connectez." + "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" : "För att hjälpa dig bättre, skriv gärna på engelska eller svenska och inkludera vilket land du ska ansluta från." + "value" : "Skriv på engelska eller svenska och ange från vilket land du är ansluten så att vi kan hjälpa dig bättre." } } } @@ -6472,107 +4349,91 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Um dies zu umgehen, können Sie eine Datei oder einen Text importieren, der von unserem Support-Team bereitgestellt wird mit neuen IP-Adressen, die die Standardadressen der Server in der Standortansicht auswählen überschreiben." + "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 éviter cela, vous pouvez importer un fichier ou un texte fourni par notre équipe de support. avec de nouvelles adresses IP qui remplacent les adresses par défaut des serveurs dans la vue Choisir un emplacement." + "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 en text, som tillhandahålls av vårt supportteam, med nya IP-adresser som åsidosätter standardadresserna för servrarna i Välj platsvy." + "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 create a custom list, tap on \"...\" " : { + "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" : "Um eine benutzerdefinierte Liste zu erstellen, tippen Sie auf \"...\" " + "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 créer une liste personnalisée, appuyez sur \"...\" " + "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" : "För att skapa en anpassad lista, tryck på \"...\" " + "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 \"...\" " : { + + }, "To enable this setting, add at least one server." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Um diese Einstellung zu aktivieren, fügen Sie mindestens einen Server hinzu." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Pour activer ce paramètre, ajoutez au moins un serveur." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "För att aktivera denna inställning, lägg till minst en server." - } - } - } + }, "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" : "Um Ihnen effektiver zu helfen, wird die Protokolldatei Ihrer App an diese Nachricht angehängt. Ihre Daten bleiben sicher und privat, da sie anonymisiert sind, bevor sie über einen verschlüsselten Kanal gesendet werden." + "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 vous aider plus efficacement, le fichier journal de votre application sera joint à ce message. Vos données resteront sécurisées et privées, car elles sont anonymes avant d'être envoyées par un canal chiffré." + "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 till detta meddelande. Dina uppgifter förblir säkra och privata, eftersom de är anonymiserade innan de skickas över en krypterad kanal." + "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. Either buy credit on our website or redeem a voucher." : { + "To start using the app, you first need to add time to your account." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Um die App zu verwenden, müssen Sie zuerst Zeit zu Ihrem Konto hinzufügen. Kaufen Sie ein Guthaben auf unserer Website oder einlösen Sie einen Gutschein." + "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. Achetez du crédit sur notre site Web ou utilisez un bon d'achat." + "value" : "Pour commencer à utiliser l'application, vous devez d'abord ajouter du temps à votre compte." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "För att börja använda appen måste du först lägga till tid på ditt konto. Antingen köpa kredit på vår webbplats eller lösa in en kupong." + "value" : "Om du vill börja använda appen måste du först lägga till tid i ditt konto." } } } @@ -6600,26 +4461,7 @@ } }, "Too many devices registered with account" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Zu viele Geräte mit Konto registriert" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Trop d'appareils enregistrés avec le compte" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "För många enheter registrerade med kontot" - } - } - } + }, "Trackers" : { "localizations" : { @@ -6629,12 +4471,6 @@ "value" : "Tracker" } }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Trackers" - } - }, "sv" : { "stringUnit" : { "state" : "translated", @@ -6654,7 +4490,7 @@ "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Réessayez" + "value" : "Réessayer" } }, "sv" : { @@ -6666,48 +4502,10 @@ } }, "TUNNEL ERROR" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "TUNNEL FEHLER" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "ERREUR DE TUNNEL" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "TUNNEL FEL" - } - } - } + }, "Tunnel is unset." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tunnel ist nicht gesetzt." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Le tunnel est désactivé." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tunneln är upplöst." - } - } - } + }, "Type" : { "localizations" : { @@ -6717,12 +4515,6 @@ "value" : "Typ" } }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Type de texte" - } - }, "sv" : { "stringUnit" : { "state" : "translated", @@ -6731,78 +4523,37 @@ } } }, + "UDP" : { + + }, "UDP-over-TCP" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "UDP-Over-TCP" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "UDP-sur-TCP" + "value" : "UDP über TCP" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "UDP-over-TCP" + "value" : "UDP över TCP" } } } }, "Unable to authenticate account. Please log out and log back in." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Konto konnte nicht authentifiziert werden. Bitte loggen Sie sich aus und melden Sie sich wieder an." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible d'authentifier le compte. Veuillez vous déconnecter et vous reconnecter." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Det går inte att autentisera kontot. Logga ut och logga in igen." - } - } - } + }, "Unable to start tunnel connection after update. Please disconnect and reconnect." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Tunnelverbindung kann nach dem Update nicht gestartet werden. Bitte trennen und erneut verbinden." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Impossible de démarrer la connexion du tunnel après la mise à jour. Veuillez vous déconnecter et vous reconnecter." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Det gick inte att starta tunnelanslutningen efter uppdatering. Vänligen koppla bort och återansluta." - } - } - } + }, "Unable to start tunnel connection. Please send a problem report." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Tunnelverbindung konnte nicht gestartet werden. Bitte senden Sie einen Fehlerbericht." + "value" : "Die Tunnelverbindung konnte nicht gestartet werden. Bitte senden Sie einen Problembericht." } }, "fr" : { @@ -6814,54 +4565,16 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Det gick inte att starta tunnelanslutningen. Skicka en felrapport." + "value" : "Det går inte att starta tunnelanslutning. Skicka en problemrapport." } } } }, "Unexpected server response: %1$@ (HTTP status: %2$d)" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Unerwartete Server-Antwort: %1$@ (HTTP-Status: %2$d)" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Réponse inattendue du serveur : %1$@ (statut HTTP : %2$d)" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Oväntat serversvar: %1$@ (HTTP-status: %2$d)" - } - } - } + }, "Unexpected server response: %d" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Unerwartete Server-Antwort: %d" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Réponse inattendue du serveur : %d" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Oväntat serversvar: %d" - } - } - } + }, "Unknown error." : { "localizations" : { @@ -6886,111 +4599,123 @@ } }, "Unsecured connection" : { + + }, + "Use custom DNS server" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ungesicherte Verbindung" + "value" : "Benutzerdefinierten DNS-Server verwenden" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Connexion non sécurisée" + "value" : "Utiliser un serveur DNS personnalisé" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Osäkrad anslutning" + "value" : "Använd anpassad DNS-server" } } } }, - "Use custom DNS server" : { + "Username" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Eigenen DNS-Server verwenden" + "value" : "Benutzername" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Utiliser un serveur DNS personnalisé" + "value" : "Nom d'utilisateur" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Använd anpassad DNS-server" + "value" : "Användarnamn" } } } }, - "Username" : { + "Valid range: %d - %d" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Benutzername" + "value" : "Gültiger Bereich: %1$d–%2$d" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Valid range: %1$d - %2$d" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nom d'utilisateur" + "value" : "Plage valide : %1$d - %2$d" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Användarnamn" + "value" : "Giltigt intervall: %1$d–%2$d" } } } }, - "Valid range: 1 - 65535" : { + "value" : { + + }, + "Verifying voucher..." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Valid range: 1 - 65535" + "value" : "Gutschein wird verifiziert ..." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Valid range: 1 - 65535" + "value" : "Vérification du bon…" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Valid range: 1 - 65535" + "value" : "Verifierar kupong ..." } } } }, - "Verifying voucher..." : { + "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" : "Gutschein wird überprüft..." + "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" : "Vérification du bon de réduction..." + "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" : "Verifierar kupong..." + "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." } } } @@ -7000,19 +4725,19 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "App-Logs anzeigen" + "value" : "App-Protokolle anzeigen" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Voir les journaux des applications" + "value" : "Afficher les journaux de l'application" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Visa app-loggar" + "value" : "Visa appens loggar" } } } @@ -7022,13 +4747,13 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Gutscheincode ist ungültig." + "value" : "Der Gutscheincode ist ungültig." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Le code du bon de réduction est invalide." + "value" : "Le code du bon n'est pas valide." } }, "sv" : { @@ -7044,13 +4769,13 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Gutschein wurde erfolgreich eingelöst." + "value" : "Der Gutschein wurde erfolgreich eingelöst." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Le bon a été utilisé avec succès." + "value" : "Le bon a bien été échangé." } }, "sv" : { @@ -7088,57 +4813,38 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Warnung: Der Malware-Blocker ist kein Anti-Virus und sollte nicht als solche behandelt werden. Dies ist nur eine zusätzliche Schutzschicht." + "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" : "Attention : Le bloqueur de logiciels malveillants n'est pas un anti-virus et ne doit pas être traité en tant que tel, il ne s'agit que d'une couche supplémentaire de protection." + "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: malware blockeraren är inte en anti-virus och bör inte behandlas som sådan, detta är bara ett extra lager av skydd." + "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" : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Wir haben einige Probleme, bitte versuchen Sie es später erneut" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Nous avons quelques problèmes, veuillez réessayer plus tard" - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Vi har några problem, försök igen senare" - } - } - } + }, "We will look into this." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Wir werden uns damit befassen." + "value" : "Wir werden uns das anschauen." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nous allons nous pencher sur cette question." + "value" : "Nous allons nous pencher dessus." } }, "sv" : { @@ -7150,33 +4856,14 @@ } }, "Welcome, this device is now called **%@**. For more details see the info button in Account." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Willkommen, dieses Gerät heißt jetzt **%@**. Für weitere Details siehe den Info-Button im Konto." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Bienvenue, cet appareil s'appelle maintenant **%@**. Pour plus de détails, consultez le bouton info dans le compte client." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Välkommen, denna enhet kallas nu **%@**. För mer information se knappen Info i Konto." - } - } - } + }, - "What's new" : { + "What’s new" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Was ist neu" + "value" : "Was ist neu?" } }, "fr" : { @@ -7193,72 +4880,59 @@ } } }, - "When this feature is enabled it stops the device from contacting certain domains or websites known for distributing ads, malware, trackers and more. \nThis might cause issues on certain websites, services, and apps.\nAttention: this setting cannot be used in combination with **Use custom DNS server**." : { + "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, hält es das Gerät davon ab, bestimmte Domains oder Websites zu kontaktieren, die für die Verbreitung von Werbung, Malware, Tracker und mehr bekannt sind. \nDies kann Probleme auf bestimmten Webseiten, Diensten und Apps verursachen.\nAchtung: diese Einstellung kann nicht in Kombination mit **Eigenen DNS-Server verwenden** verwendet werden." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "När den här funktionen är aktiverad stoppar den enheten från att kontakta vissa domäner eller webbplatser som är kända för att distribuera annonser, skadlig kod, trackers och mer. \nDetta kan orsaka problem på vissa webbplatser, tjänster och appar.\nObservera: den här inställningen kan inte användas i kombination med **Använd anpassad DNS-server**." - } - } - } - }, - "When using DAITA, one provider with DAITA-enabled servers is required." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Bei der Verwendung von DAITA ist ein Provider mit DAITA-fähigen Servern erforderlich." + "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" : "Lors de l'utilisation de DAITA, un fournisseur de serveurs activés par DAITA est requis." + "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" : "Vid användning av DAITA krävs en leverantör med DAITA-aktiverade servrar." + "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" : "Welcher TCP-Port das UDP-over-TCP-Obfuscation-Protokoll sich auf dem VPN-Server verbinden soll." + "value" : "Mit welchem TCP-Port sich das UDP-über-TCP-Verschleierungsprotokoll auf dem VPN-Server verbinden soll." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "À quel port TCP le protocole d'obfuscation UDP-over-TCP doit se connecter sur le serveur VPN." + "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 UDP-over-TCP obfuscation protokollet bör ansluta till på VPN-servern." + "value" : "Vilken TCP-port som UDP-över-TCP-obfuskeringsprotokoll bör ansluta till på VPN-servern." } } } }, - "WireGuard Obfuscation" : { + "WireGuard obfuscation" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "WireGuard Verschleierung" + "value" : "WireGuard-Verschleierung" } }, "fr" : { @@ -7270,122 +4944,125 @@ "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Trådvärnsförfalskning" + "value" : "WireGuard-obfuskering" } } } }, - "WireGuard ports" : { + "WireGuard port" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "WireGuard Ports" + "value" : "WireGuard-Port" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ports WireGuard" + "value" : "Port WireGuard" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "WireGuard portar" + "value" : "WireGuard-port" } } } }, - "With the \"Direct\" method, the app communicates with a Mullvad API server directly without any intermediate proxies." : { + "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 \"Direct\" Methode kommuniziert die App direkt mit einem Mullvad API Server ohne Zwischenproxies." + "value" : "Mit der Methode „Direkt“ kommuniziert die App direkt mit einem Mullvad API-Server ohne zwischengeschaltete Proxys." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Avec la méthode \"Direct\", l'application communique directement avec un serveur API Mullvad sans proxys intermédiaires." + "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 \"Direkt\" metoden kommunicerar appen med en Mullvads API-server direkt utan några mellanliggande proxier." + "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.\nIt does this by retrieving an address from a DNS over HTTPS (DoH) server and then using that to reach our API servers." : { + "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 \"Verschlüsselten DNS-Proxy-Methode\" wird die App über eine Proxy-Adresse mit unserer Mullvad-API kommunizieren.\nDies geschieht durch das Abrufen einer Adresse von einem DNS über den HTTPS (DoH) Server und die Verwendung dieser Adresse, um unsere API-Server zu erreichen." + "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 via une adresse proxy.\nIl fait cela en récupérant une adresse depuis un DNS via un serveur HTTPS (DoH) puis en utilisant cela pour atteindre nos serveurs API." + "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\" kommer appen att kommunicera med vårt Mullvad API genom en proxyadress.\nDet gör detta genom att hämta en adress från en DNS över HTTPS (DoH) server och sedan använda det för att nå våra API-servrar." + "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." : { + "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 der \"Mullvad Bridges\"-Methode kommuniziert die App mit einem Mullvad API-Server über einen Mullvad Bridge-Server. Sie tut dies, indem sie den Verkehr verschleiert von Shadowsocks." + "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" : "Avec la méthode \"pont Mullvad\", l'application communique avec un serveur API Mullvad via un serveur pont Mullvad. Il fait cela en envoyant le trafic obscurci par Shadowsocks." + "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 \"Mullvad bridges\"-metoden kommunicerar appen med en Mullvads API-server via en Mullvads bryggserver. Det gör detta genom att skicka trafiken fördunklad av Shadowsocks." + "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, fortfahren" + "value" : "Ja, von Gerät abmelden" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Oui, continuer" + "value" : "Oui, déconnecter l'appareil" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Ja, fortsätt" + "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.\nDo you want to create a new account?" : { + "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." : { @@ -7393,19 +5070,19 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Sie sind im Begriff, den Problembericht ohne eine Möglichkeit an Sie zu senden. Wenn Sie eine Antwort auf Ihren Bericht wünschen, müssen Sie eine E-Mail-Adresse eingeben." + "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 le rapport de problème sans que nous puissions vous répondre. Si vous voulez une réponse à votre signalement vous devrez entrer une adresse e-mail." + "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" : "Ni är på väg att skicka problemrapporten utan ett sätt för oss att återkomma till er. Om du vill ha ett svar på din rapport måste du ange en e-postadress." + "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." } } } @@ -7415,217 +5092,141 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Sie sind mit einer ungültigen Kontonummer angemeldet. Bitte melden Sie sich ab und versuchen Sie eine andere." + "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 êtes connecté avec un numéro de compte invalide. Veuillez vous déconnecter et essayer un autre." + "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 prova ett annat." + "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" : "Du kannst mehr Zeit über die Account-Ansicht oder Webseite hinzufügen, um das VPN weiter zu nutzen." + "value" : "Es sind pro Mullvad-Konto bis zu 5 angemeldete Geräte möglich." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Vous pouvez ajouter plus de temps via la vue du compte ou le site Web pour continuer à utiliser le VPN." + "value" : "Vous pouvez connecter jusqu'à 5 appareils au même compte Mullvad." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Du kan lägga till mer tid via kontovyn eller webbplatsen för att fortsätta använda VPN." + "value" : "Upp till fem enheter kan vara inloggade på ett Mullvad-konto." } } } }, - "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." : { + "You can now continue logging in on this device." : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Sie können die Funktion \"Wiederherstellungskäufe\" verwenden, um alle In-App-Zahlungen über Apple-Dienste zu überprüfen. Wenn eine Zahlung nicht gutgeschrieben wurde, wird die Zeit dem derzeit eingeloggten Mullvad-Konto hinzugefügt." + "value" : "Sie können jetzt mit der Anmeldung auf diesem Gerät fortfahren." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Vous pouvez utiliser la fonction \"restaurer les achats\" pour vérifier les paiements effectués via les services Apple. S'il y a un paiement qui n'a pas été crédité, il ajoutera le temps au compte actuellement connecté à Mullvad." + "value" : "Vous pouvez maintenant continuer la connexion sur cet appareil." } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Du kan använda funktionen \"återställ köp\" för att kontrollera eventuella in-app betalningar som görs via Apple-tjänster. Om det finns en betalning som inte har krediterats kommer den att lägga till tid till det inloggade Mullva-kontot." + "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." : { + + }, "You have %@ left on this account." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sie haben %@ auf diesem Konto übrig." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Il vous reste %@ sur ce compte." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Du har %@ kvar på detta konto." - } - } - } + }, - "You have no more VPN time left on this account. Either buy credit on our website or make an in-app purchase via the **Add time** button below." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Du hast keine VPN-Zeit mehr auf diesem Konto. Kaufen Sie entweder Guthaben auf unserer Website oder tätigen Sie einen In-App-Kauf über die Schaltfläche **Zeit hinzufügen** unten." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Il ne vous reste plus de temps VPN sur ce compte. Achetez du crédit sur notre site Web ou effectuez un achat dans l'application via le bouton **Ajouter du temps** ci-dessous." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Du har ingen mer VPN-tid kvar på detta konto. Antingen köpa kredit på vår webbplats eller göra ett in-app köp via **Lägg till tid** knappen nedan." - } - } - } + "You have a right to privacy. That’s why we never store activity logs, don’t ask for personal information, and encourage anonymous payments.\n\nIn some situations, as outlined in our privacy policy, we might process personal data that you choose to send, for example if you email us.\n\nWe strongly believe in retaining as little data as possible because we want you to remain anonymous." : { + }, - "You have no more VPN time left on this account. To add more, you will need to disconnect and access the Internet with an unsecure connection." : { + "You have no more VPN time left on this account. " : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Du hast keine VPN-Zeit mehr auf diesem Konto. Um mehr hinzuzufügen, müssen Sie die Verbindung trennen und mit einer unsicheren Verbindung auf das Internet zugreifen." + "value" : "Sie haben keine VPN-Zeit mehr auf diesem Konto. " } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Il ne vous reste plus de temps VPN sur ce compte. Pour en ajouter plus, vous devrez vous déconnecter et accéder à Internet avec une connexion non sécurisée." + "value" : "Vous n'avez plus de temps de VPN sur ce compte. " } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Du har ingen mer VPN-tid kvar på detta konto. För att lägga till mer, måste du koppla bort och komma åt Internet med en osäker anslutning." + "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." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Du hast noch einen Tag auf diesem Konto. Bitte füge mehr Zeit hinzu, um das VPN weiter zu nutzen." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Il vous reste un jour sur ce compte. Veuillez ajouter plus de temps pour continuer à utiliser le VPN." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Du har en dag kvar på detta konto. Lägg till mer tid för att fortsätta använda 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 wieder anmelden." + "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. Pour vous reconnecter, vous devrez vous reconnecter." + "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. För att ansluta igen måste du logga in igen." + "value" : "Du har tagit bort den här enheten. Du måste logga in igen för att återansluta." } } } }, "You have unsaved changes." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Sie haben ungespeicherte Änderungen." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Vous avez des modifications non enregistrées." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Du har osparade ändringar." - } - } - } + }, "You’re all set!!" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Du bist alles!!" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Vous êtes prêt !!" + "value" : "Sie sind startklar!!" } }, "sv" : { "stringUnit" : { "state" : "translated", - "value" : "Ni är alla klara!" + "value" : "Du är klar!!" } } } @@ -7635,57 +5236,38 @@ "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ihr Gerät ist offline. Der Tunnel verbindet sich automatisch, sobald Ihr Gerät wieder online ist." + "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 que votre appareil sera de nouveau connecté." + "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 enheten är online." + "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." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ihr Gerät ist offline. Versuchen Sie sich erneut zu verbinden, wenn das Gerät Zugang zum Internet hat." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Votre appareil est hors ligne. Essayez de vous connecter à nouveau lorsque l'appareil a accès à Internet." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Din enhet är offline. Försök ansluta igen när enheten har tillgång till Internet." - } - } - } + }, "Your email (optional)" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ihre E-Mail (optional)" + "value" : "Ihre E-Mail-Adresse (optional)" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Votre adresse e-mail (facultatif)" + "value" : "Votre e-mail (facultatif)" } }, "sv" : { @@ -7697,48 +5279,10 @@ } }, "Your previous purchases have already been added to this account." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ihre bisherigen Käufe wurden diesem Konto bereits hinzugefügt." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Vos achats précédents ont déjà été ajoutés à ce compte." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Dina tidigare köp har redan lagts till i detta konto." - } - } - } + }, "Your purchase was successfully refunded." : { - "localizations" : { - "de" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ihr Kauf wurde erfolgreich zurückerstattet." - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Votre achat a été remboursé avec succès." - } - }, - "sv" : { - "stringUnit" : { - "state" : "translated", - "value" : "Ditt köp har återbetalats." - } - } - } + } }, "version" : "1.0" diff --git a/ios/MullvadTypes/TransportLayer.swift b/ios/MullvadTypes/TransportLayer.swift index 027b6e4d2e..eccbff48f8 100644 --- a/ios/MullvadTypes/TransportLayer.swift +++ b/ios/MullvadTypes/TransportLayer.swift @@ -11,4 +11,13 @@ import Foundation public enum TransportLayer: Codable, Sendable { case udp case tcp + + public var name: String { + switch self { + case .udp: + NSLocalizedString("UDP", comment: "") + case .tcp: + NSLocalizedString("TCP", comment: "") + } + } } diff --git a/ios/MullvadVPN.xcodeproj/project.pbxproj b/ios/MullvadVPN.xcodeproj/project.pbxproj index 1cb47be61b..191542b5e9 100644 --- a/ios/MullvadVPN.xcodeproj/project.pbxproj +++ b/ios/MullvadVPN.xcodeproj/project.pbxproj @@ -489,7 +489,6 @@ 7A1A26472A29CF0800B978AA /* RelayFilterDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A1A26462A29CF0800B978AA /* RelayFilterDataSource.swift */; }; 7A1A26492A29D48A00B978AA /* RelayFilterCellFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A1A26482A29D48A00B978AA /* RelayFilterCellFactory.swift */; }; 7A21DACF2A30AA3700A787A9 /* UITextField+Appearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A21DACE2A30AA3700A787A9 /* UITextField+Appearance.swift */; }; - 7A27E3C92CAE85710088BCFF /* SettingsInfoButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A27E3C82CAE85660088BCFF /* SettingsInfoButtonItem.swift */; }; 7A27E3CB2CAE861D0088BCFF /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A27E3CA2CAE86170088BCFF /* SettingsViewModel.swift */; }; 7A27E3CD2CB814EF0088BCFF /* DAITAInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A27E3CC2CB814EA0088BCFF /* DAITAInfoView.swift */; }; 7A27E3CF2CBD4A8C0088BCFF /* SelectableSettingsDetailsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A27E3CE2CBD4A830088BCFF /* SelectableSettingsDetailsCell.swift */; }; @@ -968,17 +967,6 @@ F04413622BA45CE30018A6EE /* CustomListLocationNodeBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = F04413602BA45CD70018A6EE /* CustomListLocationNodeBuilder.swift */; }; F04789ED2E3A4FEB0011E3A5 /* ApplicationLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = F04789EB2E3A4FEB0011E3A5 /* ApplicationLanguage.swift */; }; F048BFA22D31843000251CB9 /* ChangeLogModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F048BFA12D31842B00251CB9 /* ChangeLogModel.swift */; }; - F04A66F92E4B44EC0081C89C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */; }; - F04A66FA2E4B44EC0081C89C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */; }; - F04A66FB2E4B44EC0081C89C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */; }; - F04A66FC2E4B44EC0081C89C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */; }; - F04A66FD2E4B44EC0081C89C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */; }; - F04A66FE2E4B44EC0081C89C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */; }; - F04A66FF2E4B44EC0081C89C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */; }; - F04A67002E4B44EC0081C89C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */; }; - F04A67012E4B44EC0081C89C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */; }; - F04A67022E4B44EC0081C89C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */; }; - F04A67032E4B44EC0081C89C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */; }; F04AF92D2C466013004A8314 /* EphemeralPeerNegotiationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = F04AF92C2C466013004A8314 /* EphemeralPeerNegotiationState.swift */; }; F04FBE612A8379EE009278D7 /* AppPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = F04FBE602A8379EE009278D7 /* AppPreferences.swift */; }; F050AE4E2B70D7F8003F4EDB /* LocationCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F050AE4D2B70D7F8003F4EDB /* LocationCellViewModel.swift */; }; @@ -1074,6 +1062,17 @@ F0B894F12BF751E300817A42 /* RelayWithDistance.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0B894F02BF751E300817A42 /* RelayWithDistance.swift */; }; F0B894F32BF7526700817A42 /* RelaySelector+Wireguard.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0B894F22BF7526700817A42 /* RelaySelector+Wireguard.swift */; }; F0B894F52BF7528700817A42 /* RelaySelector+Shadowsocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0B894F42BF7528700817A42 /* RelaySelector+Shadowsocks.swift */; }; + F0BC1E852E701C5A001CA97A /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */; }; + F0BC1E862E701CA1001CA97A /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */; }; + F0BC1E872E701CA1001CA97A /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */; }; + F0BC1E882E701CA1001CA97A /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */; }; + F0BC1E892E701CA1001CA97A /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */; }; + F0BC1E8A2E701CA1001CA97A /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */; }; + F0BC1E8B2E701CA1001CA97A /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */; }; + F0BC1E8C2E701CA1001CA97A /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */; }; + F0BC1E8D2E701CA1001CA97A /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */; }; + F0BC1E8E2E701CA1001CA97A /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */; }; + F0BC1E8F2E701D82001CA97A /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */; }; F0BE65372B9F136A005CC385 /* LocationSectionHeaderFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0BE65362B9F136A005CC385 /* LocationSectionHeaderFooterView.swift */; }; F0C13FE42C64F7CB00BD087D /* DAITASettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C13FE32C64F7CB00BD087D /* DAITASettings.swift */; }; F0C13FE62C64FB3400BD087D /* TunnelSettingsV6.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C13FE52C64FB3400BD087D /* TunnelSettingsV6.swift */; }; @@ -2079,7 +2078,6 @@ 7A1A26482A29D48A00B978AA /* RelayFilterCellFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayFilterCellFactory.swift; sourceTree = "<group>"; }; 7A1A264A2A29D65E00B978AA /* SelectableSettingsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectableSettingsCell.swift; sourceTree = "<group>"; }; 7A21DACE2A30AA3700A787A9 /* UITextField+Appearance.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITextField+Appearance.swift"; sourceTree = "<group>"; }; - 7A27E3C82CAE85660088BCFF /* SettingsInfoButtonItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsInfoButtonItem.swift; sourceTree = "<group>"; }; 7A27E3CA2CAE86170088BCFF /* SettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = "<group>"; }; 7A27E3CC2CB814EA0088BCFF /* DAITAInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DAITAInfoView.swift; sourceTree = "<group>"; }; 7A27E3CE2CBD4A830088BCFF /* SelectableSettingsDetailsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectableSettingsDetailsCell.swift; sourceTree = "<group>"; }; @@ -2446,7 +2444,6 @@ F04413602BA45CD70018A6EE /* CustomListLocationNodeBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomListLocationNodeBuilder.swift; sourceTree = "<group>"; }; F04789EB2E3A4FEB0011E3A5 /* ApplicationLanguage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationLanguage.swift; sourceTree = "<group>"; }; F048BFA12D31842B00251CB9 /* ChangeLogModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeLogModel.swift; sourceTree = "<group>"; }; - F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; }; F04AF92C2C466013004A8314 /* EphemeralPeerNegotiationState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EphemeralPeerNegotiationState.swift; sourceTree = "<group>"; }; F04DD3D72C130DF600E03E28 /* TunnelSettingsManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TunnelSettingsManager.swift; sourceTree = "<group>"; }; F04FBE602A8379EE009278D7 /* AppPreferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppPreferences.swift; sourceTree = "<group>"; }; @@ -2526,6 +2523,7 @@ F0B894F02BF751E300817A42 /* RelayWithDistance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayWithDistance.swift; sourceTree = "<group>"; }; F0B894F22BF7526700817A42 /* RelaySelector+Wireguard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RelaySelector+Wireguard.swift"; sourceTree = "<group>"; }; F0B894F42BF7528700817A42 /* RelaySelector+Shadowsocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RelaySelector+Shadowsocks.swift"; sourceTree = "<group>"; }; + F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; }; F0BE65362B9F136A005CC385 /* LocationSectionHeaderFooterView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationSectionHeaderFooterView.swift; sourceTree = "<group>"; }; F0BEFD1F2E4A327A00C19030 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = "<group>"; }; F0C13FE32C64F7CB00BD087D /* DAITASettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DAITASettings.swift; sourceTree = "<group>"; }; @@ -3284,7 +3282,6 @@ 7A83C4012A57FAA800DFB83A /* SettingsDNSInfoCell.swift */, 584D26C5270C8741004EA533 /* SettingsDNSTextCell.swift */, 7AC8A3AD2ABC6FBB00DC4939 /* SettingsHeaderView.swift */, - 7A27E3C82CAE85660088BCFF /* SettingsInfoButtonItem.swift */, 7A42DEC82A05164100B209BE /* SettingsInputCell.swift */, 58677711290976FB006F721F /* SettingsInteractor.swift */, 5867770F290975E8006F721F /* SettingsInteractorFactory.swift */, @@ -4236,7 +4233,7 @@ children = ( 5859A55429CD9DD800F66591 /* changes.txt */, 587DCCEE287D84A500CE821E /* countries.geo.json */, - F04A66F82E4B44EC0081C89C /* Localizable.xcstrings */, + F0BC1E842E701C5A001CA97A /* Localizable.xcstrings */, ); path = Assets; sourceTree = "<group>"; @@ -5668,7 +5665,7 @@ files = ( 062B45A328FD4CA700746E77 /* le_root_cert.cer in Resources */, 7A95B67B2D5F758300687524 /* relays.json in Resources */, - F04A66FC2E4B44EC0081C89C /* Localizable.xcstrings in Resources */, + F0BC1E882E701CA1001CA97A /* Localizable.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5690,7 +5687,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F04A66FF2E4B44EC0081C89C /* Localizable.xcstrings in Resources */, + F0BC1E8B2E701CA1001CA97A /* Localizable.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5706,11 +5703,11 @@ buildActionMask = 2147483647; files = ( A9BA08312BA32FA9005A7A2D /* PrivacyInfo.xcprivacy in Resources */, - F04A66F92E4B44EC0081C89C /* Localizable.xcstrings in Resources */, 7A83C3FF2A55B72E00DFB83A /* MullvadVPNApp.xctestplan in Resources */, 58727283265D173C00F315B2 /* LaunchScreen.storyboard in Resources */, 5859A55529CD9DD900F66591 /* changes.txt in Resources */, 587DCCEF287D84A500CE821E /* countries.geo.json in Resources */, + F0BC1E852E701C5A001CA97A /* Localizable.xcstrings in Resources */, 58CE5E6B224146210008646E /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -5719,8 +5716,8 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + F0BC1E862E701CA1001CA97A /* Localizable.xcstrings in Resources */, A9BA08322BA32FB6005A7A2D /* PrivacyInfo.xcprivacy in Resources */, - F04A66FA2E4B44EC0081C89C /* Localizable.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5728,7 +5725,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F04A66FB2E4B44EC0081C89C /* Localizable.xcstrings in Resources */, + F0BC1E872E701CA1001CA97A /* Localizable.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5736,7 +5733,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F04A66FD2E4B44EC0081C89C /* Localizable.xcstrings in Resources */, + F0BC1E892E701CA1001CA97A /* Localizable.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5744,7 +5741,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F04A66FE2E4B44EC0081C89C /* Localizable.xcstrings in Resources */, + F0BC1E8A2E701CA1001CA97A /* Localizable.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5759,7 +5756,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F04A67012E4B44EC0081C89C /* Localizable.xcstrings in Resources */, + F0BC1E8D2E701CA1001CA97A /* Localizable.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5781,7 +5778,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F04A67032E4B44EC0081C89C /* Localizable.xcstrings in Resources */, + F0BC1E8F2E701D82001CA97A /* Localizable.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5796,7 +5793,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F04A67002E4B44EC0081C89C /* Localizable.xcstrings in Resources */, + F0BC1E8C2E701CA1001CA97A /* Localizable.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5804,7 +5801,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F04A67022E4B44EC0081C89C /* Localizable.xcstrings in Resources */, + F0BC1E8E2E701CA1001CA97A /* Localizable.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6741,7 +6738,6 @@ 58293FAE2510CA58005D0BB5 /* ProblemReportViewController.swift in Sources */, 58B9EB152489139B00095626 /* RESTError+Display.swift in Sources */, 587B753F2668E5A700DEF7E9 /* NotificationContainerView.swift in Sources */, - 7A27E3C92CAE85710088BCFF /* SettingsInfoButtonItem.swift in Sources */, 58F2E144276A13F300A79513 /* StartTunnelOperation.swift in Sources */, 58CCA01E2242787B004F3011 /* AccountTextField.swift in Sources */, 586E54FB27A2DF6D0029B88B /* SendTunnelProviderMessageOperation.swift in Sources */, @@ -7786,12 +7782,13 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; SWIFT_VERSION = 6.0; @@ -7848,12 +7845,13 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = NO; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; SWIFT_VERSION = 6.0; @@ -8500,12 +8498,13 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; SWIFT_VERSION = 6.0; @@ -8973,6 +8972,7 @@ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG MULLVAD_ENVIRONMENT_STAGING"; + SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_OBJC_BRIDGING_HEADER = "$(PROJECT_DIR)/MullvadVPNUITests/BridgingHeader.h"; SWIFT_VERSION = 6.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -8997,6 +8997,7 @@ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = MULLVAD_ENVIRONMENT_PRODUCTION; + SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_OBJC_BRIDGING_HEADER = "$(PROJECT_DIR)/MullvadVPNUITests/BridgingHeader.h"; SWIFT_VERSION = 6.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -9357,11 +9358,12 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; SWIFT_VERSION = 6.0; diff --git a/ios/MullvadVPN/Coordinators/ChangeLogCoordinator.swift b/ios/MullvadVPN/Coordinators/ChangeLogCoordinator.swift index 7e56893c16..8f4a01e3dd 100644 --- a/ios/MullvadVPN/Coordinators/ChangeLogCoordinator.swift +++ b/ios/MullvadVPN/Coordinators/ChangeLogCoordinator.swift @@ -34,7 +34,7 @@ final class ChangeLogCoordinator: Coordinator, Presentable, SettingsChildCoordin func start(animated: Bool) { let changeLogViewController = UIHostingController(rootView: ChangeLogView(viewModel: viewModel)) changeLogViewController.view.setAccessibilityIdentifier(.changeLogAlert) - changeLogViewController.navigationItem.title = NSLocalizedString("What's new", comment: "") + changeLogViewController.navigationItem.title = NSLocalizedString("What’s new", comment: "") switch route { case .changelog: diff --git a/ios/MullvadVPN/Coordinators/CustomLists/CustomListViewController.swift b/ios/MullvadVPN/Coordinators/CustomLists/CustomListViewController.swift index 6fd41488d5..4ad6713ef1 100644 --- a/ios/MullvadVPN/Coordinators/CustomLists/CustomListViewController.swift +++ b/ios/MullvadVPN/Coordinators/CustomLists/CustomListViewController.swift @@ -158,7 +158,10 @@ class CustomListViewController: UIViewController { private func onDelete() { let message = NSMutableAttributedString( - markdownString: NSLocalizedString("Do you want to delete the list **\(subject.value.name)**?", comment: ""), + markdownString: String( + format: NSLocalizedString("Do you want to delete the list **%@**?", comment: ""), + subject.value.name + ), options: MarkdownStylingOptions(font: .preferredFont(forTextStyle: .body)) ) diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift index cc15a2cadc..68510213cc 100644 --- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift +++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/EditAccessMethodViewController.swift @@ -393,7 +393,7 @@ extension EditAccessMethodViewController: UITableViewDelegate { let presentation = AlertPresentation( id: "api-access-methods-delete-method-alert", icon: .alert, - message: NSLocalizedString("Delete \(methodName)?", comment: ""), + message: String(format: NSLocalizedString("Delete %@?", comment: ""), methodName), buttons: [ AlertAction( title: NSLocalizedString("Delete", comment: ""), diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/MethodSettings/MethodSettingsViewController.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/MethodSettings/MethodSettingsViewController.swift index b66580800c..c2bfdc30de 100644 --- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/MethodSettings/MethodSettingsViewController.swift +++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Edit/MethodSettings/MethodSettingsViewController.swift @@ -316,7 +316,7 @@ class MethodSettingsViewController: UITableViewController { id: "api-access-methods-testing-status-failed-alert", accessibilityIdentifier: .accessMethodUnreachableAlert, icon: .warning, - message: NSLocalizedString("API could not be reached, save anyway?", comment: ""), + message: NSLocalizedString("API unreachable, save anyway?", comment: ""), buttons: [ AlertAction( title: NSLocalizedString("Save anyway", comment: ""), diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodCoordinator.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodCoordinator.swift index e6f8319a73..0b025e5565 100644 --- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodCoordinator.swift +++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodCoordinator.swift @@ -89,24 +89,18 @@ class ListAccessMethodCoordinator: Coordinator, Presenting, SettingsChildCoordin ) let body = [ NSLocalizedString( - """ - The app needs to communicate with a Mullvad API server to log you in, fetch server lists, \ - and other critical operations. - """, + "The app needs to communicate with a Mullvad API server to log you in, " + + "fetch server lists, and other critical operations.", comment: "" ), NSLocalizedString( - """ - On some networks, where various types of censorship are being used, the API servers might \ - not be directly reachable. - """, + "On some networks, where various types of censorship are being used, " + + "the API servers might not be directly reachable.", comment: "" ), NSLocalizedString( - """ - This feature allows you to circumvent that censorship by adding custom ways to access the \ - API via proxies and similar methods. - """, + "This feature allows you to circumvent that censorship by adding custom ways " + + "to access the API via proxies and similar methods.", comment: "" ), ] diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodViewModel.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodViewModel.swift index a9797fac7f..4224fc0f74 100644 --- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodViewModel.swift +++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/Models/AccessMethodViewModel.swift @@ -113,10 +113,8 @@ extension AccessMethodViewModel { preamble: NSLocalizedString("The app communicates with a Mullvad API server directly.", comment: ""), body: [ NSLocalizedString( - """ - With the "Direct" method, the app communicates with a Mullvad API server \ - directly without any intermediate proxies. - """, + "With the “Direct” method, the app communicates with a Mullvad API " + + "server directly without any intermediate proxies.", comment: "" ), NSLocalizedString("This can be useful when you are not affected by censorship.", comment: ""), @@ -131,10 +129,8 @@ extension AccessMethodViewModel { ), body: [ NSLocalizedString( - """ - 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. - """, + "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.", comment: "" ), NSLocalizedString( @@ -152,20 +148,16 @@ extension AccessMethodViewModel { ), body: [ NSLocalizedString( - """ - 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. - """, + "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.", 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/SettingsDAITAView.swift b/ios/MullvadVPN/Coordinators/Settings/DAITA/SettingsDAITAView.swift index ce014999a2..7422b25391 100644 --- a/ios/MullvadVPN/Coordinators/Settings/DAITA/SettingsDAITAView.swift +++ b/ios/MullvadVPN/Coordinators/Settings/DAITA/SettingsDAITAView.swift @@ -44,13 +44,16 @@ struct SettingsDAITAView<ViewModel>: View where ViewModel: TunnelSettingsObserva } SettingsRowViewFooter( - text: NSLocalizedString( - """ - By enabling "Direct only" you will have to manually select a server that \ - is DAITA-enabled. Multihop won't automatically be used to enable DAITA with \ - any server. - """, - comment: "" + text: String( + format: + NSLocalizedString( + "By enabling “%@” you will have to manually select a server that is %@-enabled. " + + "%@ won't automatically be used to enable DAITA with any server.", + comment: "" + ), + NSLocalizedString("Direct only", comment: ""), + NSLocalizedString("DAITA", comment: ""), + NSLocalizedString("Multihop", comment: "") ) ) } @@ -100,40 +103,53 @@ extension SettingsDAITAView { extension SettingsDAITAView { private var dataViewModel: SettingsInfoViewModel { - SettingsInfoViewModel( + let daitafullTitle = NSLocalizedString("Defense against AI-guided Traffic Analysis", comment: "") + let daitaTitle = NSLocalizedString("DAITA", comment: "") + return SettingsInfoViewModel( pages: [ SettingsInfoViewModelPage( - body: NSLocalizedString( - """ - **Attention: This increases network traffic and will also negatively affect speed, latency, \ - and battery usage. Use with caution on limited plans.** - - DAITA (Defense against AI-guided Traffic Analysis) hides patterns in \ - your encrypted VPN traffic. - - 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). - """, - comment: "" - ), + body: [ + NSLocalizedString( + "**Attention: This increases network traffic and will also negatively affect " + + "speed, latency, and battery usage. Use with caution on limited plans.**", + comment: "" + ), + String( + format: NSLocalizedString( + "%@ (%@) hides patterns in your encrypted VPN traffic.", + comment: "" + ), + daitaTitle, + daitafullTitle + ), + NSLocalizedString( + "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).", + comment: "" + ), + ].joinedParagraphs(), image: .daitaOffIllustration ), SettingsInfoViewModelPage( - body: NSLocalizedString( - """ - If an observer monitors these data packets, DAITA makes it significantly \ - harder for them to identify which websites you are visiting or with whom \ - you are communicating. - - DAITA does this by carefully adding network noise and making all network \ - packets the same size. - - Not all our servers are DAITA-enabled. Therefore, we use multihop \ - automatically to enable DAITA with any server. - - """, - comment: "" - ), + body: [ + String(format: NSLocalizedString( + "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.", + comment: "" + ), daitaTitle), + String(format: NSLocalizedString( + "%@ does this by carefully adding network noise and making " + + "all network packets the same size.", + comment: "" + ), daitaTitle), + String(format: NSLocalizedString( + "Not all our servers are %@-enabled. Therefore, we use multihop " + + "automatically to enable %@ with any server.", + comment: "" + ), daitaTitle, daitaTitle), + ].joinedParagraphs(), image: .daitaOnIllustration ), ] diff --git a/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideCoordinator.swift b/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideCoordinator.swift index 60e6ece8c6..7a9fcb90b0 100644 --- a/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideCoordinator.swift +++ b/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideCoordinator.swift @@ -78,16 +78,13 @@ extension IPOverrideCoordinator: @preconcurrency IPOverrideViewControllerDelegat comment: "" ), NSLocalizedString( - """ - 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. - """, + "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.", comment: "" ), NSLocalizedString( - """ - If you are having issues connecting to VPN servers, please contact support. - """, + "If you are having issues connecting to VPN servers, please contact support.", comment: "" ), ] diff --git a/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatus.swift b/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatus.swift index c09dea3f0d..5639f7043c 100644 --- a/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatus.swift +++ b/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideStatus.swift @@ -17,8 +17,10 @@ enum IPOverrideStatus: Equatable, CustomStringConvertible { // Used in "statusDescription" below to form a complete sentence and therefore not localized here. var description: String { switch self { - case .file: "of file" - case .text: "via text" + case .file: + NSLocalizedString("file", comment: "") + case .text: + NSLocalizedString("text", comment: "") } } } @@ -59,12 +61,12 @@ enum IPOverrideStatus: Equatable, CustomStringConvertible { "" case let .importFailed(context): String( - format: NSLocalizedString("Import %@ was unsuccessful, please try again.", comment: ""), + format: NSLocalizedString("Import of %@ was unsuccessful, please try again.", comment: ""), context.description ) case let .importSuccessful(context): String( - format: NSLocalizedString("Import %@ was successful, overrides are now active.", comment: ""), + format: NSLocalizedString("Import of %@ was successful, overrides are now active.", comment: ""), context.description ) } diff --git a/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideViewController.swift b/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideViewController.swift index 73df4fd447..287f054b45 100644 --- a/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideViewController.swift +++ b/ios/MullvadVPN/Coordinators/Settings/IPOverride/IPOverrideViewController.swift @@ -102,7 +102,7 @@ class IPOverrideViewController: UIViewController { private func addHeaderView() { let body = NSLocalizedString( - "Import files or text with the new IP addresses for the servers in the Select location view.", + "Import files or text with new IP addresses for the servers in the Select location view.", comment: "" ) let link = NSLocalizedString("About Server IP override...", comment: "") @@ -143,10 +143,7 @@ class IPOverrideViewController: UIViewController { icon: .alert, title: NSLocalizedString("Clear all overrides?", comment: ""), message: NSLocalizedString( - """ - Clearing the imported overrides changes the server IPs, in the Select location view, \ - back to default. - """, + "Clearing the imported overrides changes the server IPs, in the Select location view, back to default.", comment: "" ), buttons: [ diff --git a/ios/MullvadVPN/Coordinators/Settings/SettingsCoordinator.swift b/ios/MullvadVPN/Coordinators/Settings/SettingsCoordinator.swift index b7435b0656..5124c541ba 100644 --- a/ios/MullvadVPN/Coordinators/Settings/SettingsCoordinator.swift +++ b/ios/MullvadVPN/Coordinators/Settings/SettingsCoordinator.swift @@ -258,8 +258,7 @@ final class SettingsCoordinator: Coordinator, Presentable, Presenting, SettingsV private func makeChild(for route: SettingsNavigationRoute) -> SettingsViewControllerFactory.MakeChildResult { if route == .root { let controller = SettingsViewController( - interactor: interactorFactory.makeSettingsInteractor(), - alertPresenter: AlertPresenter(context: self) + interactor: interactorFactory.makeSettingsInteractor() ) controller.delegate = self return .viewController(controller) diff --git a/ios/MullvadVPN/Coordinators/Settings/Views/SettingsInfoView.swift b/ios/MullvadVPN/Coordinators/Settings/Views/SettingsInfoView.swift index 4e43614302..8eebb0d481 100644 --- a/ios/MullvadVPN/Coordinators/Settings/Views/SettingsInfoView.swift +++ b/ios/MullvadVPN/Coordinators/Settings/Views/SettingsInfoView.swift @@ -51,10 +51,11 @@ struct SettingsInfoView: View { } private func bodyText(_ page: SettingsInfoViewModelPage) -> some View { - (try? AttributedString( - markdown: page.body, + let message = page.body + return (try? AttributedString( + markdown: message, options: AttributedString.MarkdownParsingOptions(interpretedSyntax: .inlineOnlyPreservingWhitespace) - )).map(Text.init) ?? Text(page.body) + )).map(Text.init) ?? Text(message) } private func contentView() -> some View { diff --git a/ios/MullvadVPN/Coordinators/WelcomeCoordinator.swift b/ios/MullvadVPN/Coordinators/WelcomeCoordinator.swift index 34a656047f..6047763799 100644 --- a/ios/MullvadVPN/Coordinators/WelcomeCoordinator.swift +++ b/ios/MullvadVPN/Coordinators/WelcomeCoordinator.swift @@ -82,12 +82,7 @@ final class WelcomeCoordinator: Coordinator, Poppable, Presenting { extension WelcomeCoordinator: @preconcurrency WelcomeViewControllerDelegate { func didRequestToShowFailToFetchProducts(controller: WelcomeViewController) { - let message = NSLocalizedString( - """ - Failed to connect to App store, please try again later. - """, - comment: "" - ) + let message = NSLocalizedString("Failed to connect to App store, please try again later.", comment: "") let presentation = AlertPresentation( id: "welcome-failed-to-fetch-products-alert", @@ -106,17 +101,19 @@ extension WelcomeCoordinator: @preconcurrency WelcomeViewControllerDelegate { } func didRequestToShowInfo(controller: WelcomeViewController) { - let message = NSLocalizedString( - """ - 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. - You can have up to 5 devices logged in on one Mullvad account. - 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. - """, + let message = [NSLocalizedString( + "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.", comment: "" - ) + ), NSLocalizedString( + "You can have up to 5 devices logged in on one Mullvad account.", + comment: "" + ), NSLocalizedString( + "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.", + comment: "" + )].joinedParagraphs(lineBreaks: 1) let presentation = AlertPresentation( id: "welcome-device-name-alert", diff --git a/ios/MullvadVPN/Extensions/String+Helpers.swift b/ios/MullvadVPN/Extensions/String+Helpers.swift index 3241c7442b..3f68489b72 100644 --- a/ios/MullvadVPN/Extensions/String+Helpers.swift +++ b/ios/MullvadVPN/Extensions/String+Helpers.swift @@ -24,3 +24,10 @@ extension String { return self.size(withAttributes: fontAttributes).width } } + +extension Array where Element == String { + func joinedParagraphs(lineBreaks: Int = 2) -> String { + let separator = String(repeating: "\n", count: lineBreaks) + return self.joined(separator: separator) + } +} diff --git a/ios/MullvadVPN/Notifications/Notification Providers/AccountExpirySystemNotificationProvider.swift b/ios/MullvadVPN/Notifications/Notification Providers/AccountExpirySystemNotificationProvider.swift index b106c7fe42..04d209631d 100644 --- a/ios/MullvadVPN/Notifications/Notification Providers/AccountExpirySystemNotificationProvider.swift +++ b/ios/MullvadVPN/Notifications/Notification Providers/AccountExpirySystemNotificationProvider.swift @@ -149,10 +149,8 @@ extension AccountExpirySystemNotificationProvider { private var expiredText: String { NSLocalizedString( - """ - Blocking internet: Your time on this account has expired. To continue using the internet, \ - please add more time or disconnect the VPN. - """, + "Blocking internet: Your time on this account has expired. " + + "To continue using the internet, please add more time or disconnect the VPN.", comment: "" ) } diff --git a/ios/MullvadVPN/Notifications/Notification Providers/LatestChangesNotificationProvider.swift b/ios/MullvadVPN/Notifications/Notification Providers/LatestChangesNotificationProvider.swift index 69e2531f46..112e111d58 100644 --- a/ios/MullvadVPN/Notifications/Notification Providers/LatestChangesNotificationProvider.swift +++ b/ios/MullvadVPN/Notifications/Notification Providers/LatestChangesNotificationProvider.swift @@ -51,7 +51,7 @@ class LatestChangesNotificationProvider: NotificationProvider, InAppNotification private func createNotificationBody() -> NSAttributedString { NSAttributedString( - markdownString: NSLocalizedString("**Tap here** to see what’s new.", comment: ""), + markdownString: NSLocalizedString("**Tap here** to see what’s new", comment: ""), options: MarkdownStylingOptions( font: .preferredFont(forTextStyle: .body) ) diff --git a/ios/MullvadVPN/View controllers/CreationAccount/Completed/SetupAccountCompletedContentView.swift b/ios/MullvadVPN/View controllers/CreationAccount/Completed/SetupAccountCompletedContentView.swift index 9796aace27..a7bfb40d05 100644 --- a/ios/MullvadVPN/View controllers/CreationAccount/Completed/SetupAccountCompletedContentView.swift +++ b/ios/MullvadVPN/View controllers/CreationAccount/Completed/SetupAccountCompletedContentView.swift @@ -28,14 +28,14 @@ class SetupAccountCompletedContentView: UIView { private let commentLabel: UILabel = { let label = UILabel() - let message = NSMutableAttributedString(string: NSLocalizedString( - """ - Go ahead and start using the app to begin reclaiming your online privacy. - To continue your journey as a privacy ninja, \ - visit our website to pick up other privacy-friendly habits and tools. - """, + let message = NSMutableAttributedString(string: [NSLocalizedString( + "Go ahead and start using the app to begin reclaiming your online privacy.", comment: "" - )) + ), NSLocalizedString( + "To continue your journey as a privacy ninja, visit our website to pick up" + + " other privacy-friendly habits and tools.", + comment: "" + )].joined(separator: " ")) message.apply(paragraphStyle: .alert) label.attributedText = message diff --git a/ios/MullvadVPN/View controllers/CreationAccount/Welcome/WelcomeContentView.swift b/ios/MullvadVPN/View controllers/CreationAccount/Welcome/WelcomeContentView.swift index dd401958d3..9054febbc9 100644 --- a/ios/MullvadVPN/View controllers/CreationAccount/Welcome/WelcomeContentView.swift +++ b/ios/MullvadVPN/View controllers/CreationAccount/Welcome/WelcomeContentView.swift @@ -96,14 +96,12 @@ final class WelcomeContentView: UIView, Sendable { label.numberOfLines = .zero label.lineBreakMode = .byWordWrapping label.lineBreakStrategy = [] - label.text = NSLocalizedString( - """ - To start using the app, you first need to \ - add time to your account. Either buy credit \ - on our website or redeem a voucher. - """, + label.text = [NSLocalizedString( + "To start using the app, you first need to add time to your account.", comment: "" - ) + ), NSLocalizedString( + "Either buy credit on our website or redeem a voucher.", comment: "" + )].joined(separator: " ") return label }() diff --git a/ios/MullvadVPN/View controllers/DeviceList/DeviceManagementView.swift b/ios/MullvadVPN/View controllers/DeviceList/DeviceManagementView.swift index 4a2b2a6996..953fee18b8 100644 --- a/ios/MullvadVPN/View controllers/DeviceList/DeviceManagementView.swift +++ b/ios/MullvadVPN/View controllers/DeviceList/DeviceManagementView.swift @@ -24,7 +24,7 @@ struct DeviceManagementView: View { } } - func warningMessage(deviceName: String) -> LocalizedStringKey { + func warningText(deviceName: String) -> [LocalizedStringKey] { var attributedDeviceName: AttributedString { var fullText = AttributedString(deviceName.capitalized) fullText.foregroundColor = Color.mullvadTextPrimary @@ -32,15 +32,14 @@ struct DeviceManagementView: View { } return switch self { case .tooManyDevices: - LocalizedStringKey( + [LocalizedStringKey( "Are you sure you want to log \(attributedDeviceName) out?" - ) + )] case .deviceManagement: - LocalizedStringKey(""" - Remove \(attributedDeviceName)? - The device will be removed from the list and logged out. - """ - ) + [ + LocalizedStringKey("Remove \(attributedDeviceName)?"), + LocalizedStringKey("The device will be removed from the list and logged out."), + ] } } } @@ -60,13 +59,10 @@ struct DeviceManagementView: View { } var bodyText: LocalizedStringKey { + // swiftlint:disable line_length switch style { case .deviceManagement: - """ - 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. - """ + "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." case .tooManyDevices: if canLoginNewDevice { """ @@ -74,12 +70,10 @@ struct DeviceManagementView: View { """ } else { - """ - 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. - """ + "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." } } + // swiftlint:enable line_length } private func fetchDevices() { @@ -114,7 +108,7 @@ struct DeviceManagementView: View { onRemoveDevice: { device in deviceManagementAlert = MullvadAlert( type: .warning, - message: style.warningMessage(deviceName: device.name), + messages: style.warningText(deviceName: device.name), action: .init( type: style.actionButtonStyle, title: style.actionButtonTitle, diff --git a/ios/MullvadVPN/View controllers/Login/LoginViewController.swift b/ios/MullvadVPN/View controllers/Login/LoginViewController.swift index 1a1da7b8b3..066368480b 100644 --- a/ios/MullvadVPN/View controllers/Login/LoginViewController.swift +++ b/ios/MullvadVPN/View controllers/Login/LoginViewController.swift @@ -232,14 +232,16 @@ class LoginViewController: UIViewController, RootContainment { @objc private func createNewAccount() { if interactor.hasLastAccountNumber { let message = NSMutableAttributedString( - markdownString: NSLocalizedString(""" - 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. - Do you want to create a new account? - """, comment: ""), + markdownString: [ + NSLocalizedString( + "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.", + comment: "" + ), + NSLocalizedString("Do you want to create a new account?", comment: ""), + ].joinedParagraphs(lineBreaks: 1), options: MarkdownStylingOptions(font: .preferredFont(forTextStyle: .body)) ) - let presentation = AlertPresentation( id: "create-account-confirmation-dialog", icon: .info, diff --git a/ios/MullvadVPN/View controllers/OutOfTime/OutOfTimeViewController.swift b/ios/MullvadVPN/View controllers/OutOfTime/OutOfTimeViewController.swift index 21914abc27..e1c024797f 100644 --- a/ios/MullvadVPN/View controllers/OutOfTime/OutOfTimeViewController.swift +++ b/ios/MullvadVPN/View controllers/OutOfTime/OutOfTimeViewController.swift @@ -105,28 +105,29 @@ class OutOfTimeViewController: UIViewController, RootContainment { private func applyViewState() { let tunnelState = interactor.tunnelStatus.state + let baseMessage = NSLocalizedString("You have no more VPN time left on this account. ", comment: "") contentView.enableDisconnectButton(tunnelState.isSecured, animated: true) contentView.enablePurchaseButton(!tunnelState.isSecured) if tunnelState.isSecured { - contentView.setBodyLabelText( + contentView.setBodyLabelText([ + baseMessage, NSLocalizedString( - """ - You have no more VPN time left on this account. To add more, you will need to \ - disconnect and access the Internet with an unsecure connection. - """, + "To add more, you will need to " + + "disconnect and access the Internet with an unsecure connection.", comment: "" - ) + ), + ].joined() ) } else { - contentView.setBodyLabelText( + contentView.setBodyLabelText([ + baseMessage, NSLocalizedString( - """ - You have no more VPN time left on this account. 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 make an in-app purchase via the **Add time** button below.", comment: "" - ) + ), + ].joined() ) } } diff --git a/ios/MullvadVPN/View controllers/ProblemReport/ProblemReportSubmissionOverlayView.swift b/ios/MullvadVPN/View controllers/ProblemReport/ProblemReportSubmissionOverlayView.swift index bdbb9e1819..dc48a678c7 100644 --- a/ios/MullvadVPN/View controllers/ProblemReport/ProblemReportSubmissionOverlayView.swift +++ b/ios/MullvadVPN/View controllers/ProblemReport/ProblemReportSubmissionOverlayView.swift @@ -74,10 +74,8 @@ class ProblemReportSubmissionOverlayView: UIView { return [ NSAttributedString( string: NSLocalizedString( - """ - If you exit the form and try again later, the information you already entered will still \ - be here. - """, + "If you exit the form and try again later, the information you " + + "already entered will still be here.", comment: "" ) ), diff --git a/ios/MullvadVPN/View controllers/ProblemReport/ProblemReportViewModel.swift b/ios/MullvadVPN/View controllers/ProblemReport/ProblemReportViewModel.swift index e7113b2b2c..58d4269326 100644 --- a/ios/MullvadVPN/View controllers/ProblemReport/ProblemReportViewModel.swift +++ b/ios/MullvadVPN/View controllers/ProblemReport/ProblemReportViewModel.swift @@ -15,21 +15,16 @@ struct ProblemReportViewModel { static let navigationTitle = NSLocalizedString("Report a problem", comment: "") static let subheadLabelText = NSLocalizedString( - """ - 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. - """, + "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.", comment: "" ) static let emailPlaceholderText = NSLocalizedString("Your email (optional)", comment: "") static let messageTextViewPlaceholder = NSLocalizedString( - """ - To assist you better, please write in English or Swedish and \ - include which country you are connecting from. - """, + "To assist you better, please write in English or Swedish and include which country you are connecting from.", comment: "" ) @@ -38,10 +33,8 @@ struct ProblemReportViewModel { static let sendLogsButtonTitle = NSLocalizedString("Send", comment: "") static let emptyEmailAlertWarning = NSLocalizedString( - """ - 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. - """, + "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.", comment: "" ) diff --git a/ios/MullvadVPN/View controllers/RedeemVoucher/LogoutDialogueView.swift b/ios/MullvadVPN/View controllers/RedeemVoucher/LogoutDialogueView.swift index b56acc1754..95536e4de8 100644 --- a/ios/MullvadVPN/View controllers/RedeemVoucher/LogoutDialogueView.swift +++ b/ios/MullvadVPN/View controllers/RedeemVoucher/LogoutDialogueView.swift @@ -21,14 +21,13 @@ class LogoutDialogueView: UIView { private let messageLabel: UILabel = { let label = UILabel() - let message = NSMutableAttributedString(string: NSLocalizedString( - """ - It looks like you have entered a Mullvad account number instead of a voucher code. \ - Do you want to log in to an existing account? - If so, click log out below to log in with the other account number. - """, + let message = NSMutableAttributedString(string: [NSLocalizedString( + "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.", comment: "" - )) + ), NSLocalizedString("If so, click log out below to log in with the other account number.", comment: "")] + .joinedParagraphs(lineBreaks: 0) + ) message.apply(paragraphStyle: .alert) label.attributedText = message diff --git a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterView.swift b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterView.swift index dfed96cbfb..4b10f48ceb 100644 --- a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterView.swift +++ b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterView.swift @@ -54,7 +54,7 @@ class RelayFilterView: UIView { func setDaita(_ enabled: Bool) { let chip = ChipConfiguration( group: .settings, - title: NSLocalizedString("Setting: DAITA", comment: ""), + title: String(format: NSLocalizedString("Setting: %@", comment: ""), "DAITA"), accessibilityId: .daitaFilterPill, didTapButton: nil ) @@ -65,7 +65,7 @@ class RelayFilterView: UIView { func setObfuscation(_ enabled: Bool) { let chip = ChipConfiguration( group: .settings, - title: NSLocalizedString("Setting: Obfuscation", comment: ""), + title: String(format: NSLocalizedString("Setting: %@", comment: ""), "Obfuscation"), accessibilityId: .obfuscationFilterPill, didTapButton: nil ) diff --git a/ios/MullvadVPN/View controllers/SelectLocation/DAITAInfoView.swift b/ios/MullvadVPN/View controllers/SelectLocation/DAITAInfoView.swift index b4b56db8f9..34b5cbf2db 100644 --- a/ios/MullvadVPN/View controllers/SelectLocation/DAITAInfoView.swift +++ b/ios/MullvadVPN/View controllers/SelectLocation/DAITAInfoView.swift @@ -19,10 +19,17 @@ class DAITAInfoView: UIView { label.attributedText = NSAttributedString( string: NSLocalizedString( - """ - The entry server for multihop is currently overridden by DAITA. \ - To select an entry server, please first enable “Direct only” or disable “DAITA” in the settings. - """, + String( + format: NSLocalizedString( + "The entry server for %@ is currently overridden by %@. To select an entry server, " + + "please first enable “%@” or disable “%@“ in the settings.", + comment: "" + ), + NSLocalizedString("multihop", comment: ""), + NSLocalizedString("DAITA", comment: ""), + NSLocalizedString("Direct only", comment: ""), + NSLocalizedString("DAITA", comment: "") + ), comment: "" ), attributes: [ @@ -38,7 +45,11 @@ class DAITAInfoView: UIView { let settingsButton: UIButton = { let settingsButton = AppButton(style: .default) - settingsButton.setTitle(NSLocalizedString("Open DAITA settings", comment: ""), for: .normal) + + settingsButton.setTitle( + String(format: NSLocalizedString("Open %@ settings", comment: ""), NSLocalizedString("DAITA", comment: "")), + for: .normal + ) return settingsButton }() diff --git a/ios/MullvadVPN/View controllers/Settings/Obfuscation/ShadowsocksObfuscationSettingsView.swift b/ios/MullvadVPN/View controllers/Settings/Obfuscation/ShadowsocksObfuscationSettingsView.swift index 2978ad99cb..5b0f4125bc 100644 --- a/ios/MullvadVPN/View controllers/Settings/Obfuscation/ShadowsocksObfuscationSettingsView.swift +++ b/ios/MullvadVPN/View controllers/Settings/Obfuscation/ShadowsocksObfuscationSettingsView.swift @@ -32,7 +32,7 @@ struct ShadowsocksObfuscationSettingsView<VM>: View where VM: ShadowsocksObfusca }, customLabel: NSLocalizedString("Custom", comment: ""), customPrompt: NSLocalizedString("Port", comment: ""), - customLegend: NSLocalizedString("Valid range: 1 - 65535", comment: ""), + customLegend: String(format: NSLocalizedString("Valid range: %d - %d", comment: ""), arguments: [1, 65535]), customInputMinWidth: 100, customInputMaxLength: 5, customFieldMode: .numericText diff --git a/ios/MullvadVPN/View controllers/Settings/SettingsCellFactory.swift b/ios/MullvadVPN/View controllers/Settings/SettingsCellFactory.swift index b74dcbf1cc..b02d8a3562 100644 --- a/ios/MullvadVPN/View controllers/Settings/SettingsCellFactory.swift +++ b/ios/MullvadVPN/View controllers/Settings/SettingsCellFactory.swift @@ -9,14 +9,9 @@ import MullvadSettings import UIKit -protocol SettingsCellEventHandler { - func showInfo(for button: SettingsInfoButtonItem) -} - @MainActor final class SettingsCellFactory: @preconcurrency CellFactoryProtocol { let tableView: UITableView - var delegate: SettingsCellEventHandler? var viewModel: SettingsViewModel private let interactor: SettingsInteractor @@ -57,7 +52,7 @@ final class SettingsCellFactory: @preconcurrency CellFactoryProtocol { case .changelog: guard let cell = cell as? SettingsCell else { return } - cell.titleLabel.text = NSLocalizedString("What's new", comment: "") + cell.titleLabel.text = NSLocalizedString("What’s new", comment: "") cell.detailTitleLabel.text = Bundle.main.productVersion cell.setAccessibilityIdentifier(item.accessibilityIdentifier) cell.disclosureType = .chevron diff --git a/ios/MullvadVPN/View controllers/Settings/SettingsDataSource.swift b/ios/MullvadVPN/View controllers/Settings/SettingsDataSource.swift index 74c09d704a..017ba9cc4c 100644 --- a/ios/MullvadVPN/View controllers/Settings/SettingsDataSource.swift +++ b/ios/MullvadVPN/View controllers/Settings/SettingsDataSource.swift @@ -108,7 +108,6 @@ final class SettingsDataSource: UITableViewDiffableDataSource<SettingsDataSource tableView.sectionFooterHeight = 0 tableView.delegate = self - settingsCellFactory.delegate = self registerClasses() updateDataSnapshot() @@ -188,9 +187,3 @@ final class SettingsDataSource: UITableViewDiffableDataSource<SettingsDataSource apply(snapshot) } } - -extension SettingsDataSource: @preconcurrency SettingsCellEventHandler { - func showInfo(for button: SettingsInfoButtonItem) { - delegate?.showInfo(for: button) - } -} diff --git a/ios/MullvadVPN/View controllers/Settings/SettingsDataSourceDelegate.swift b/ios/MullvadVPN/View controllers/Settings/SettingsDataSourceDelegate.swift index 3afb0d9eef..2f89d133c0 100644 --- a/ios/MullvadVPN/View controllers/Settings/SettingsDataSourceDelegate.swift +++ b/ios/MullvadVPN/View controllers/Settings/SettingsDataSourceDelegate.swift @@ -11,5 +11,4 @@ import UIKit protocol SettingsDataSourceDelegate: AnyObject { func didSelectItem(item: SettingsDataSource.Item) - func showInfo(for: SettingsInfoButtonItem) } diff --git a/ios/MullvadVPN/View controllers/Settings/SettingsHeaderView.swift b/ios/MullvadVPN/View controllers/Settings/SettingsHeaderView.swift index 69878e50e0..ce07483272 100644 --- a/ios/MullvadVPN/View controllers/Settings/SettingsHeaderView.swift +++ b/ios/MullvadVPN/View controllers/Settings/SettingsHeaderView.swift @@ -137,8 +137,8 @@ class SettingsHeaderView: UITableViewHeaderFooterView { private func updateAccessibilityCustomActions() { let actionName = isExpanded - ? NSLocalizedString("Collapse \(accessibilityCustomActionName)", comment: "") - : NSLocalizedString("Expand \(accessibilityCustomActionName)", comment: "") + ? String(format: NSLocalizedString("Collapse %@", comment: ""), accessibilityCustomActionName) + : String(format: NSLocalizedString("Expand %@", comment: ""), accessibilityCustomActionName) accessibilityCustomActions = [ UIAccessibilityCustomAction( diff --git a/ios/MullvadVPN/View controllers/Settings/SettingsInfoButtonItem.swift b/ios/MullvadVPN/View controllers/Settings/SettingsInfoButtonItem.swift deleted file mode 100644 index 2d6326ed37..0000000000 --- a/ios/MullvadVPN/View controllers/Settings/SettingsInfoButtonItem.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// SettingsInfoButtonItem.swift -// MullvadVPN -// -// Created by Jon Petersson on 2024-10-03. -// Copyright © 2025 Mullvad VPN AB. All rights reserved. -// - -import Foundation - -enum SettingsInfoButtonItem: CustomStringConvertible { - case daita - case daitaDirectOnly - - var description: String { - switch self { - case .daita: - NSLocalizedString( - """ - DAITA (Defence against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. \ - If anyone is monitoring your connection, this makes it significantly harder for them to identify \ - what websites you are visiting. - It does this by carefully adding network noise and making all network packets the same size. - Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA \ - with any server. - Attention: Be cautious if you have a limited data plan as this feature will increase your network \ - traffic. - """, - comment: "" - ) - case .daitaDirectOnly: - NSLocalizedString( - """ - By enabling "Direct only" you will have to manually select a server that is DAITA-enabled. \ - This can cause you to end up in a blocked state until you have selected a compatible server \ - in the "Select location" view. - """, - comment: "" - ) - } - } -} diff --git a/ios/MullvadVPN/View controllers/Settings/SettingsViewController.swift b/ios/MullvadVPN/View controllers/Settings/SettingsViewController.swift index 46aeb5a8f5..778c9faf0c 100644 --- a/ios/MullvadVPN/View controllers/Settings/SettingsViewController.swift +++ b/ios/MullvadVPN/View controllers/Settings/SettingsViewController.swift @@ -23,15 +23,13 @@ class SettingsViewController: UITableViewController { weak var delegate: SettingsViewControllerDelegate? private var dataSource: SettingsDataSource? private let interactor: SettingsInteractor - private let alertPresenter: AlertPresenter override var preferredStatusBarStyle: UIStatusBarStyle { .lightContent } - init(interactor: SettingsInteractor, alertPresenter: AlertPresenter) { + init(interactor: SettingsInteractor) { self.interactor = interactor - self.alertPresenter = alertPresenter super.init(style: .grouped) } @@ -81,22 +79,6 @@ extension SettingsViewController: @preconcurrency SettingsDataSourceDelegate { guard let route = item.navigationRoute else { return } delegate?.settingsViewController(self, didRequestRoutePresentation: route) } - - func showInfo(for item: SettingsInfoButtonItem) { - let presentation = AlertPresentation( - id: "settings-info-alert", - icon: .info, - message: item.description, - buttons: [ - AlertAction( - title: NSLocalizedString("Got it!", comment: ""), - style: .default - ), - ] - ) - - alertPresenter.showAlert(presentation: presentation, animated: true) - } } extension SettingsDataSource.Item { diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift index 8c236741a4..368fe5ab06 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 - ? NSLocalizedString("DAITA: Multihop", comment: "") + ? String(format: NSLocalizedString("%@: Multihop", comment: ""), NSLocalizedString("DAITA", 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 a40881eb8d..4807c237ce 100644 --- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift +++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift @@ -201,8 +201,9 @@ extension ConnectionViewViewModel { let observedTunnelState = tunnelStatus.observedState var portAndTransport = "" - if let inPort = observedTunnelState.connectionState?.remotePort { - let protocolLayer = observedTunnelState.connectionState?.transportLayer == .tcp ? "TCP" : "UDP" + if let connectionState = observedTunnelState.connectionState { + let inPort = connectionState.remotePort + let protocolLayer = connectionState.transportLayer.name portAndTransport = ":\(inPort) \(protocolLayer)" } diff --git a/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsDataSource.swift b/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsDataSource.swift index 859787a8c0..caa855ebc4 100644 --- a/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsDataSource.swift +++ b/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsDataSource.swift @@ -553,7 +553,7 @@ final class VPNSettingsDataSource: UITableViewDiffableDataSource< } private func configureWireguardPortsHeader(_ header: SettingsHeaderView) { - let title = NSLocalizedString("WireGuard ports", comment: "") + let title = NSLocalizedString("WireGuard port", comment: "") header.setAccessibilityIdentifier(.wireGuardPortsCell) header.titleLabel.text = title @@ -592,7 +592,7 @@ final class VPNSettingsDataSource: UITableViewDiffableDataSource< } private func configureObfuscationHeader(_ header: SettingsHeaderView) { - let title = NSLocalizedString("WireGuard Obfuscation", comment: "") + let title = NSLocalizedString("WireGuard obfuscation", comment: "") header.setAccessibilityIdentifier(.wireGuardObfuscationCell) header.titleLabel.text = title diff --git a/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsInfoButtonItem.swift b/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsInfoButtonItem.swift index 1b0e76a397..1e7a5070cf 100644 --- a/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsInfoButtonItem.swift +++ b/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsInfoButtonItem.swift @@ -21,52 +21,59 @@ enum VPNSettingsInfoButtonItem: CustomStringConvertible { var description: String { switch self { case .localNetworkSharing: - NSLocalizedString( - """ - This feature allows access to other devices on the local network, such as for sharing, printing, \ - streaming, etc. - Attention: toggling “Local network sharing” requires restarting the VPN connection. - """, + [NSLocalizedString( + "This feature allows access to other devices on the local network, " + + "such as for sharing, printing, streaming, etc.", comment: "" - ) - case .contentBlockers: - NSLocalizedString( - """ - When this feature is enabled it stops the device from contacting certain \ - domains or websites known for distributing ads, malware, trackers and more. \ - - This might cause issues on certain websites, services, and apps. - Attention: this setting cannot be used in combination with **Use custom DNS server**. - """, + ), NSLocalizedString( + "Attention: toggling “Local network sharing” requires restarting the VPN connection.", comment: "" - ) + )].joinedParagraphs(lineBreaks: 1) + case .contentBlockers: + [ + NSLocalizedString( + "When this feature is enabled it stops the device from contacting certain " + + "domains or websites known for distributing ads, malware, trackers and more.", + comment: "" + ), + NSLocalizedString( + "This might cause issues on certain websites, services, and apps.", + comment: "" + ), + String( + format: NSLocalizedString( + "Attention: this setting cannot be used in combination with **“%@“**.", + comment: "" + ), + NSLocalizedString("Use custom DNS server", comment: "") + ), + ] + .joinedParagraphs(lineBreaks: 1) case .blockMalware: NSLocalizedString( - """ - Warning: The malware blocker is not an anti-virus and should not \ - be treated as such, this is just an extra layer of protection. - """, + "Warning: The malware blocker is not an anti-virus and should not be treated as such," + + " this is just an extra layer of protection.", comment: "" ) case let .wireGuardPorts(portsString): - String( - format: NSLocalizedString( - """ - The automatic setting will randomly choose from the valid port ranges shown below. - The custom port can be any value inside the valid ranges: - %@ - """, + [ + NSLocalizedString( + "The automatic setting will randomly choose from the valid port ranges shown below.", comment: "" ), - portsString - ) + String( + format: NSLocalizedString( + "The custom port can be any value inside the valid ranges: %@.", + comment: "" + ), + portsString + ), + ].joinedParagraphs(lineBreaks: 1) case .wireGuardObfuscation: NSLocalizedString( - """ - 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. - """, + "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.", comment: "" ) case .wireGuardObfuscationPort: @@ -75,21 +82,21 @@ enum VPNSettingsInfoButtonItem: CustomStringConvertible { comment: "" ) case .quantumResistance: - NSLocalizedString( - """ - This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers. - 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. - """, + [NSLocalizedString( + "This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers.", comment: "" - ) + ), NSLocalizedString( + "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.", + comment: "" + )].joinedParagraphs(lineBreaks: 1) + case .multihop: NSLocalizedString( - """ - 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. - """, + "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.", comment: "" ) } diff --git a/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsViewModel.swift b/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsViewModel.swift index 8823ef46a4..aeb9b27c04 100644 --- a/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsViewModel.swift +++ b/ios/MullvadVPN/View controllers/VPNSettings/VPNSettingsViewModel.swift @@ -58,10 +58,10 @@ enum CustomDNSPrecondition { case .conflictsWithOtherSettings: return NSAttributedString( - string: NSLocalizedString( - "Disable all content blockers to activate this setting.", + string: String(format: NSLocalizedString( + "Disable all \"%@\" above to activate this setting.", comment: "" - ), + ), "DNS content blockers"), attributes: [.font: preferredFont] ) } diff --git a/ios/MullvadVPN/Views/MullvadAlert.swift b/ios/MullvadVPN/Views/MullvadAlert.swift index bad2b8a08e..c03c4a6d7a 100644 --- a/ios/MullvadVPN/Views/MullvadAlert.swift +++ b/ios/MullvadVPN/Views/MullvadAlert.swift @@ -20,7 +20,7 @@ struct MullvadAlert: Identifiable { let id = UUID() let type: AlertType - let message: LocalizedStringKey + let messages: [LocalizedStringKey] let action: Action? let dismissButtonTitle: LocalizedStringKey } @@ -55,7 +55,7 @@ struct AlertModifier: ViewModifier { private func alertContent(for alert: MullvadAlert) -> some View { VStack(spacing: 16) { alertIcon(for: alert.type) - alertMessage(alert.message) + alertMessage(alert.messages) VStack(spacing: 16) { alertAction(for: alert.action) alertAction(for: MullvadAlert.Action( @@ -82,12 +82,16 @@ struct AlertModifier: ViewModifier { } @ViewBuilder - private func alertMessage(_ message: LocalizedStringKey) -> some View { - HStack { - Text(message) - .font(.mullvadSmall) - .foregroundColor(.mullvadTextPrimary.opacity(0.6)) - Spacer() + private func alertMessage(_ messages: [LocalizedStringKey]) -> some View { + VStack { + ForEach(Array(messages.enumerated()), id: \.offset) { _, text in + HStack { + Text(text) + .font(.mullvadSmall) + .foregroundColor(.mullvadTextPrimary.opacity(0.6)) + Spacer() + } + } } } @@ -125,7 +129,7 @@ extension View { .constant( .init( type: .warning, - message: "Something needs to be done", + messages: ["Something needs to be done"], action: .init( type: .danger, title: "Do it!", diff --git a/ios/translation/crowdin.yml b/ios/translation/crowdin.yml index 6260945ef9..427438927c 100644 --- a/ios/translation/crowdin.yml +++ b/ios/translation/crowdin.yml @@ -6,7 +6,7 @@ # 🚨 TODO: Change project_id from sandbox to "production" 🚨 # Only after all translations are complete! # =============================================== -"project_id": "816306" +"project_id": "827282" "base_path": "./locales" "base_url": "https://api.crowdin.com" "preserve_hierarchy": true diff --git a/ios/translation/locales/de.xliff b/ios/translation/locales/de.xliff index a8d3651a66..16d0189389 100644 --- a/ios/translation/locales/de.xliff +++ b/ios/translation/locales/de.xliff @@ -1,5 +1,12 @@ <?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/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="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"/> @@ -7,1828 +14,2066 @@ <body> <trans-unit id="%@" xml:space="preserve"> <source>%@</source> - <target state-qualifier="leveraged-mt">%@</target> + <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-qualifier="leveraged-tm">%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-qualifier="leveraged-mt">%@ darf nicht leer sein.</target> + <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-qualifier="leveraged-tm">%@ tut dies, indem es Netzwerkrauschen gezielt hinzufügt und alle Netzwerkpakete gleich groß macht.</target> <note/> </trans-unit> <trans-unit id="%@ have been added to your account" xml:space="preserve"> <source>%@ have been added to your account</source> - <target state-qualifier="leveraged-mt">%@ wurde Ihrem Konto hinzugefügt</target> + <target state="needs-translation">%@ have been added to your account</target> <note/> </trans-unit> <trans-unit id="%@ left on this account" xml:space="preserve"> <source>%@ left on this account</source> - <target state-qualifier="leveraged-mt">%@ auf diesem Konto übrig</target> + <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-qualifier="leveraged-tm">%1$@ über %2$@</target> <note/> </trans-unit> <trans-unit id="%@ were added to your account." xml:space="preserve"> <source>%@ were added to your account.</source> - <target state-qualifier="leveraged-mt">%@ wurden deinem Konto hinzugefügt.</target> + <target state="needs-translation">%@ were added to your account.</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-qualifier="leveraged-mt">%d mehr...</target> + <target state-qualifier="leveraged-tm">%d 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.** DAITA (Defense against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. 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>**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.** - -DAITA (Defense against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. - -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-qualifier="leveraged-mt">**Achtung: Dies erhöht den Netzwerkverkehr und wirkt sich auch negativ auf Geschwindigkeit, Latenz und Akkuverbrauch aus. Verwende mit Vorsicht auf begrenzte Tarife. * - -DAITA (Verteidigung gegen AI-geführte Verkehrsanalyse) versteckt Muster in deinem verschlüsselten VPN-Verkehr. - -Durch die Verwendung einer ausgefeilten KI ist es möglich, den Datenverkehr von Datenpaketen zu analysieren, die auf Ihrem Gerät ein- und auslaufen (selbst wenn der Datenverkehr verschlüsselt ist).</target> + <trans-unit id="%lld more..." xml:space="preserve"> + <source>%lld more...</source> + <target state-qualifier="leveraged-tm">%lld weitere …</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-qualifier="leveraged-mt">**Tippe hier** um zu sehen, was neu ist.</target> + <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-qualifier="leveraged-tm">**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="A custom list with this name exists, please choose a unique name." xml:space="preserve"> <source>A custom list with this name exists, please choose a unique name.</source> - <target state-qualifier="leveraged-mt">Eine benutzerdefinierte Liste mit diesem Namen existiert bereits, bitte wählen Sie einen eindeutigen Namen.</target> + <target state="needs-translation">A custom list with this name exists, please choose a unique name.</target> <note/> </trans-unit> <trans-unit id="API access" xml:space="preserve"> <source>API access</source> - <target state-qualifier="leveraged-mt">API-Zugriff</target> - <note/> - </trans-unit> - <trans-unit id="API could not be reached, save anyway?" xml:space="preserve"> - <source>API could not be reached, save anyway?</source> - <target state-qualifier="leveraged-mt">API konnte nicht erreicht werden, trotzdem speichern?</target> + <target state-qualifier="leveraged-tm">API-Zugriff</target> <note/> </trans-unit> <trans-unit id="API reachable" xml:space="preserve"> <source>API reachable</source> - <target state-qualifier="leveraged-mt">API erreichbar</target> + <target state-qualifier="leveraged-tm">API erreichbar</target> <note/> </trans-unit> <trans-unit id="API unreachable" xml:space="preserve"> <source>API unreachable</source> - <target state-qualifier="leveraged-mt">API nicht erreichbar</target> + <target state-qualifier="leveraged-tm">API nicht erreichbar</target> + <note/> + </trans-unit> + <trans-unit id="API unreachable, save anyway?" xml:space="preserve"> + <source>API unreachable, save anyway?</source> + <target state-qualifier="leveraged-tm">API nicht erreichbar, dennoch speichern?</target> <note/> </trans-unit> <trans-unit id="About API access…" xml:space="preserve"> <source>About API access…</source> - <target state-qualifier="leveraged-mt">Über API-Zugriff…</target> + <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-qualifier="leveraged-mt">Über Direkte Methode...</target> + <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-qualifier="leveraged-mt">Über Verschlüsselte DNS-Proxy-Methode...</target> + <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-qualifier="leveraged-mt">Über Mullvad Bridges Methode...</target> + <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-qualifier="leveraged-mt">Über Server IP überschreiben...</target> + <target state="needs-translation">About Server IP override...</target> <note/> </trans-unit> <trans-unit id="Account" xml:space="preserve"> <source>Account</source> - <target state-qualifier="leveraged-mt">Konto</target> + <target state-qualifier="leveraged-tm">Konto</target> <note/> </trans-unit> <trans-unit id="Account created" xml:space="preserve"> <source>Account created</source> - <target state-qualifier="leveraged-mt">Konto erstellt</target> + <target state-qualifier="leveraged-tm">Konto erstellt</target> <note/> </trans-unit> <trans-unit id="Account credit expires soon" xml:space="preserve"> <source>Account credit expires soon</source> - <target state-qualifier="leveraged-mt">Kontoguthaben läuft bald ab</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Kontoguthaben ist abgelaufen</target> + <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-qualifier="leveraged-mt">Konto löschen</target> + <target state="needs-translation">Account deletion</target> <note/> </trans-unit> <trans-unit id="Account number" xml:space="preserve"> <source>Account number</source> - <target state-qualifier="leveraged-mt">Kundennummer</target> + <target state-qualifier="leveraged-tm">Kontonummer</target> + <note/> + </trans-unit> + <trans-unit id="Active features" xml:space="preserve"> + <source>Active features</source> + <target state-qualifier="leveraged-tm">Aktive Funktionen</target> <note/> </trans-unit> <trans-unit id="Add" xml:space="preserve"> <source>Add</source> - <target state-qualifier="leveraged-mt">Neu</target> + <target state-qualifier="leveraged-tm">Hinzufügen</target> <note/> </trans-unit> <trans-unit id="Add 30 days" xml:space="preserve"> <source>Add 30 days</source> - <target state-qualifier="leveraged-mt">30 Tage hinzufügen</target> + <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-qualifier="leveraged-mt">90 Tage hinzufügen</target> + <target state="needs-translation">Add 90 days</target> <note/> </trans-unit> <trans-unit id="Add Time" xml:space="preserve"> <source>Add Time</source> - <target state-qualifier="leveraged-mt">Neue Zeit</target> + <target state="needs-translation">Add Time</target> <note/> </trans-unit> <trans-unit id="Add a server" xml:space="preserve"> <source>Add a server</source> - <target state-qualifier="leveraged-mt">Server hinzufügen</target> + <target state-qualifier="leveraged-tm">Server hinzufügen</target> <note/> </trans-unit> <trans-unit id="Add access method" xml:space="preserve"> <source>Add access method</source> - <target state-qualifier="leveraged-mt">Zugriffsmethode hinzufügen</target> + <target state="needs-translation">Add access method</target> <note/> </trans-unit> <trans-unit id="Add locations" xml:space="preserve"> <source>Add locations</source> - <target state-qualifier="leveraged-mt">Orte hinzufügen</target> + <target state-qualifier="leveraged-tm">Standorte hinzufügen</target> <note/> </trans-unit> <trans-unit id="Add new list" xml:space="preserve"> <source>Add new list</source> - <target state-qualifier="leveraged-mt">Neue Liste hinzufügen</target> + <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-qualifier="leveraged-mt">Neue Zeit</target> + <target state-qualifier="leveraged-tm">Zeit hinzufügen</target> <note/> </trans-unit> <trans-unit id="Ads" xml:space="preserve"> <source>Ads</source> - <target state-qualifier="leveraged-mt">Anzeigen</target> + <target state-qualifier="leveraged-tm">Werbung</target> <note/> </trans-unit> <trans-unit id="Adult content" xml:space="preserve"> <source>Adult content</source> - <target state-qualifier="leveraged-mt">Erwachseneninhalt</target> + <target state-qualifier="leveraged-tm">Inhalte für Erwachsene</target> + <note/> + </trans-unit> + <trans-unit id="Agree and continue" xml:space="preserve"> + <source>Agree and continue</source> + <target state-qualifier="leveraged-tm">Akzeptieren und weiter</target> <note/> </trans-unit> <trans-unit id="All" xml:space="preserve"> <source>All</source> - <target state-qualifier="leveraged-mt">Alle</target> + <target state="needs-translation">All</target> <note/> </trans-unit> <trans-unit id="All Providers" xml:space="preserve"> <source>All Providers</source> - <target state-qualifier="leveraged-mt">Alle Anbieter</target> + <target state="needs-translation">All Providers</target> <note/> </trans-unit> <trans-unit id="All locations" xml:space="preserve"> <source>All locations</source> - <target state-qualifier="leveraged-mt">Alle Standorte</target> + <target state-qualifier="leveraged-tm">Alle Standorte</target> <note/> </trans-unit> <trans-unit id="Any" xml:space="preserve"> <source>Any</source> - <target state-qualifier="leveraged-mt">Alle</target> + <target state-qualifier="leveraged-tm">Beliebige</target> <note/> </trans-unit> <trans-unit id="App logs" xml:space="preserve"> <source>App logs</source> - <target state-qualifier="leveraged-mt">App-Logs</target> + <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-qualifier="leveraged-mt">AppStore Quittung wurde nicht gefunden.</target> + <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-qualifier="leveraged-mt">Mindestens eine Methode muss aktiviert sein.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Authentifizierung</target> + <target state-qualifier="leveraged-tm">Authentifizierung</target> <note/> </trans-unit> <trans-unit id="Automatic" xml:space="preserve"> <source>Automatic</source> - <target state-qualifier="leveraged-mt">Automatisch</target> + <target state-qualifier="leveraged-tm">Automatisch</target> <note/> </trans-unit> <trans-unit id="BLOCKING INTERNET" xml:space="preserve"> <source>BLOCKING INTERNET</source> - <target state-qualifier="leveraged-mt">BLOCKING INTERNET</target> + <target state-qualifier="leveraged-tm">INTERNET SPERREN</target> <note/> </trans-unit> <trans-unit id="Back to editing" xml:space="preserve"> <source>Back to editing</source> - <target state-qualifier="leveraged-mt">Zurück zur Bearbeitung</target> + <target state="needs-translation">Back to editing</target> <note/> </trans-unit> <trans-unit id="Blocked connection" xml:space="preserve"> <source>Blocked connection</source> - <target state-qualifier="leveraged-mt">Verbindung blockiert</target> + <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-qualifier="leveraged-mt">Internetblockierung: Deine Zeit auf diesem Konto ist abgelaufen. Um das Internet weiter zu nutzen, füge bitte mehr Zeit hinzu oder trenne das VPN.</target> + <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 "Direct only" you will have to manually select a server that is DAITA-enabled. Multihop won't automatically be used to enable DAITA with any server." xml:space="preserve"> - <source>By enabling "Direct only" you will have to manually select a server that is DAITA-enabled. Multihop won't automatically be used to enable DAITA with any server.</source> - <target state-qualifier="leveraged-mt">Wenn Sie "Nur Direkt" aktivieren, müssen Sie manuell einen Server auswählen, der DAITA-aktiviert ist. Multihop wird nicht automatisch verwendet, um DAITA mit irgendeinem Server zu aktivieren.</target> + <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 enabling "Direct only" you will have to manually select a server that is DAITA-enabled. This can cause you to end up in a blocked state until you have selected a compatible server in the "Select location" view." xml:space="preserve"> - <source>By enabling "Direct only" you will have to manually select a server that is DAITA-enabled. This can cause you to end up in a blocked state until you have selected a compatible server in the "Select location" view.</source> - <target state-qualifier="leveraged-mt">Wenn Sie "Nur Direkt" aktivieren, müssen Sie manuell einen Server auswählen, der DAITA-aktiviert ist. Dies kann dazu führen, dass Sie in einem blockierten Zustand enden, bis Sie einen kompatiblen Server in der Ansicht "Standort auswählen" ausgewählt haben.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Abbrechen</target> + <target state-qualifier="leveraged-tm">Abbrechen</target> <note/> </trans-unit> <trans-unit id="Cannot complete the purchase" xml:space="preserve"> <source>Cannot complete the purchase</source> - <target state-qualifier="leveraged-mt">Kauf kann nicht abgeschlossen werden</target> + <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-qualifier="leveraged-mt">Kann die AppStore-Quittung nicht lesen</target> + <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-qualifier="leveraged-mt">Kann den AppStore Beleg nicht aktualisieren: %@</target> + <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-qualifier="leveraged-mt">Käufe können nicht wiederhergestellt werden</target> + <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-qualifier="leveraged-mt">Überprüfe Kontonummer</target> + <target state-qualifier="leveraged-tm">Ihre Kontonummer wird geprüft</target> <note/> </trans-unit> <trans-unit id="Cipher" xml:space="preserve"> <source>Cipher</source> - <target state-qualifier="leveraged-mt">Cipher</target> + <target state-qualifier="leveraged-tm">Chiffre</target> <note/> </trans-unit> <trans-unit id="Clear" xml:space="preserve"> <source>Clear</source> - <target state-qualifier="leveraged-mt">Leeren</target> + <target state-qualifier="leveraged-tm">Löschen</target> <note/> </trans-unit> <trans-unit id="Clear all overrides" xml:space="preserve"> <source>Clear all overrides</source> - <target state-qualifier="leveraged-mt">Alle Überschreibungen löschen</target> + <target state-qualifier="leveraged-tm">Alle Überschreibungen löschen</target> <note/> </trans-unit> <trans-unit id="Clear all overrides?" xml:space="preserve"> <source>Clear all overrides?</source> - <target state-qualifier="leveraged-mt">Alle Überschreibungen löschen?</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Das Löschen der importierten Überschreibungen ändert die Server-IPs in der Standortansicht auswählen wieder auf die Standardeinstellung.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Der Kunde darf die Anfrage nicht ausstellen.</target> + <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-qualifier="leveraged-mt">Schließt diesen Ort aus.</target> + <target state="needs-translation">Collapses this location.</target> <note/> </trans-unit> <trans-unit id="Congrats!" xml:space="preserve"> <source>Congrats!</source> - <target state-qualifier="leveraged-mt">Glückwunsch!</target> + <target state-qualifier="leveraged-tm">Glückwunsch!</target> + <note/> + </trans-unit> + <trans-unit id="Connect" xml:space="preserve"> + <source>Connect</source> + <target state-qualifier="leveraged-tm">Verbinden</target> <note/> </trans-unit> <trans-unit id="Connected" xml:space="preserve"> <source>Connected</source> - <target state-qualifier="leveraged-mt">Verbunden</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">Verbinden …</target> + <note/> + </trans-unit> + <trans-unit id="Connection details" xml:space="preserve"> + <source>Connection details</source> + <target state-qualifier="leveraged-tm">Verbindungsdetails</target> + <note/> + </trans-unit> + <trans-unit id="Continue with login" xml:space="preserve"> + <source>Continue with login</source> + <target state-qualifier="leveraged-tm">Weiter mit Anmeldung</target> <note/> </trans-unit> <trans-unit id="Copy to pasteboard" xml:space="preserve"> <source>Copy to pasteboard</source> - <target state-qualifier="leveraged-mt">Kopiere in die Einlage</target> + <target state="needs-translation">Copy to pasteboard</target> <note/> </trans-unit> <trans-unit id="Correct account number" xml:space="preserve"> <source>Correct account number</source> - <target state-qualifier="leveraged-mt">Richtige Kontonummer</target> + <target state="needs-translation">Correct account number</target> <note/> </trans-unit> <trans-unit id="Create" xml:space="preserve"> <source>Create</source> - <target state-qualifier="leveraged-mt">Anlegen</target> + <target state-qualifier="leveraged-tm">Erstellen</target> <note/> </trans-unit> <trans-unit id="Create account" xml:space="preserve"> <source>Create account</source> - <target state-qualifier="leveraged-mt">Konto erstellen</target> + <target state-qualifier="leveraged-tm">Konto erstellen</target> + <note/> + </trans-unit> + <trans-unit id="Create new account" xml:space="preserve"> + <source>Create new account</source> + <target state="needs-translation">Create new account</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-qualifier="leveraged-mt">Neues Konto erstellen</target> + <target state="needs-translation">Creating new account</target> <note/> </trans-unit> <trans-unit id="Creating quantum secure connection" xml:space="preserve"> <source>Creating quantum secure connection</source> - <target state-qualifier="leveraged-mt">Quantensichere Verbindung erstellen</target> + <target state="needs-translation">Creating quantum secure connection</target> <note/> </trans-unit> <trans-unit id="Creating secure connection" xml:space="preserve"> <source>Creating secure connection</source> - <target state-qualifier="leveraged-mt">Sichere Verbindung erstellen</target> + <target state="needs-translation">Creating secure connection</target> + <note/> + </trans-unit> + <trans-unit id="Current device" xml:space="preserve"> + <source>Current device</source> + <target state-qualifier="leveraged-tm">Aktuelles Gerät</target> <note/> </trans-unit> <trans-unit id="Custom" xml:space="preserve"> <source>Custom</source> - <target state-qualifier="leveraged-mt">Eigene</target> + <target state-qualifier="leveraged-tm">Benutzerdefiniert</target> <note/> </trans-unit> <trans-unit id="Custom DNS" xml:space="preserve"> <source>Custom DNS</source> - <target state-qualifier="leveraged-mt">Eigener DNS</target> + <target state-qualifier="leveraged-tm">Eigenes DNS</target> <note/> </trans-unit> <trans-unit id="Custom lists" xml:space="preserve"> <source>Custom lists</source> - <target state-qualifier="leveraged-mt">Eigene Listen</target> + <target state-qualifier="leveraged-tm">Eigene Listen</target> <note/> </trans-unit> <trans-unit id="DAITA" xml:space="preserve"> <source>DAITA</source> - <target state-qualifier="leveraged-mt">DAITA</target> - <note/> - </trans-unit> - <trans-unit id="DAITA (Defence against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. If anyone is monitoring your connection, this makes it significantly harder for them to identify what websites you are visiting. It does this by carefully adding network noise and making all network packets the same size. Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. Attention: Be cautious if you have a limited data plan as this feature will increase your network traffic." xml:space="preserve"> - <source>DAITA (Defence against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. If anyone is monitoring your connection, this makes it significantly harder for them to identify what websites you are visiting. -It does this by carefully adding network noise and making all network packets the same size. -Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. -Attention: Be cautious if you have a limited data plan as this feature will increase your network traffic.</source> - <target state-qualifier="leveraged-mt">DAITA (Verteidigung gegen AI-geführte Verkehrsanalyse) versteckt Muster in Ihrem verschlüsselten VPN-Verkehr. Wenn jemand Ihre Verbindung überwacht, erschwert dies es ihnen, deutlich zu erkennen, welche Websites Sie besuchen. -Dies geschieht durch das sorgfältige Hinzufügen von Netzwerkrauschen und die gleiche Größe aller Netzwerkpakete. -Nicht alle unsere Server sind DAITA-fähig. Daher verwenden wir Multihop automatisch, um DAITA mit jedem Server zu aktivieren. -Achtung: Seien Sie vorsichtig, wenn Sie einen begrenzten Datenplan haben, da diese Funktion Ihren Netzwerkverkehr erhöhen wird.</target> + <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 "Select location" 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-qualifier="leveraged-mt">DAITA ist an der aktuell ausgewählten Stelle nicht verfügbar. Nach der Aktivierung gehen Sie bitte zur Ansicht "Standort auswählen" und wählen einen Ort, der DAITA unterstützt.</target> + <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 "Select location" 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-qualifier="leveraged-mt">DAITA ist auf dem aktuellen Eintragsserver nicht verfügbar. Nach der Aktivierung gehen Sie bitte in die Ansicht "Standort auswählen" und wählen einen Eintragsort aus, der DAITA unterstützt.</target> + <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-qualifier="leveraged-mt">DAITA-aktiviert</target> + <target state="needs-translation">DAITA-enabled</target> <note/> </trans-unit> <trans-unit id="DAITA: Multihop" xml:space="preserve"> <source>DAITA: Multihop</source> - <target state-qualifier="leveraged-mt">DAITA: Multihop</target> + <target state="needs-translation">DAITA: Multihop</target> <note/> </trans-unit> <trans-unit id="DNS content blockers" xml:space="preserve"> <source>DNS content blockers</source> - <target state-qualifier="leveraged-mt">DNS-Inhaltsblocker</target> + <target state-qualifier="leveraged-tm">DNS-Inhaltssperren</target> <note/> </trans-unit> <trans-unit id="DNS settings" xml:space="preserve"> <source>DNS settings</source> - <target state-qualifier="leveraged-mt">DNS-Einstellungen</target> + <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-qualifier="leveraged-mt">Löschen</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Konto löschen</target> + <target state="needs-translation">Delete Account</target> <note/> </trans-unit> <trans-unit id="Delete account" xml:space="preserve"> <source>Delete account</source> - <target state-qualifier="leveraged-mt">Konto löschen</target> + <target state="needs-translation">Delete account</target> <note/> </trans-unit> <trans-unit id="Delete list" xml:space="preserve"> <source>Delete list</source> - <target state-qualifier="leveraged-mt">Liste löschen</target> + <target state-qualifier="leveraged-tm">Liste löschen</target> <note/> </trans-unit> <trans-unit id="Delete method" xml:space="preserve"> <source>Delete method</source> - <target state-qualifier="leveraged-mt">Methode löschen</target> + <target state-qualifier="leveraged-tm">Methode löschen</target> <note/> </trans-unit> <trans-unit id="Deleting account..." xml:space="preserve"> <source>Deleting account...</source> - <target state-qualifier="leveraged-mt">Konto wird gelöscht...</target> + <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-qualifier="leveraged-mt">Gerät ist inaktiv</target> + <target state-qualifier="leveraged-tm">Gerät ist inaktiv</target> <note/> </trans-unit> <trans-unit id="Device name" xml:space="preserve"> <source>Device name</source> - <target state-qualifier="leveraged-mt">Gerätename</target> + <target state-qualifier="leveraged-tm">Gerätename</target> <note/> </trans-unit> <trans-unit id="Device name: %@" xml:space="preserve"> <source>Device name: %@</source> - <target state-qualifier="leveraged-mt">Gerätename: %@</target> + <target state="needs-translation">Device name: %@</target> <note/> </trans-unit> <trans-unit id="Direct" xml:space="preserve"> <source>Direct</source> - <target state-qualifier="leveraged-mt">Direkt</target> + <target state="needs-translation">Direct</target> <note/> </trans-unit> <trans-unit id="Direct only" xml:space="preserve"> <source>Direct only</source> - <target state-qualifier="leveraged-mt">Nur direkt</target> + <target state-qualifier="leveraged-tm">Nur direkt</target> <note/> </trans-unit> - <trans-unit id="Disable all content blockers to activate this setting." xml:space="preserve"> - <source>Disable all content blockers to activate this setting.</source> - <target state-qualifier="leveraged-mt">Deaktivieren Sie alle Inhaltsblocker, um diese Einstellung zu aktivieren.</target> + <trans-unit id="Disable all "%@" above to activate this setting." xml:space="preserve"> + <source>Disable all "%@" above to activate this setting.</source> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Deaktiviert</target> + <target state="needs-translation">Disabled</target> <note/> </trans-unit> <trans-unit id="Disabling" xml:space="preserve"> <source>Disabling</source> - <target state-qualifier="leveraged-mt">Deaktivieren</target> + <target state="needs-translation">Disabling</target> <note/> </trans-unit> <trans-unit id="Discard changes" xml:space="preserve"> <source>Discard changes</source> - <target state-qualifier="leveraged-mt">Änderungen verwerfen</target> + <target state-qualifier="leveraged-tm">Änderungen verwerfen</target> <note/> </trans-unit> <trans-unit id="Disconnect" xml:space="preserve"> <source>Disconnect</source> - <target state-qualifier="leveraged-mt">Verbindung trennen</target> + <target state-qualifier="leveraged-tm">Trennen</target> + <note/> + </trans-unit> + <trans-unit id="Disconnected" xml:space="preserve"> + <source>Disconnected</source> + <target state-qualifier="leveraged-tm">Verbindung getrennt</target> <note/> </trans-unit> <trans-unit id="Disconnecting" xml:space="preserve"> <source>Disconnecting</source> - <target state-qualifier="leveraged-mt">Trennen</target> + <target state-qualifier="leveraged-tm">Verbindung wird getrennt</target> + <note/> + </trans-unit> + <trans-unit id="Disconnecting..." xml:space="preserve"> + <source>Disconnecting...</source> + <target state-qualifier="leveraged-tm">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-translation">Do you want to create a new account?</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-qualifier="leveraged-mt">Fertig</target> + <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-qualifier="leveraged-mt">Haben Sie noch keine Kontonummer?</target> + <target state-qualifier="leveraged-tm">Sie haben keine Kontonummer?</target> <note/> </trans-unit> <trans-unit id="Edit custom list" xml:space="preserve"> <source>Edit custom list</source> - <target state-qualifier="leveraged-mt">Eigene Liste bearbeiten</target> + <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-qualifier="leveraged-mt">Listen bearbeiten</target> + <target state-qualifier="leveraged-tm">Listen bearbeiten</target> <note/> </trans-unit> <trans-unit id="Edit locations" xml:space="preserve"> <source>Edit locations</source> - <target state-qualifier="leveraged-mt">Orte bearbeiten</target> + <target state-qualifier="leveraged-tm">Standorte bearbeiten</target> <note/> </trans-unit> <trans-unit id="Edit message" xml:space="preserve"> <source>Edit message</source> - <target state-qualifier="leveraged-mt">Nachricht bearbeiten</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Aktivieren</target> + <target state-qualifier="leveraged-tm">Aktivieren</target> <note/> </trans-unit> <trans-unit id="Enable "%@"" xml:space="preserve"> <source>Enable "%@"</source> - <target state-qualifier="leveraged-mt">"%@ " aktivieren</target> + <target state="needs-translation">Enable "%@"</target> <note/> </trans-unit> <trans-unit id="Enable method" xml:space="preserve"> <source>Enable method</source> - <target state-qualifier="leveraged-mt">Methode aktivieren</target> + <target state-qualifier="leveraged-tm">Methode aktivieren</target> <note/> </trans-unit> <trans-unit id="Enabling" xml:space="preserve"> <source>Enabling</source> - <target state-qualifier="leveraged-mt">Aktivieren</target> + <target state="needs-translation">Enabling</target> <note/> </trans-unit> <trans-unit id="Encrypted DNS proxy" xml:space="preserve"> <source>Encrypted DNS proxy</source> - <target state-qualifier="leveraged-mt">Verschlüsselter DNS-Proxy</target> + <target state="needs-translation">Encrypted DNS proxy</target> <note/> </trans-unit> <trans-unit id="Enter IP" xml:space="preserve"> <source>Enter IP</source> - <target state-qualifier="leveraged-mt">IP eingeben</target> + <target state-qualifier="leveraged-tm">IP eingeben</target> <note/> </trans-unit> <trans-unit id="Enter voucher code" xml:space="preserve"> <source>Enter voucher code</source> - <target state-qualifier="leveraged-mt">Gutscheincode eingeben</target> + <target state-qualifier="leveraged-tm">Gutscheincode eingeben</target> <note/> </trans-unit> <trans-unit id="Enter your account number" xml:space="preserve"> <source>Enter your account number</source> - <target state-qualifier="leveraged-mt">Geben Sie Ihre Kontonummer ein</target> + <target state-qualifier="leveraged-tm">Geben Sie Ihre Kontonummer ein</target> <note/> </trans-unit> <trans-unit id="Entry" xml:space="preserve"> <source>Entry</source> - <target state-qualifier="leveraged-mt">Eintrag</target> + <target state-qualifier="leveraged-tm">Eingang</target> <note/> </trans-unit> <trans-unit id="Exit" xml:space="preserve"> <source>Exit</source> - <target state-qualifier="leveraged-mt">Beenden</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Erweitert diesen Standort.</target> + <target state="needs-translation">Expands this location.</target> <note/> </trans-unit> <trans-unit id="FAQs & Guides" xml:space="preserve"> <source>FAQs & Guides</source> - <target state-qualifier="leveraged-mt">FAQ & Anleitungen</target> + <target state="needs-translation">FAQs & Guides</target> <note/> </trans-unit> <trans-unit id="Failed to connect to App store, please try again later." xml:space="preserve"> <source>Failed to connect to App store, please try again later.</source> - <target state-qualifier="leveraged-mt">Verbindung zum App Store fehlgeschlagen, bitte versuchen Sie es später erneut.</target> + <target state="needs-translation">Failed to connect to App store, please try again later.</target> <note/> </trans-unit> <trans-unit id="Failed to send" xml:space="preserve"> <source>Failed to send</source> - <target state-qualifier="leveraged-mt">Senden fehlgeschlagen</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Fehler beim Senden der Quittung an Server: %@</target> + <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-qualifier="leveraged-mt">Tunnel konnte nicht gestartet werden.</target> + <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-qualifier="leveraged-mt">Fehler beim Starten des Tunnels: %@.</target> + <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-qualifier="leveraged-mt">Fehler beim Stoppen des Tunnels.</target> + <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-qualifier="leveraged-mt">Fehler beim Beenden des Tunnels: %@.</target> + <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-qualifier="leveraged-mt">Fehler beim Überprüfen der Kontonummer: %@</target> + <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-qualifier="leveraged-mt">Geräte werden abgerufen...</target> + <target state="needs-translation">Fetching devices...</target> <note/> </trans-unit> <trans-unit id="Filter" xml:space="preserve"> <source>Filter</source> - <target state-qualifier="leveraged-mt">Filtern</target> + <target state="needs-translation">Filter</target> <note/> </trans-unit> <trans-unit id="Filtered:" xml:space="preserve"> <source>Filtered:</source> - <target state-qualifier="leveraged-mt">Gefiltert:</target> + <target state-qualifier="leveraged-tm">Gefiltert:</target> <note/> </trans-unit> <trans-unit id="Gambling" xml:space="preserve"> <source>Gambling</source> - <target state-qualifier="leveraged-mt">Spielen</target> + <target state-qualifier="leveraged-tm">Glücksspiel</target> <note/> </trans-unit> - <trans-unit id="Go ahead and start using the app to begin reclaiming your online privacy. To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools." xml:space="preserve"> - <source>Go ahead and start using the app to begin reclaiming your online privacy. -To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools.</source> - <target state-qualifier="leveraged-mt">Gehen Sie voran und verwenden Sie die App, um Ihre Privatsphäre wiederherzustellen. -Um Ihre Reise als privates Ninja fortzusetzen, besuchen Sie unsere Website, um andere datenschutzfreundliche Gewohnheiten und Werkzeuge zu übernehmen.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Zum Login</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Wenn Sie sich anmelden, wird das Internet auf diesem Gerät entsperrt.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Verstanden!</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Hier ist deine Kontonummer. Speichere es!</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Kontonummer ausblenden</target> + <target state-qualifier="leveraged-tm">Kontonummer verbergen</target> <note/> </trans-unit> - <trans-unit id="If an observer monitors these data packets, DAITA makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating. DAITA does this by carefully adding network noise and making all network packets the same size. Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. " xml:space="preserve"> - <source>If an observer monitors these data packets, DAITA makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating. - -DAITA does this by carefully adding network noise and making all network packets the same size. - -Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. -</source> - <target state-qualifier="leveraged-mt">Wenn ein Beobachter diese Datenpakete überwacht, DAITA macht es für sie wesentlich schwieriger, herauszufinden, welche Websites Sie besuchen oder mit wem Sie kommunizieren. - -DAITA tut dies, indem es Netzwerkrauschen einfügt und alle Netzwerkpakete auf die gleiche Größe bringt. - -Nicht alle unsere Server sind DAITA-fähig. Daher verwenden wir Multihop automatisch, um DAITA mit jedem Server zu aktivieren. -</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Bei Bedarf werden wir dich unter %@ kontaktieren</target> + <target state-qualifier="leveraged-tm">Bei Bedarf werden wir Sie über %@ kontaktieren</target> + <note/> + </trans-unit> + <trans-unit id="If so, click log out below to log in with the other account number." xml:space="preserve"> + <source>If so, click log out below to log in with the other account number.</source> + <target state="needs-translation">If so, click log out below to log in with the other account number.</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-qualifier="leveraged-mt">Wenn du Probleme beim Verbinden mit VPN-Servern hast, kontaktiere bitte den Support.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Wenn du nicht mit unserem VPN verbunden bist, wird der verschlüsselte DNS-Proxy deine eigene nicht-VPN-IP beim Verbinden verwenden. -Die DoH-Server werden von einem der folgenden Anbieter gehostet: Quad9 oder 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="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-qualifier="leveraged-mt">Wenn Sie die Verbindung jetzt trennen, werden Sie Ihre Verbindung nicht sichern können, bis das Gerät online ist.</target> + <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-qualifier="leveraged-mt">Wenn Sie das Formular verlassen und versuchen Sie es später noch einmal, werden die von Ihnen eingegebenen Informationen immer noch hier sein.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Wenn du nach dem Kauf keine zusätzliche VPN-Zeit erhalten hast</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Wenn Sie immer noch Probleme haben, können Sie unseren Support direkt unter **%@** per E-Mail senden. Bitte fügen Sie Ihr App-Log an Ihre E-Mail hinzu.</target> + <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-qualifier="leveraged-mt">Importieren</target> + <target state-qualifier="leveraged-tm">Importieren</target> <note/> </trans-unit> - <trans-unit id="Import %@ was successful, overrides are now active." xml:space="preserve"> - <source>Import %@ was successful, overrides are now active.</source> - <target state-qualifier="leveraged-mt">Import %@ war erfolgreich, Überschreibungen sind jetzt aktiv.</target> + <trans-unit id="Import file" xml:space="preserve"> + <source>Import file</source> + <target state-qualifier="leveraged-tm">Datei importieren</target> <note/> </trans-unit> - <trans-unit id="Import %@ was unsuccessful, please try again." xml:space="preserve"> - <source>Import %@ was unsuccessful, please try again.</source> - <target state-qualifier="leveraged-mt">Import %@ war nicht erfolgreich, bitte versuchen Sie es erneut.</target> + <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-qualifier="leveraged-tm">Importieren Sie Dateien oder Text mit neuen IP-Adressen für die Server in der Ortsauswahl.</target> <note/> </trans-unit> - <trans-unit id="Import file" xml:space="preserve"> - <source>Import file</source> - <target state-qualifier="leveraged-mt">Datei importieren</target> + <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 files or text with the new IP addresses for the servers in the Select location view." xml:space="preserve"> - <source>Import files or text with the new IP addresses for the servers in the Select location view.</source> - <target state-qualifier="leveraged-mt">Importieren Sie Dateien oder Text mit den neuen IP-Adressen für die Server in der Standortansicht auswählen.</target> + <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-qualifier="leveraged-mt">Import erfolgreich</target> + <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-qualifier="leveraged-mt">Über Text importieren</target> + <target state-qualifier="leveraged-tm">Import via Text</target> + <note/> + </trans-unit> + <trans-unit id="In" xml:space="preserve"> + <source>In</source> + <target state-qualifier="leveraged-tm">Eingehend</target> <note/> </trans-unit> <trans-unit id="In use" xml:space="preserve"> <source>In use</source> - <target state-qualifier="leveraged-mt">In Verwendung</target> + <target state-qualifier="leveraged-tm">Wird verwendet</target> <note/> </trans-unit> <trans-unit id="Include all networks" xml:space="preserve"> <source>Include all networks</source> - <target state-qualifier="leveraged-mt">Alle Netzwerke einbeziehen</target> + <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-qualifier="leveraged-mt">Interner Fehler aufgetreten. Einstellungen werden auf Standardwerte zurückgesetzt und das Gerät ist abgemeldet.</target> + <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-qualifier="leveraged-mt">Interner Fehler.</target> + <target state="needs-translation">Internal error.</target> <note/> </trans-unit> <trans-unit id="Invalid account" xml:space="preserve"> <source>Invalid account</source> - <target state-qualifier="leveraged-mt">Ungültiges Konto</target> + <target state="needs-translation">Invalid account</target> <note/> </trans-unit> <trans-unit id="Invalid device state." xml:space="preserve"> <source>Invalid device state.</source> - <target state-qualifier="leveraged-mt">Ungültiger Gerätestatus.</target> + <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-qualifier="leveraged-mt">Ungültige Einkaufsbezeichnung.</target> + <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-qualifier="leveraged-tm">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 have entered a Mullvad account number instead of a voucher code. Do you want to log in to an existing account? If so, click log out below to log in with the other account number." xml:space="preserve"> - <source>It looks like you have entered a Mullvad account number instead of a voucher code. Do you want to log in to an existing account? -If so, click log out below to log in with the other account number.</source> - <target state-qualifier="leveraged-mt">Es sieht so aus, als hätten Sie statt eines Gutscheincodes eine Mullvad-Kontonummer eingegeben. Möchten Sie sich bei einem bestehenden Konto anmelden? -Wenn ja, klicken Sie unten auf Abmelden, um sich mit der anderen Kontonummer anzumelden.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Sprache</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Die letzten vier Ziffern der Kontonummer sind falsch</target> + <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-qualifier="leveraged-mt">Zuletzt genutztes Konto</target> + <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-qualifier="leveraged-mt">Erfahren Sie mehr über Privatsphäre</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Weniger als ein Tag</target> + <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-qualifier="leveraged-mt">Gemeinsames Netzwerk</target> + <target state-qualifier="leveraged-tm">Teilen im lokalen Netzwerk</target> <note/> </trans-unit> <trans-unit id="Log in" xml:space="preserve"> <source>Log in</source> - <target state-qualifier="leveraged-mt">Anmelden</target> + <target state="needs-translation">Log in</target> <note/> </trans-unit> <trans-unit id="Log out" xml:space="preserve"> <source>Log out</source> - <target state-qualifier="leveraged-mt">Abmelden</target> + <target state-qualifier="leveraged-tm">Abmelden</target> <note/> </trans-unit> <trans-unit id="Logged in" xml:space="preserve"> <source>Logged in</source> - <target state-qualifier="leveraged-mt">Angemeldet</target> + <target state-qualifier="leveraged-tm">Angemeldet</target> <note/> </trans-unit> <trans-unit id="Logging in..." xml:space="preserve"> <source>Logging in...</source> - <target state-qualifier="leveraged-mt">Anmelden...</target> + <target state-qualifier="leveraged-tm">Anmeldung läuft...</target> <note/> </trans-unit> <trans-unit id="Logging out..." xml:space="preserve"> <source>Logging out...</source> - <target state-qualifier="leveraged-mt">Abmelden...</target> + <target state="needs-translation">Logging out...</target> <note/> </trans-unit> <trans-unit id="Login" xml:space="preserve"> <source>Login</source> - <target state-qualifier="leveraged-mt">Anmelden</target> + <target state-qualifier="leveraged-tm">Anmelden</target> <note/> </trans-unit> <trans-unit id="Login failed" xml:space="preserve"> <source>Login failed</source> - <target state-qualifier="leveraged-mt">Login fehlgeschlagen</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Kaufen Sie mit StoreKit2</target> + <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-qualifier="leveraged-mt">Malware</target> + <target state="needs-translation">Malware</target> <note/> </trans-unit> <trans-unit id="Manage default and setup custom methods to access the Mullvad API." xml:space="preserve"> <source>Manage default and setup custom methods to access the Mullvad API.</source> - <target state-qualifier="leveraged-mt">Verwalten Sie die Standardeinstellungen und konfigurieren Sie benutzerdefinierte Methoden, um auf die Mullvad API zuzugreifen.</target> + <target state="needs-translation">Manage default and setup custom methods to access the Mullvad API.</target> <note/> </trans-unit> <trans-unit id="Manage default and setup custom methods to access the Mullvad API. " xml:space="preserve"> <source>Manage default and setup custom methods to access the Mullvad API. </source> - <target state-qualifier="leveraged-mt">Verwalten Sie die Standardeinstellungen und konfigurieren Sie benutzerdefinierte Methoden, um auf die Mullvad API zuzugreifen. </target> + <target state="needs-translation">Manage default and setup custom methods to access the Mullvad API. </target> <note/> </trans-unit> <trans-unit id="Manage devices" xml:space="preserve"> <source>Manage devices</source> - <target state-qualifier="leveraged-mt">Geräte verwalten</target> + <target state-qualifier="leveraged-tm">Geräte verwalten</target> <note/> </trans-unit> <trans-unit id="Method settings" xml:space="preserve"> <source>Method settings</source> - <target state-qualifier="leveraged-mt">Methodeneinstellungen</target> + <target state="needs-translation">Method settings</target> <note/> </trans-unit> <trans-unit id="Mullvad bridges" xml:space="preserve"> <source>Mullvad bridges</source> - <target state-qualifier="leveraged-mt">Mullvad Brücken</target> + <target state="needs-translation">Mullvad bridges</target> <note/> </trans-unit> <trans-unit id="Multihop" xml:space="preserve"> <source>Multihop</source> - <target state-qualifier="leveraged-mt">Mehrfachbogen</target> + <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-qualifier="leveraged-mt">Multihop wird verwendet, um DAITA für Ihren ausgewählten Standort zu aktivieren.</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-qualifier="leveraged-mt">Multihop leitet Ihren Datenverkehr auf einen WireGuard-Server und einen anderen aus, was es schwieriger macht, ihn zu verfolgen. -Dies führt zu erhöhter Latenz, erhöht aber die Anonymität online.</target> + <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-qualifier="leveraged-mt">Multihop führt Ihren Traffic auf einen WireGuard-Server und einen anderen aus, wodurch es schwieriger wird, das Aufspüren zu erschweren. Dies führt zu erhöhter Latenz, erhöht aber die Anonymität online.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Mehrere Validierungsfehler sind aufgetreten.</target> + <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-qualifier="leveraged-mt">NETZWERK ISSUES</target> + <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-qualifier="leveraged-mt">NEUE GERÄT ERSTELLT</target> + <target state-qualifier="leveraged-tm">NEUES GERÄT ERSTELLT</target> <note/> </trans-unit> <trans-unit id="NEW VERSION INSTALLED" xml:space="preserve"> <source>NEW VERSION INSTALLED</source> - <target state-qualifier="leveraged-mt">NEUE VERSION INSTALLED</target> + <target state-qualifier="leveraged-tm">NEUE VERSION INSTALLIERT</target> <note/> </trans-unit> <trans-unit id="Name" xml:space="preserve"> <source>Name</source> - <target state-qualifier="leveraged-mt">Name</target> + <target state="needs-translation">Name</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-qualifier="leveraged-mt">Name darf nicht länger als %i Zeichen sein.</target> + <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-qualifier="leveraged-mt">Netzwerkfehler: %@</target> + <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-qualifier="leveraged-mt">Neue benutzerdefinierte Liste</target> + <target state="needs-translation">New custom list</target> <note/> </trans-unit> <trans-unit id="Next" xml:space="preserve"> <source>Next</source> - <target state-qualifier="leveraged-mt">Nächste</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Keine DAITA-kompatiblen Server stimmen mit Ihren Standorteinstellungen überein. Versuchen Sie, den Standort zu ändern.</target> + <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-qualifier="leveraged-mt">Keine passenden Relais gefunden, überprüfen Sie Ihre Filtereinstellungen.</target> + <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-qualifier="leveraged-mt">Keine passenden Server</target> + <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-qualifier="leveraged-mt">Kein Netzwerk</target> + <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-qualifier="leveraged-mt">Keine importierten Überschreibungen</target> + <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-qualifier="leveraged-mt">Keine Server stimmen mit Ihrem Standortfilter überein. Versuchen Sie, die Filtereinstellungen zu ändern.</target> + <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-qualifier="leveraged-mt">Keine Server entsprechen deinen Einstellungen, versuche Server oder andere Einstellungen zu ändern.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">ZEIT VON ZEIT</target> + <target state-qualifier="leveraged-tm">ZEIT ABGELAUFEN</target> <note/> </trans-unit> <trans-unit id="Obfuscation" xml:space="preserve"> <source>Obfuscation</source> - <target state-qualifier="leveraged-mt">Verschleierung</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Verschleierung versteckt den WireGuard-Verkehr innerhalb eines anderen Protokolls. Es kann verwendet werden, um Zensur und andere Filterarten zu umgehen, wo eine einfache WireGuard-Verbindung blockiert würde.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Verdeckt</target> + <target state="needs-translation">Obscured</target> <note/> </trans-unit> <trans-unit id="Off" xml:space="preserve"> <source>Off</source> - <target state-qualifier="leveraged-mt">Aus</target> + <target state-qualifier="leveraged-tm">Aus</target> <note/> </trans-unit> <trans-unit id="On" xml:space="preserve"> <source>On</source> - <target state-qualifier="leveraged-mt">An</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">In einigen Netzen, in denen verschiedene Arten von Zensur genutzt werden, werden unsere Server-IP-Adressen manchmal blockiert.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">In einigen Netzwerken, in denen verschiedene Arten von Zensur verwendet werden, sind die API-Server möglicherweise nicht direkt erreichbar.</target> + <target state-qualifier="leveraged-tm">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 DAITA settings" xml:space="preserve"> - <source>Open DAITA settings</source> - <target state-qualifier="leveraged-mt">DAITA-Einstellungen öffnen</target> + <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-qualifier="leveraged-mt">Optional</target> + <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-qualifier="leveraged-mt">Nicht mehr Zeit</target> + <target state-qualifier="leveraged-tm">Zeit abgelaufen</target> <note/> </trans-unit> <trans-unit id="Overrides active" xml:space="preserve"> <source>Overrides active</source> - <target state-qualifier="leveraged-mt">Überschreibt aktiv</target> + <target state-qualifier="leveraged-tm">Überschreibungen aktiv</target> <note/> </trans-unit> <trans-unit id="Owned" xml:space="preserve"> <source>Owned</source> - <target state-qualifier="leveraged-mt">Besitzt</target> + <target state-qualifier="leveraged-tm">In Besitz</target> <note/> </trans-unit> <trans-unit id="Ownership" xml:space="preserve"> <source>Ownership</source> - <target state-qualifier="leveraged-mt">Eigentum</target> + <target state-qualifier="leveraged-tm">Eigentümerschaft</target> <note/> </trans-unit> <trans-unit id="Paid until" xml:space="preserve"> <source>Paid until</source> - <target state-qualifier="leveraged-mt">Bezahlt bis</target> + <target state-qualifier="leveraged-tm">Bezahlt bis</target> <note/> </trans-unit> <trans-unit id="Password" xml:space="preserve"> <source>Password</source> - <target state-qualifier="leveraged-mt">Passwort</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Führt einen Verbindungstest an einen Mullvad-API-Server über diese Zugriffsmethode durch.</target> + <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-qualifier="leveraged-mt">Bitte geben Sie eine gültige IPv4 oder IPv6 Adresse ein.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Bitte geben Sie einen gültigen Port ein.</target> + <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-qualifier="leveraged-tm">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 "Restore purchases" button." xml:space="preserve"> <source>Please retry by using the "Restore purchases" button.</source> - <target state-qualifier="leveraged-mt">Bitte versuchen Sie es noch einmal, indem Sie den Button "Einkäufe wiederherstellen" verwenden.</target> + <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-qualifier="leveraged-mt">Port</target> + <target state="needs-translation">Port</target> <note/> </trans-unit> <trans-unit id="Port: %@" xml:space="preserve"> <source>Port: %@</source> - <target state-qualifier="leveraged-mt">Port: %@</target> + <target state="needs-translation">Port: %@</target> <note/> </trans-unit> <trans-unit id="Previous" xml:space="preserve"> <source>Previous</source> - <target state-qualifier="leveraged-mt">Vorherige</target> + <target state="needs-translation">Previous</target> <note/> </trans-unit> <trans-unit id="Providers" xml:space="preserve"> <source>Providers</source> - <target state-qualifier="leveraged-mt">Anbieter</target> + <target state-qualifier="leveraged-tm">Anbieter</target> <note/> </trans-unit> <trans-unit id="Providers: %d" xml:space="preserve"> <source>Providers: %d</source> - <target state-qualifier="leveraged-mt">Anbieter: %d</target> + <target state="needs-translation">Providers: %d</target> <note/> </trans-unit> <trans-unit id="QUIC" xml:space="preserve"> <source>QUIC</source> - <target state-qualifier="leveraged-mt">QUISCH</target> + <target state="needs-translation">QUIC</target> <note/> </trans-unit> <trans-unit id="Quantum resistance" xml:space="preserve"> <source>Quantum resistance</source> - <target state-qualifier="leveraged-mt">Quantenwiderstand</target> + <target state-qualifier="leveraged-tm">Quantenresistenz</target> <note/> </trans-unit> <trans-unit id="Quantum secure connection" xml:space="preserve"> <source>Quantum secure connection</source> - <target state-qualifier="leveraged-mt">Quantensichere Verbindung</target> + <target state="needs-translation">Quantum secure connection</target> <note/> </trans-unit> <trans-unit id="Quantum secure connection. Connected to %@, %@" xml:space="preserve"> <source>Quantum secure connection. Connected to %1$@, %2$@</source> - <target state-qualifier="leveraged-mt">Sichere Quantenverbindung. Verbunden mit %1$@, %2$@</target> + <target state="needs-translation">Quantum secure connection. Connected to %1$@, %2$@</target> <note/> </trans-unit> <trans-unit id="Quantum-resistant tunnel" xml:space="preserve"> <source>Quantum-resistant tunnel</source> - <target state-qualifier="leveraged-mt">Quantenresistenter Tunnel</target> + <target state-qualifier="leveraged-tm">Quantenresistenter Tunnel</target> <note/> </trans-unit> <trans-unit id="Reconnecting" xml:space="preserve"> <source>Reconnecting</source> - <target state-qualifier="leveraged-mt">Erneut verbinden</target> + <target state-qualifier="leveraged-tm">Wiederherstellen der Verbindung</target> <note/> </trans-unit> <trans-unit id="Reconnecting to %@, %@" xml:space="preserve"> <source>Reconnecting to %1$@, %2$@</source> - <target state-qualifier="leveraged-mt">Verbinde dich mit %1$@, %2$@</target> + <target state="needs-translation">Reconnecting to %1$@, %2$@</target> <note/> </trans-unit> <trans-unit id="Redeem" xml:space="preserve"> <source>Redeem</source> - <target state-qualifier="leveraged-mt">Redeem</target> + <target state-qualifier="leveraged-tm">Einlösen</target> <note/> </trans-unit> <trans-unit id="Redeem voucher" xml:space="preserve"> <source>Redeem voucher</source> - <target state-qualifier="leveraged-mt">Redeem voucher</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Letzten Kauf mit StoreKit2 erstatten</target> + <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-qualifier="leveraged-mt">Rückerstattung erfolgreich</target> + <target state="needs-translation">Refund successful</target> + <note/> + </trans-unit> + <trans-unit id="Remove" xml:space="preserve"> + <source>Remove</source> + <target state-qualifier="leveraged-tm">Entfernen</target> + <note/> + </trans-unit> + <trans-unit id="Remove %@?" xml:space="preserve"> + <source>Remove %@?</source> + <target state-qualifier="leveraged-tm">%@ entfernen?</target> <note/> </trans-unit> <trans-unit id="Remove last used account" xml:space="preserve"> <source>Remove last used account</source> - <target state-qualifier="leveraged-mt">Letztes Konto entfernen</target> + <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. 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-qualifier="leveraged-mt">Vermietung</target> + <target state-qualifier="leveraged-tm">Gemietet</target> <note/> </trans-unit> <trans-unit id="Report a problem" xml:space="preserve"> <source>Report a problem</source> - <target state-qualifier="leveraged-mt">Ein Problem melden</target> + <target state-qualifier="leveraged-tm">Problem melden</target> <note/> </trans-unit> <trans-unit id="Required" xml:space="preserve"> <source>Required</source> - <target state-qualifier="leveraged-mt">Benötigt</target> + <target state-qualifier="leveraged-tm">Erforderlich</target> <note/> </trans-unit> <trans-unit id="Restore purchases" xml:space="preserve"> <source>Restore purchases</source> - <target state-qualifier="leveraged-mt">Käufe wiederherstellen</target> + <target state="needs-translation">Restore purchases</target> <note/> </trans-unit> <trans-unit id="Save" xml:space="preserve"> <source>Save</source> - <target state-qualifier="leveraged-mt">Speichern</target> + <target state-qualifier="leveraged-tm">Speichern</target> <note/> </trans-unit> <trans-unit id="Save anyway" xml:space="preserve"> <source>Save anyway</source> - <target state-qualifier="leveraged-mt">Trotzdem speichern</target> + <target state="needs-translation">Save anyway</target> <note/> </trans-unit> <trans-unit id="Saving changes..." xml:space="preserve"> <source>Saving changes...</source> - <target state-qualifier="leveraged-mt">Änderungen werden gespeichert...</target> + <target state="needs-translation">Saving changes...</target> <note/> </trans-unit> <trans-unit id="Search for..." xml:space="preserve"> <source>Search for...</source> - <target state-qualifier="leveraged-mt">Suche nach...</target> + <target state-qualifier="leveraged-tm">Suchen nach …</target> <note/> </trans-unit> <trans-unit id="Secure connection. Connected to %@, %@" xml:space="preserve"> <source>Secure connection. Connected to %1$@, %2$@</source> - <target state-qualifier="leveraged-mt">Sichere Verbindung. %1$@, %2$@</target> + <target state="needs-translation">Secure connection. Connected to %1$@, %2$@</target> <note/> </trans-unit> <trans-unit id="Select location" xml:space="preserve"> <source>Select location</source> - <target state-qualifier="leveraged-mt">Standort auswählen</target> + <target state-qualifier="leveraged-tm">Ort auswählen</target> <note/> </trans-unit> <trans-unit id="Selected" xml:space="preserve"> <source>Selected</source> - <target state-qualifier="leveraged-mt">Ausgewählt</target> + <target state="needs-translation">Selected</target> <note/> </trans-unit> <trans-unit id="Send" xml:space="preserve"> <source>Send</source> - <target state-qualifier="leveraged-mt">Senden</target> + <target state-qualifier="leveraged-tm">Senden</target> <note/> </trans-unit> <trans-unit id="Send anyway" xml:space="preserve"> <source>Send anyway</source> - <target state-qualifier="leveraged-mt">Trotzdem senden</target> + <target state-qualifier="leveraged-tm">Trotzdem senden</target> <note/> </trans-unit> <trans-unit id="Sending..." xml:space="preserve"> <source>Sending...</source> - <target state-qualifier="leveraged-mt">Senden...</target> + <target state-qualifier="leveraged-tm">Wird gesendet...</target> <note/> </trans-unit> <trans-unit id="Sent" xml:space="preserve"> <source>Sent</source> - <target state-qualifier="leveraged-mt">Gesendet</target> + <target state-qualifier="leveraged-tm">Gesendet</target> <note/> </trans-unit> <trans-unit id="Server" xml:space="preserve"> <source>Server</source> - <target state-qualifier="leveraged-mt">Server</target> + <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-qualifier="leveraged-mt">Server-IP-Überschreibung</target> + <target state="needs-translation">Server IP Override</target> <note/> </trans-unit> <trans-unit id="Server IP override" xml:space="preserve"> <source>Server IP override</source> - <target state-qualifier="leveraged-mt">Server-IP-Überschreibung</target> + <target state-qualifier="leveraged-tm">Server-IP überschreiben</target> <note/> </trans-unit> <trans-unit id="Server details" xml:space="preserve"> <source>Server details</source> - <target state-qualifier="leveraged-mt">Serverdetails</target> - <note/> - </trans-unit> - <trans-unit id="Setting: DAITA" xml:space="preserve"> - <source>Setting: DAITA</source> - <target state-qualifier="leveraged-mt">Einstellung: DAITA</target> + <target state-qualifier="leveraged-tm">Serverdaten</target> <note/> </trans-unit> - <trans-unit id="Setting: Obfuscation" xml:space="preserve"> - <source>Setting: Obfuscation</source> - <target state-qualifier="leveraged-mt">Einstellung: Verschleierung</target> + <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-qualifier="leveraged-mt">Einstellungen</target> + <target state-qualifier="leveraged-tm">Einstellungen</target> <note/> </trans-unit> <trans-unit id="Settings migration error" xml:space="preserve"> <source>Settings migration error</source> - <target state-qualifier="leveraged-mt">Einstellungs-Migrationsfehler</target> + <target state="needs-translation">Settings migration error</target> <note/> </trans-unit> <trans-unit id="Shadowsocks" xml:space="preserve"> <source>Shadowsocks</source> - <target state-qualifier="leveraged-mt">Schattensocken</target> + <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-qualifier="leveraged-mt">Kontonummer anzeigen</target> + <target state-qualifier="leveraged-tm">Kontonummer anzeigen</target> <note/> </trans-unit> <trans-unit id="Social media" xml:space="preserve"> <source>Social media</source> - <target state-qualifier="leveraged-mt">Soziale Medien</target> + <target state-qualifier="leveraged-tm">Social Media</target> <note/> </trans-unit> <trans-unit id="Socks5" xml:space="preserve"> <source>Socks5</source> - <target state-qualifier="leveraged-mt">Socks5</target> + <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-qualifier="leveraged-mt">Mit der App beginnen</target> + <target state-qualifier="leveraged-tm">Mit dem Benutzen der App anfangen</target> <note/> </trans-unit> <trans-unit id="Super!" xml:space="preserve"> <source>Super!</source> - <target state-qualifier="leveraged-mt">Super!</target> + <target state="needs-translation">Super!</target> <note/> </trans-unit> <trans-unit id="Switch location" xml:space="preserve"> <source>Switch location</source> - <target state-qualifier="leveraged-mt">Standort wechseln</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">TUNNEL FEHLER</target> + <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-qualifier="leveraged-mt">Tippe **Bearbeiten** um mindestens einen DNS-Server hinzuzufügen.</target> + <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-qualifier="leveraged-mt">Testmethode</target> + <target state-qualifier="leveraged-tm">Methode testen</target> <note/> </trans-unit> <trans-unit id="Testing..." xml:space="preserve"> <source>Testing...</source> - <target state-qualifier="leveraged-mt">Testen...</target> + <target state-qualifier="leveraged-tm">Testen …</target> <note/> </trans-unit> <trans-unit id="Thanks for your purchase" xml:space="preserve"> <source>Thanks for your purchase</source> - <target state-qualifier="leveraged-mt">Vielen Dank für Ihren Kauf</target> + <target state="needs-translation">Thanks for your purchase</target> <note/> </trans-unit> <trans-unit id="Thanks!" xml:space="preserve"> <source>Thanks!</source> - <target state-qualifier="leveraged-mt">Danke!</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Die App kommuniziert direkt mit einem Mullvad API-Server.</target> + <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-qualifier="leveraged-mt">Die App kommuniziert mit einem Mullvad API-Server über einen Mullvad Bridge-Server.</target> + <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-qualifier="leveraged-mt">Die App kommuniziert mit einem Mullvad API-Server über eine Proxy-Adresse.</target> + <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-qualifier="leveraged-mt">Die App muss mit einem Mullvad-API-Server kommunizieren, um sich anzumelden, Serverlisten abzurufen und andere kritische Operationen durchzuführen.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Die App wird die Methode vor dem Speichern testen.</target> + <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. The custom port can be any value inside the valid ranges: %@" xml:space="preserve"> - <source>The automatic setting will randomly choose from the valid port ranges shown below. -The custom port can be any value inside the valid ranges: -%@</source> - <target state-qualifier="leveraged-mt">Die automatische Einstellung wird zufällig aus den unten angezeigten Portbereichen auswählen. -Der benutzerdefinierte Port kann ein beliebiger Wert innerhalb der gültigen Bereiche sein: -%@</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Die Ein- und Ausstiegsserver können nicht identisch sein. Versuchen Sie, einen zu einem neuen Server oder Standort zu wechseln.</target> + <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 multihop is currently overridden by DAITA. To select an entry server, please first enable “Direct only” or disable “DAITA” in the settings." xml:space="preserve"> - <source>The entry server for multihop is currently overridden by DAITA. To select an entry server, please first enable “Direct only” or disable “DAITA” in the settings.</source> - <target state-qualifier="leveraged-mt">Der Einstiegsserver für Multihop wird derzeit von DAITA überschrieben. Um einen Eintragsserver auszuwählen, aktivieren Sie bitte zuerst „Nur Direkt“ oder deaktivieren Sie „DAITA“ in den Einstellungen.</target> + <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-qualifier="leveraged-mt">Die Zahlungsaufforderung wurde abgebrochen.</target> + <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-qualifier="leveraged-mt">Der ausgewählte WireGuard-Port wird nicht unterstützt, bitte ändern Sie ihn unter **VPN-Einstellungen**.</target> + <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-qualifier="leveraged-mt">Die Version der auf dem Gerät gespeicherten Einstellungen ist nicht erkannt. Die Einstellungen werden auf die Standardwerte zurückgesetzt und das Gerät wird abgemeldet.</target> + <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-qualifier="leveraged-mt">Dies kann nützlich sein, wenn die API zensiert wird, aber Mullvads Bridge-Server nicht.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Dies kann nützlich sein, wenn Sie nicht von Zensur betroffen sind.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Dieses Gerät ist nicht berechtigt, die Zahlung durchzuführen.</target> + <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. Attention: toggling “Local network sharing” requires restarting the VPN connection." xml:space="preserve"> - <source>This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc. -Attention: toggling “Local network sharing” requires restarting the VPN connection.</source> - <target state-qualifier="leveraged-mt">Diese Funktion ermöglicht den Zugriff auf andere Geräte im lokalen Netzwerk, wie zum Beispiel zum Teilen, Drucken, Streamen usw. -Achtung: Das Umschalten von "Lokales Netzwerkteilen" erfordert einen Neustart der VPN-Verbindung.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Mit dieser Funktion können Sie diese Zensur umgehen, indem Sie benutzerdefinierte Wege zum Zugriff auf die API über Proxies und ähnliche Methoden hinzufügen.</target> + <target state-qualifier="leveraged-tm">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. 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>This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers. -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-qualifier="leveraged-mt">Dieses Feature macht den WireGuard-Tunnel gegen potentielle Angriffe von Quantencomputern resistent. -Dies geschieht, indem ein zusätzlicher Schlüsselaustausch mit einem quantensicheren Algorithmus durchgeführt wird und das Ergebnis in WireGuards regulärer Verschlüsselung gemischt wird. -Dieser zusätzliche Schritt verwendet bei jedem Bau eines neuen Tunnels etwa 500 kiB Verkehr.</target> + <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-qualifier="leveraged-tm">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. You can have up to 5 devices logged in on one Mullvad account. 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>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. -You can have up to 5 devices logged in on one Mullvad account. -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-qualifier="leveraged-mt">Dies ist der Name, der dem Gerät zugewiesen ist. Jedes Gerät, das sich auf einem Mullvad-Konto eingeloggt hat, erhält einen einzigartigen Namen, der Ihnen hilft, ihn zu identifizieren, wenn Sie Ihre Geräte in der App oder auf der Website verwalten. -Du kannst bis zu 5 Geräte auf einem Mullvad Konto eingeloggt haben. -Wenn Sie sich abmelden, wird das Gerät und der Gerätename entfernt. Wenn Sie sich erneut anmelden, erhält das Gerät einen neuen Namen.</target> + <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-qualifier="leveraged-tm">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 "Delete account" 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-qualifier="leveraged-mt">Dies protokolliert alle Geräte, die dieses Konto nutzen, und alle VPN-Zugriffe werden verweigert, selbst wenn noch Zeit auf dem Konto bleibt. Geben Sie die letzten 4 Ziffern der Kontonummer ein und klicken Sie auf "Konto löschen", wenn Sie das Konto wirklich löschen möchten:</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Dieser Gutscheincode wurde bereits verwendet.</target> + <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-qualifier="leveraged-mt">Verbleibende Zeit: %@</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Um Ihnen besser zu helfen, schreiben Sie bitte auf Englisch oder Schwedisch und legen Sie fest, aus welchem Land Sie sich verbinden.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Um dies zu umgehen, können Sie eine Datei oder einen Text importieren, der von unserem Support-Team bereitgestellt wird mit neuen IP-Adressen, die die Standardadressen der Server in der Standortansicht auswählen überschreiben.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">Besuchen Sie unsere Website, um mehr über datenschutzfreundliche Gewohnheiten & Tools zu erfahren und Ihre Reise als Datenschutz-Ninja fortzufahren.</target> <note/> </trans-unit> <trans-unit id="To create a custom list, tap on "..." " xml:space="preserve"> <source>To create a custom list, tap on "..." </source> - <target state-qualifier="leveraged-mt">Um eine benutzerdefinierte Liste zu erstellen, tippen Sie auf "..." </target> + <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-qualifier="leveraged-mt">Um diese Einstellung zu aktivieren, fügen Sie mindestens einen Server hinzu.</target> + <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-qualifier="leveraged-mt">Um Ihnen effektiver zu helfen, wird die Protokolldatei Ihrer App an diese Nachricht angehängt. Ihre Daten bleiben sicher und privat, da sie anonymisiert sind, bevor sie über einen verschlüsselten Kanal gesendet werden.</target> + <target state-qualifier="leveraged-tm">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. Either buy credit on our website or redeem a voucher." xml:space="preserve"> - <source>To start using the app, you first need to add time to your account. Either buy credit on our website or redeem a voucher.</source> - <target state-qualifier="leveraged-mt">Um die App zu verwenden, müssen Sie zuerst Zeit zu Ihrem Konto hinzufügen. Kaufen Sie ein Guthaben auf unserer Website oder einlösen Sie einen Gutschein.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Zu viele Geräte</target> + <target state-qualifier="leveraged-tm">Zu viele Geräte</target> <note/> </trans-unit> <trans-unit id="Too many devices registered with account" xml:space="preserve"> <source>Too many devices registered with account</source> - <target state-qualifier="leveraged-mt">Zu viele Geräte mit Konto registriert</target> + <target state="needs-translation">Too many devices registered with account</target> <note/> </trans-unit> <trans-unit id="Trackers" xml:space="preserve"> <source>Trackers</source> - <target state-qualifier="leveraged-mt">Tracker</target> + <target state-qualifier="leveraged-tm">Tracker</target> <note/> </trans-unit> <trans-unit id="Try again" xml:space="preserve"> <source>Try again</source> - <target state-qualifier="leveraged-mt">Erneut versuchen</target> + <target state-qualifier="leveraged-tm">Erneut versuchen</target> <note/> </trans-unit> <trans-unit id="Tunnel is unset." xml:space="preserve"> <source>Tunnel is unset.</source> - <target state-qualifier="leveraged-mt">Tunnel ist nicht gesetzt.</target> + <target state="needs-translation">Tunnel is unset.</target> <note/> </trans-unit> <trans-unit id="Type" xml:space="preserve"> <source>Type</source> - <target state-qualifier="leveraged-mt">Typ</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">UDP-Over-TCP</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Konto konnte nicht authentifiziert werden. Bitte loggen Sie sich aus und melden Sie sich wieder an.</target> + <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-qualifier="leveraged-mt">Tunnelverbindung kann nach dem Update nicht gestartet werden. Bitte trennen und erneut verbinden.</target> + <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-qualifier="leveraged-mt">Tunnelverbindung konnte nicht gestartet werden. Bitte senden Sie einen Fehlerbericht.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Unerwartete Server-Antwort: %1$@ (HTTP-Status: %2$d)</target> + <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-qualifier="leveraged-mt">Unerwartete Server-Antwort: %d</target> + <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-qualifier="leveraged-mt">Unbekannter Fehler.</target> + <target state-qualifier="leveraged-tm">Unbekannter Fehler.</target> <note/> </trans-unit> <trans-unit id="Unsecured connection" xml:space="preserve"> <source>Unsecured connection</source> - <target state-qualifier="leveraged-mt">Ungesicherte Verbindung</target> + <target state="needs-translation">Unsecured connection</target> <note/> </trans-unit> <trans-unit id="Use custom DNS server" xml:space="preserve"> <source>Use custom DNS server</source> - <target state-qualifier="leveraged-mt">Eigenen DNS-Server verwenden</target> + <target state-qualifier="leveraged-tm">Benutzerdefinierten DNS-Server verwenden</target> <note/> </trans-unit> <trans-unit id="Username" xml:space="preserve"> <source>Username</source> - <target state-qualifier="leveraged-mt">Benutzername</target> + <target state-qualifier="leveraged-tm">Benutzername</target> <note/> </trans-unit> <trans-unit id="VPN settings" xml:space="preserve"> <source>VPN settings</source> - <target state-qualifier="leveraged-mt">VPN-Einstellungen</target> + <target state-qualifier="leveraged-tm">VPN-Einstellungen</target> <note/> </trans-unit> - <trans-unit id="Valid range: 1 - 65535" xml:space="preserve"> - <source>Valid range: 1 - 65535</source> - <target state-qualifier="leveraged-mt">Valid range: 1 - 65535</target> + <trans-unit id="Valid range: %d - %d" xml:space="preserve"> + <source>Valid range: %1$d - %2$d</source> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Gutschein wird überprüft...</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">App-Logs anzeigen</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Gutscheincode ist ungültig.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Gutschein wurde erfolgreich eingelöst.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Warnung: Der Malware-Blocker ist kein Anti-Virus und sollte nicht als solche behandelt werden. Dies ist nur eine zusätzliche Schutzschicht.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Wir haben einige Probleme, bitte versuchen Sie es später erneut</target> + <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-qualifier="leveraged-mt">Wir werden uns damit befassen.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Willkommen, dieses Gerät heißt jetzt **%@**. Für weitere Details siehe den Info-Button im Konto.</target> + <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-qualifier="leveraged-mt">Was ist neu</target> + <trans-unit id="What’s new" xml:space="preserve"> + <source>What’s new</source> + <target state-qualifier="leveraged-tm">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. This might cause issues on certain websites, services, and apps. Attention: this setting cannot be used in combination with **Use custom DNS server**." 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. -This might cause issues on certain websites, services, and apps. -Attention: this setting cannot be used in combination with **Use custom DNS server**.</source> - <target state-qualifier="leveraged-mt">Wenn diese Funktion aktiviert ist, hält es das Gerät davon ab, bestimmte Domains oder Websites zu kontaktieren, die für die Verbreitung von Werbung, Malware, Tracker und mehr bekannt sind. -Dies kann Probleme auf bestimmten Webseiten, Diensten und Apps verursachen. -Achtung: diese Einstellung kann nicht in Kombination mit **Eigenen DNS-Server verwenden** verwendet werden.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Bei der Verwendung von DAITA ist ein Provider mit DAITA-fähigen Servern erforderlich.</target> + <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-qualifier="leveraged-mt">Welcher TCP-Port das UDP-over-TCP-Obfuscation-Protokoll sich auf dem VPN-Server verbinden soll.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">WireGuard Verschleierung</target> + <trans-unit id="WireGuard obfuscation" xml:space="preserve"> + <source>WireGuard obfuscation</source> + <target state-qualifier="leveraged-tm">WireGuard-Verschleierung</target> <note/> </trans-unit> - <trans-unit id="WireGuard ports" xml:space="preserve"> - <source>WireGuard ports</source> - <target state-qualifier="leveraged-mt">WireGuard Ports</target> + <trans-unit id="WireGuard port" xml:space="preserve"> + <source>WireGuard port</source> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Mit der "Direct" Methode kommuniziert die App direkt mit einem Mullvad API Server ohne Zwischenproxies.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Mit der "Verschlüsselten DNS-Proxy-Methode" wird die App über eine Proxy-Adresse mit unserer Mullvad-API kommunizieren. -Dies geschieht durch das Abrufen einer Adresse von einem DNS über den HTTPS (DoH) Server und die Verwendung dieser Adresse, um unsere API-Server zu erreichen.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Mit der "Mullvad Bridges"-Methode kommuniziert die App mit einem Mullvad API-Server über einen Mullvad Bridge-Server. Sie tut dies, indem sie den Verkehr verschleiert von Shadowsocks.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Ja, fortfahren</target> + <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-qualifier="leveraged-tm">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-translation">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.</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-qualifier="leveraged-mt">Sie sind im Begriff, den Problembericht ohne eine Möglichkeit an Sie zu senden. Wenn Sie eine Antwort auf Ihren Bericht wünschen, müssen Sie eine E-Mail-Adresse eingeben.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Sie sind mit einer ungültigen Kontonummer angemeldet. Bitte melden Sie sich ab und versuchen Sie eine andere.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Du kannst mehr Zeit über die Account-Ansicht oder Webseite hinzufügen, um das VPN weiter zu nutzen.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-tm">Sie können jetzt mit der Anmeldung auf diesem Gerät fortfahren.</target> <note/> </trans-unit> <trans-unit id="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." 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-qualifier="leveraged-mt">Sie können die Funktion "Wiederherstellungskäufe" verwenden, um alle In-App-Zahlungen über Apple-Dienste zu überprüfen. Wenn eine Zahlung nicht gutgeschrieben wurde, wird die Zeit dem derzeit eingeloggten Mullvad-Konto hinzugefügt.</target> + <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-qualifier="leveraged-mt">Sie haben %@ auf diesem Konto übrig.</target> + <target state="needs-translation">You have %@ left on this account.</target> <note/> </trans-unit> - <trans-unit id="You have no more VPN time left on this account. Either buy credit on our website or make an in-app purchase via the **Add time** button below." xml:space="preserve"> - <source>You have no more VPN time left on this account. Either buy credit on our website or make an in-app purchase via the **Add time** button below.</source> - <target state-qualifier="leveraged-mt">Du hast keine VPN-Zeit mehr auf diesem Konto. Kaufen Sie entweder Guthaben auf unserer Website oder tätigen Sie einen In-App-Kauf über die Schaltfläche **Zeit hinzufügen** unten.</target> + <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. 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." 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. To add more, you will need to disconnect and access the Internet with an unsecure connection." xml:space="preserve"> - <source>You have no more VPN time left on this account. To add more, you will need to disconnect and access the Internet with an unsecure connection.</source> - <target state-qualifier="leveraged-mt">Du hast keine VPN-Zeit mehr auf diesem Konto. Um mehr hinzuzufügen, müssen Sie die Verbindung trennen und mit einer unsicheren Verbindung auf das Internet zugreifen.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Du hast noch einen Tag auf diesem Konto. Bitte füge mehr Zeit hinzu, um das VPN weiter zu nutzen.</target> + <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-qualifier="leveraged-mt">Sie haben dieses Gerät entfernt. Um sich erneut zu verbinden, müssen Sie sich wieder anmelden.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Sie haben ungespeicherte Änderungen.</target> + <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-qualifier="leveraged-mt">Ihr Gerät ist offline. Der Tunnel verbindet sich automatisch, sobald Ihr Gerät wieder online ist.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Ihr Gerät ist offline. Versuchen Sie sich erneut zu verbinden, wenn das Gerät Zugang zum Internet hat.</target> + <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-qualifier="leveraged-mt">Ihre E-Mail (optional)</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Ihre bisherigen Käufe wurden diesem Konto bereits hinzugefügt.</target> + <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-qualifier="leveraged-mt">Ihr Kauf wurde erfolgreich zurückerstattet.</target> + <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-qualifier="leveraged-mt">Du bist alles!!</target> + <target state-qualifier="leveraged-tm">Sie sind startklar!!</target> + <note/> + </trans-unit> + <trans-unit id="file" xml:space="preserve"> + <source>file</source> + <target state-qualifier="leveraged-tm">datei</target> <note/> </trans-unit> <trans-unit id="method" xml:space="preserve"> <source>method</source> - <target state-qualifier="leveraged-mt">Methode</target> + <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. To prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing. 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-qualifier="leveraged-mt">“%@ Local Network Sharing” erfordert einen Neustart der VPN-Verbindung, die dich trennt und deinen Traffic kurz offenbart. -Um dies zu verhindern, aktivieren Sie den Flugmodus manuell und deaktivieren Sie das WLAN, bevor Sie fortfahren. -Möchten Sie weiterhin "Lokales Netzwerkteilen" aktivieren?</target> + <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/MullvadMockData-InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext"> + <file original="Assets/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> @@ -1840,7 +2085,7 @@ Möchten Sie weiterhin "Lokales Netzwerkteilen" aktivieren?</target> </trans-unit> </body> </file> - <file original="Assets/MullvadRustRuntime-InfoPlist.xcstrings" source-language="en" target-language="de" datatype="plaintext"> + <file original="Assets/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> @@ -1852,7 +2097,7 @@ Möchten Sie weiterhin "Lokales Netzwerkteilen" aktivieren?</target> </trans-unit> </body> </file> - <file original="en.lproj/MullvadLogging-InfoPlist.strings" source-language="en" target-language="de" datatype="plaintext"> + <file original="Assets/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> @@ -1864,7 +2109,7 @@ Möchten Sie weiterhin "Lokales Netzwerkteilen" aktivieren?</target> </trans-unit> </body> </file> - <file original="en.lproj/MullvadSettings-InfoPlist.strings" source-language="en" target-language="de" datatype="plaintext"> + <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> @@ -1876,7 +2121,7 @@ Möchten Sie weiterhin "Lokales Netzwerkteilen" aktivieren?</target> </trans-unit> </body> </file> - <file original="en.lproj/MullvadTypes-InfoPlist.strings" source-language="en" target-language="de" datatype="plaintext"> + <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> @@ -1888,7 +2133,7 @@ Möchten Sie weiterhin "Lokales Netzwerkteilen" aktivieren?</target> </trans-unit> </body> </file> - <file original="en.lproj/Operations-InfoPlist.strings" source-language="en" target-language="de" datatype="plaintext"> + <file original="Assets/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> @@ -1900,7 +2145,7 @@ Möchten Sie weiterhin "Lokales Netzwerkteilen" aktivieren?</target> </trans-unit> </body> </file> - <file original="en.lproj/PacketTunnelCore-InfoPlist.strings" source-language="en" target-language="de" datatype="plaintext"> + <file original="Assets/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> @@ -1912,7 +2157,7 @@ Möchten Sie weiterhin "Lokales Netzwerkteilen" aktivieren?</target> </trans-unit> </body> </file> - <file original="en.lproj/Routing-InfoPlist.strings" source-language="en" target-language="de" datatype="plaintext"> + <file original="Assets/Resources/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> @@ -1924,7 +2169,7 @@ Möchten Sie weiterhin "Lokales Netzwerkteilen" aktivieren?</target> </trans-unit> </body> </file> - <file original="MullvadREST/en.lproj/InfoPlist.strings" source-language="en" target-language="de" datatype="plaintext"> + <file original="Assets/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> @@ -1936,23 +2181,16 @@ Möchten Sie weiterhin "Lokales Netzwerkteilen" aktivieren?</target> </trans-unit> </body> </file> - <file original="MullvadVPN/Supporting Files/en.lproj/InfoPlist.strings" source-language="en" target-language="de" datatype="plaintext"> + <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-qualifier="leveraged-mt">Die App benötigt dies, um sich zu verbinden und eine neue Methode zu testen.</target> + <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="PacketTunnel/en.lproj/InfoPlist.strings" 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> </xliff> diff --git a/ios/translation/locales/en.xliff b/ios/translation/locales/en.xliff index 00cccde957..c8c2cacaf6 100644 --- a/ios/translation/locales/en.xliff +++ b/ios/translation/locales/en.xliff @@ -1,5 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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/InfoPlist.xcstrings" source-language="en" target-language="en" 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="Assets/Localizable.xcstrings" source-language="en" target-language="en" datatype="plaintext"> <header> <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/> @@ -10,11 +17,21 @@ <target state="new">%@</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="new">%1$@ (%2$@) hides patterns in your encrypted VPN traffic.</target> + <note/> + </trans-unit> <trans-unit id="%@ cannot be empty." xml:space="preserve"> <source>%@ cannot be empty.</source> <target state="new">%@ 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="new">%@ does this by carefully adding network noise and making all network packets the same size.</target> + <note/> + </trans-unit> <trans-unit id="%@ have been added to your account" xml:space="preserve"> <source>%@ have been added to your account</source> <target state="new">%@ have been added to your account</target> @@ -25,32 +42,44 @@ <target state="new">%@ left on this account</target> <note/> </trans-unit> + <trans-unit id="%@ via %@" xml:space="preserve"> + <source>%1$@ via %2$@</source> + <target state="new">%1$@ via %2$@</target> + <note/> + </trans-unit> <trans-unit id="%@ were added to your account." xml:space="preserve"> <source>%@ were added to your account.</source> <target state="new">%@ were added to your account.</target> <note/> </trans-unit> + <trans-unit id="%@, %@" xml:space="preserve"> + <source>%1$@, %2$@</source> + <target state="new">%1$@, %2$@</target> + <note/> + </trans-unit> + <trans-unit id="%@: Multihop" xml:space="preserve"> + <source>%@: Multihop</source> + <target state="new">%@: Multihop</target> + <note/> + </trans-unit> <trans-unit id="%d more..." xml:space="preserve"> <source>%d more...</source> <target state="new">%d more...</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.** DAITA (Defense against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. 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>**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.** - -DAITA (Defense against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. - -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="new">**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.** - -DAITA (Defense against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. - -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> + <trans-unit id="%lld more..." xml:space="preserve"> + <source>%lld more...</source> + <target state="new">%lld more...</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="new">**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.**</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="new">**Tap here** to see what’s new.</target> + <trans-unit id="**Tap here** to see what’s new" xml:space="preserve"> + <source>**Tap here** to see what’s new</source> + <target state="new">**Tap here** to see what’s new</target> <note/> </trans-unit> <trans-unit id="A custom list with this name exists, please choose a unique name." xml:space="preserve"> @@ -63,11 +92,6 @@ By using sophisticated AI it’s possible to analyze the traffic of data packets <target state="new">API access</target> <note/> </trans-unit> - <trans-unit id="API could not be reached, save anyway?" xml:space="preserve"> - <source>API could not be reached, save anyway?</source> - <target state="new">API could not be reached, save anyway?</target> - <note/> - </trans-unit> <trans-unit id="API reachable" xml:space="preserve"> <source>API reachable</source> <target state="new">API reachable</target> @@ -78,6 +102,11 @@ By using sophisticated AI it’s possible to analyze the traffic of data packets <target state="new">API unreachable</target> <note/> </trans-unit> + <trans-unit id="API unreachable, save anyway?" xml:space="preserve"> + <source>API unreachable, save anyway?</source> + <target state="new">API unreachable, save anyway?</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> @@ -133,6 +162,11 @@ By using sophisticated AI it’s possible to analyze the traffic of data packets <target state="new">Account number</target> <note/> </trans-unit> + <trans-unit id="Active features" xml:space="preserve"> + <source>Active features</source> + <target state="new">Active features</target> + <note/> + </trans-unit> <trans-unit id="Add" xml:space="preserve"> <source>Add</source> <target state="new">Add</target> @@ -188,6 +222,11 @@ By using sophisticated AI it’s possible to analyze the traffic of data packets <target state="new">Adult content</target> <note/> </trans-unit> + <trans-unit id="Agree and continue" xml:space="preserve"> + <source>Agree and continue</source> + <target state="new">Agree and continue</target> + <note/> + </trans-unit> <trans-unit id="All" xml:space="preserve"> <source>All</source> <target state="new">All</target> @@ -218,11 +257,26 @@ By using sophisticated AI it’s possible to analyze the traffic of data packets <target state="new">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="new">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="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> + <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="new">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="new">Authentication</target> @@ -253,14 +307,14 @@ By using sophisticated AI it’s possible to analyze the traffic of data packets <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> <note/> </trans-unit> - <trans-unit id="By enabling "Direct only" you will have to manually select a server that is DAITA-enabled. Multihop won't automatically be used to enable DAITA with any server." xml:space="preserve"> - <source>By enabling "Direct only" you will have to manually select a server that is DAITA-enabled. Multihop won't automatically be used to enable DAITA with any server.</source> - <target state="new">By enabling "Direct only" you will have to manually select a server that is DAITA-enabled. Multihop won't automatically be used to enable DAITA with any server.</target> + <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="new">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 enabling "Direct only" you will have to manually select a server that is DAITA-enabled. This can cause you to end up in a blocked state until you have selected a compatible server in the "Select location" view." xml:space="preserve"> - <source>By enabling "Direct only" you will have to manually select a server that is DAITA-enabled. This can cause you to end up in a blocked state until you have selected a compatible server in the "Select location" view.</source> - <target state="new">By enabling "Direct only" you will have to manually select a server that is DAITA-enabled. This can cause you to end up in a blocked state until you have selected a compatible server in the "Select location" view.</target> + <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="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="Cancel" xml:space="preserve"> @@ -323,6 +377,11 @@ By using sophisticated AI it’s possible to analyze the traffic of data packets <target state="new">Client is not allowed to issue the request.</target> <note/> </trans-unit> + <trans-unit id="Collapse %@" xml:space="preserve"> + <source>Collapse %@</source> + <target state="new">Collapse %@</target> + <note/> + </trans-unit> <trans-unit id="Collapses this location." xml:space="preserve"> <source>Collapses this location.</source> <target state="new">Collapses this location.</target> @@ -333,11 +392,41 @@ By using sophisticated AI it’s possible to analyze the traffic of data packets <target state="new">Congrats!</target> <note/> </trans-unit> + <trans-unit id="Connect" xml:space="preserve"> + <source>Connect</source> + <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> + <note/> + </trans-unit> + <trans-unit id="Connecting..." xml:space="preserve"> + <source>Connecting...</source> + <target state="new">Connecting...</target> + <note/> + </trans-unit> + <trans-unit id="Connection details" xml:space="preserve"> + <source>Connection details</source> + <target state="new">Connection details</target> + <note/> + </trans-unit> + <trans-unit id="Continue with login" xml:space="preserve"> + <source>Continue with login</source> + <target state="new">Continue with login</target> + <note/> + </trans-unit> <trans-unit id="Copy to pasteboard" xml:space="preserve"> <source>Copy to pasteboard</source> <target state="new">Copy to pasteboard</target> @@ -358,6 +447,16 @@ By using sophisticated AI it’s possible to analyze the traffic of data packets <target state="new">Create account</target> <note/> </trans-unit> + <trans-unit id="Create new account" xml:space="preserve"> + <source>Create new account</source> + <target state="new">Create new account</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> @@ -373,6 +472,11 @@ By using sophisticated AI it’s possible to analyze the traffic of data packets <target state="new">Creating secure connection</target> <note/> </trans-unit> + <trans-unit id="Current device" xml:space="preserve"> + <source>Current device</source> + <target state="new">Current device</target> + <note/> + </trans-unit> <trans-unit id="Custom" xml:space="preserve"> <source>Custom</source> <target state="new">Custom</target> @@ -393,17 +497,6 @@ By using sophisticated AI it’s possible to analyze the traffic of data packets <target state="new">DAITA</target> <note/> </trans-unit> - <trans-unit id="DAITA (Defence against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. If anyone is monitoring your connection, this makes it significantly harder for them to identify what websites you are visiting. It does this by carefully adding network noise and making all network packets the same size. Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. Attention: Be cautious if you have a limited data plan as this feature will increase your network traffic." xml:space="preserve"> - <source>DAITA (Defence against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. If anyone is monitoring your connection, this makes it significantly harder for them to identify what websites you are visiting. -It does this by carefully adding network noise and making all network packets the same size. -Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. -Attention: Be cautious if you have a limited data plan as this feature will increase your network traffic.</source> - <target state="new">DAITA (Defence against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. If anyone is monitoring your connection, this makes it significantly harder for them to identify what websites you are visiting. -It does this by carefully adding network noise and making all network packets the same size. -Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. -Attention: Be cautious if you have a limited data plan as this feature will increase your network traffic.</target> - <note/> - </trans-unit> <trans-unit id="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." 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="new">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> @@ -434,11 +527,21 @@ Attention: Be cautious if you have a limited data plan as this feature will incr <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> <note/> </trans-unit> + <trans-unit id="Delete %@?" xml:space="preserve"> + <source>Delete %@?</source> + <target state="new">Delete %@?</target> + <note/> + </trans-unit> <trans-unit id="Delete Account" xml:space="preserve"> <source>Delete Account</source> <target state="new">Delete Account</target> @@ -489,9 +592,9 @@ Attention: Be cautious if you have a limited data plan as this feature will incr <target state="new">Direct only</target> <note/> </trans-unit> - <trans-unit id="Disable all content blockers to activate this setting." xml:space="preserve"> - <source>Disable all content blockers to activate this setting.</source> - <target state="new">Disable all content blockers to activate this setting.</target> + <trans-unit id="Disable all "%@" above to activate this setting." xml:space="preserve"> + <source>Disable all "%@" above to activate this setting.</source> + <target state="new">Disable all "%@" above to activate this setting.</target> <note/> </trans-unit> <trans-unit id="Disabled" xml:space="preserve"> @@ -514,11 +617,36 @@ Attention: Be cautious if you have a limited data plan as this feature will incr <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="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> + <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="new">Do you want to create a new account?</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="new">Do you want to delete the list **%@**?</target> + <note/> + </trans-unit> <trans-unit id="Done" xml:space="preserve"> <source>Done</source> <target state="new">Done</target> @@ -549,6 +677,16 @@ Attention: Be cautious if you have a limited data plan as this feature will incr <target state="new">Edit 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="new">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="new">Either buy credit on our website or redeem a voucher.</target> + <note/> + </trans-unit> <trans-unit id="Enable" xml:space="preserve"> <source>Enable</source> <target state="new">Enable</target> @@ -599,6 +737,11 @@ Attention: Be cautious if you have a limited data plan as this feature will incr <target state="new">Exit</target> <note/> </trans-unit> + <trans-unit id="Expand %@" xml:space="preserve"> + <source>Expand %@</source> + <target state="new">Expand %@</target> + <note/> + </trans-unit> <trans-unit id="Expands this location." xml:space="preserve"> <source>Expands this location.</source> <target state="new">Expands this location.</target> @@ -669,11 +812,9 @@ Attention: Be cautious if you have a limited data plan as this feature will incr <target state="new">Gambling</target> <note/> </trans-unit> - <trans-unit id="Go ahead and start using the app to begin reclaiming your online privacy. To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools." xml:space="preserve"> - <source>Go ahead and start using the app to begin reclaiming your online privacy. -To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools.</source> - <target state="new">Go ahead and start using the app to begin reclaiming your online privacy. -To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools.</target> + <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="new">Go ahead and start using the app to begin reclaiming your online privacy.</target> <note/> </trans-unit> <trans-unit id="Go to login" xml:space="preserve"> @@ -701,19 +842,9 @@ To continue your journey as a privacy ninja, visit our website to pick up other <target state="new">Hide account number</target> <note/> </trans-unit> - <trans-unit id="If an observer monitors these data packets, DAITA makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating. DAITA does this by carefully adding network noise and making all network packets the same size. Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. " xml:space="preserve"> - <source>If an observer monitors these data packets, DAITA makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating. - -DAITA does this by carefully adding network noise and making all network packets the same size. - -Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. -</source> - <target state="new">If an observer monitors these data packets, DAITA makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating. - -DAITA does this by carefully adding network noise and making all network packets the same size. - -Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. -</target> + <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> <note/> </trans-unit> <trans-unit id="If needed we will contact you at %@" xml:space="preserve"> @@ -721,16 +852,19 @@ Not all our servers are DAITA-enabled. Therefore, we use multihop automatically <target state="new">If needed we will contact you at %@</target> <note/> </trans-unit> + <trans-unit id="If so, click log out below to log in with the other account number." xml:space="preserve"> + <source>If so, click log out below to log in with the other account number.</source> + <target state="new">If so, click log out below to log in with the other account number.</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="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"> @@ -748,6 +882,11 @@ The DoH servers are hosted by one of the following providers: Quad9 or Cloudflar <target state="new">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="new">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.</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="new">If you still experience issues you can email our support directly at **%@**. Please attach your app log to your email.</target> @@ -758,24 +897,24 @@ The DoH servers are hosted by one of the following providers: Quad9 or Cloudflar <target state="new">Import</target> <note/> </trans-unit> - <trans-unit id="Import %@ was successful, overrides are now active." xml:space="preserve"> - <source>Import %@ was successful, overrides are now active.</source> - <target state="new">Import %@ was successful, overrides are now active.</target> + <trans-unit id="Import file" xml:space="preserve"> + <source>Import file</source> + <target state="new">Import file</target> <note/> </trans-unit> - <trans-unit id="Import %@ was unsuccessful, please try again." xml:space="preserve"> - <source>Import %@ was unsuccessful, please try again.</source> - <target state="new">Import %@ was unsuccessful, please try again.</target> + <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="new">Import files or text with new IP addresses for the servers in the Select location view.</target> <note/> </trans-unit> - <trans-unit id="Import file" xml:space="preserve"> - <source>Import file</source> - <target state="new">Import file</target> + <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="new">Import of %@ was successful, overrides are now active.</target> <note/> </trans-unit> - <trans-unit id="Import files or text with the new IP addresses for the servers in the Select location view." xml:space="preserve"> - <source>Import files or text with the new IP addresses for the servers in the Select location view.</source> - <target state="new">Import files or text with the new IP addresses for the servers in the Select location view.</target> + <trans-unit id="Import of %@ was unsuccessful, please try again." xml:space="preserve"> + <source>Import of %@ was unsuccessful, please try again.</source> + <target state="new">Import of %@ was unsuccessful, please try again.</target> <note/> </trans-unit> <trans-unit id="Import successful" xml:space="preserve"> @@ -788,6 +927,11 @@ The DoH servers are hosted by one of the following providers: Quad9 or Cloudflar <target state="new">Import via text</target> <note/> </trans-unit> + <trans-unit id="In" xml:space="preserve"> + <source>In</source> + <target state="new">In</target> + <note/> + </trans-unit> <trans-unit id="In use" xml:space="preserve"> <source>In use</source> <target state="new">In use</target> @@ -823,11 +967,14 @@ The DoH servers are hosted by one of the following providers: Quad9 or Cloudflar <target state="new">Invalid purchase identifier.</target> <note/> </trans-unit> - <trans-unit id="It looks like you have entered a Mullvad account number instead of a voucher code. Do you want to log in to an existing account? If so, click log out below to log in with the other account number." xml:space="preserve"> - <source>It looks like you have entered a Mullvad account number instead of a voucher code. Do you want to log in to an existing account? -If so, click log out below to log in with the other account number.</source> - <target state="new">It looks like you have entered a Mullvad account number instead of a voucher code. Do you want to log in to an existing account? -If so, click log out below to log in with the other account number.</target> + <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="new">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.</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="new">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.</target> <note/> </trans-unit> <trans-unit id="Language" xml:space="preserve"> @@ -940,13 +1087,6 @@ If so, click log out below to log in with the other account number.</target> <target state="new">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="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="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="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> @@ -1027,11 +1167,21 @@ This results in increased latency but increases anonymity online.</target> <target state="new">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="new">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="new">No servers match your settings, try changing server or other settings.</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="new">Not all our servers are %1$@-enabled. Therefore, we use multihop automatically to enable %2$@ with any server.</target> + <note/> + </trans-unit> <trans-unit id="OUT OF TIME" xml:space="preserve"> <source>OUT OF TIME</source> <target state="new">OUT OF TIME</target> @@ -1072,9 +1222,9 @@ This results in increased latency but increases anonymity online.</target> <target state="new">On some networks, where various types of censorship are being used, the API servers might not be directly reachable.</target> <note/> </trans-unit> - <trans-unit id="Open DAITA settings" xml:space="preserve"> - <source>Open DAITA settings</source> - <target state="new">Open DAITA settings</target> + <trans-unit id="Open %@ settings" xml:space="preserve"> + <source>Open %@ settings</source> + <target state="new">Open %@ settings</target> <note/> </trans-unit> <trans-unit id="Optional" xml:space="preserve"> @@ -1082,6 +1232,16 @@ This results in increased latency but increases anonymity online.</target> <target state="new">Optional</target> <note/> </trans-unit> + <trans-unit id="Out IPv4" xml:space="preserve"> + <source>Out IPv4</source> + <target state="new">Out IPv4</target> + <note/> + </trans-unit> + <trans-unit id="Out IPv6" xml:space="preserve"> + <source>Out IPv6</source> + <target state="new">Out IPv6</target> + <note/> + </trans-unit> <trans-unit id="Out of time" xml:space="preserve"> <source>Out of time</source> <target state="new">Out of time</target> @@ -1127,6 +1287,11 @@ This results in increased latency but increases anonymity online.</target> <target state="new">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="new">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.</target> + <note/> + </trans-unit> <trans-unit id="Please retry by using the "Restore purchases" button." xml:space="preserve"> <source>Please retry by using the "Restore purchases" button.</source> <target state="new">Please retry by using the "Restore purchases" button.</target> @@ -1212,11 +1377,28 @@ This results in increased latency but increases anonymity online.</target> <target state="new">Refund successful</target> <note/> </trans-unit> + <trans-unit id="Remove" xml:space="preserve"> + <source>Remove</source> + <target state="new">Remove</target> + <note/> + </trans-unit> + <trans-unit id="Remove %@?" xml:space="preserve"> + <source>Remove %@?</source> + <target state="new">Remove %@?</target> + <note/> + </trans-unit> <trans-unit id="Remove last used account" xml:space="preserve"> <source>Remove last used account</source> <target state="new">Remove last used account</target> <note/> </trans-unit> + <trans-unit id="Removing the saved account number from this device cannot be undone. 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="new">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="new">Rented</target> @@ -1312,14 +1494,9 @@ This results in increased latency but increases anonymity online.</target> <target state="new">Server details</target> <note/> </trans-unit> - <trans-unit id="Setting: DAITA" xml:space="preserve"> - <source>Setting: DAITA</source> - <target state="new">Setting: DAITA</target> - <note/> - </trans-unit> - <trans-unit id="Setting: Obfuscation" xml:space="preserve"> - <source>Setting: Obfuscation</source> - <target state="new">Setting: Obfuscation</target> + <trans-unit id="Setting: %@" xml:space="preserve"> + <source>Setting: %@</source> + <target state="new">Setting: %@</target> <note/> </trans-unit> <trans-unit id="Settings" xml:space="preserve"> @@ -1367,6 +1544,11 @@ This results in increased latency but increases anonymity online.</target> <target state="new">Switch location</target> <note/> </trans-unit> + <trans-unit id="TCP" xml:space="preserve"> + <source>TCP</source> + <target state="new">TCP</target> + <note/> + </trans-unit> <trans-unit id="TUNNEL ERROR" xml:space="preserve"> <source>TUNNEL ERROR</source> <target state="new">TUNNEL ERROR</target> @@ -1422,13 +1604,19 @@ This results in increased latency but increases anonymity online.</target> <target state="new">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. The custom port can be any value inside the valid ranges: %@" xml:space="preserve"> - <source>The automatic setting will randomly choose from the valid port ranges shown below. -The custom port can be any value inside the valid ranges: -%@</source> - <target state="new">The automatic setting will randomly choose from the valid port ranges shown below. -The custom port can be any value inside the valid ranges: -%@</target> + <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="new">The automatic setting will randomly choose from the valid port ranges shown below.</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="new">The custom port can be any value inside the valid ranges: %@.</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="new">The device will be removed from the list and logged out.</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"> @@ -1436,9 +1624,9 @@ The custom port can be any value inside the valid ranges: <target state="new">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 multihop is currently overridden by DAITA. To select an entry server, please first enable “Direct only” or disable “DAITA” in the settings." xml:space="preserve"> - <source>The entry server for multihop is currently overridden by DAITA. To select an entry server, please first enable “Direct only” or disable “DAITA” in the settings.</source> - <target state="new">The entry server for multihop is currently overridden by DAITA. To select an entry server, please first enable “Direct only” or disable “DAITA” in the settings.</target> + <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="new">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"> @@ -1471,11 +1659,9 @@ The custom port can be any value inside the valid ranges: <target state="new">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. Attention: toggling “Local network sharing” requires restarting the VPN connection." xml:space="preserve"> - <source>This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc. -Attention: toggling “Local network sharing” requires restarting the VPN connection.</source> - <target state="new">This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc. -Attention: toggling “Local network sharing” requires restarting the VPN connection.</target> + <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> <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"> @@ -1483,22 +1669,14 @@ Attention: toggling “Local network sharing” requires restarting the VPN conn <target state="new">This feature allows you to circumvent that censorship by adding custom ways to access the API via proxies and similar methods.</target> <note/> </trans-unit> - <trans-unit id="This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers. 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>This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers. -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="new">This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers. -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.</target> + <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="new">This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers.</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. You can have up to 5 devices logged in on one Mullvad account. 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>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. -You can have up to 5 devices logged in on one Mullvad account. -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="new">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. -You can have up to 5 devices logged in on one Mullvad account. -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.</target> + <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="new">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.</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 "Delete account" if you really want to delete the account:" xml:space="preserve"> @@ -1506,6 +1684,11 @@ If you log out, the device and the device name is removed. When you log back in <target state="new">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="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> @@ -1516,6 +1699,11 @@ If you log out, the device and the device name is removed. When you log back in <target state="new">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="new">To add more, you will need to disconnect and access the Internet with an unsecure connection.</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="new">To assist you better, please write in English or Swedish and include which country you are connecting from.</target> @@ -1526,6 +1714,11 @@ If you log out, the device and the device name is removed. When you log back in <target state="new">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.</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="new">To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools.</target> + <note/> + </trans-unit> <trans-unit id="To create a custom list, tap on "..." " xml:space="preserve"> <source>To create a custom list, tap on "..." </source> <target state="new">To create a custom list, tap on "..." </target> @@ -1541,9 +1734,9 @@ If you log out, the device and the device name is removed. When you log back in <target state="new">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.</target> <note/> </trans-unit> - <trans-unit id="To start using the app, you first need to add time to your account. Either buy credit on our website or redeem a voucher." xml:space="preserve"> - <source>To start using the app, you first need to add time to your account. Either buy credit on our website or redeem a voucher.</source> - <target state="new">To start using the app, you first need to add time to your account. Either buy credit on our website or redeem a voucher.</target> + <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="new">To start using the app, you first need to add time to your account.</target> <note/> </trans-unit> <trans-unit id="Too many devices" xml:space="preserve"> @@ -1576,6 +1769,11 @@ If you log out, the device and the device name is removed. When you log back in <target state="new">Type</target> <note/> </trans-unit> + <trans-unit id="UDP" xml:space="preserve"> + <source>UDP</source> + <target state="new">UDP</target> + <note/> + </trans-unit> <trans-unit id="UDP-over-TCP" xml:space="preserve"> <source>UDP-over-TCP</source> <target state="new">UDP-over-TCP</target> @@ -1631,9 +1829,9 @@ If you log out, the device and the device name is removed. When you log back in <target state="new">VPN settings</target> <note/> </trans-unit> - <trans-unit id="Valid range: 1 - 65535" xml:space="preserve"> - <source>Valid range: 1 - 65535</source> - <target state="new">Valid range: 1 - 65535</target> + <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> <note/> </trans-unit> <trans-unit id="Verifying voucher..." xml:space="preserve"> @@ -1641,6 +1839,11 @@ If you log out, the device and the device name is removed. When you log back in <target state="new">Verifying voucher...</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="new">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.</target> + <note/> + </trans-unit> <trans-unit id="View app logs" xml:space="preserve"> <source>View app logs</source> <target state="new">View app logs</target> @@ -1676,18 +1879,14 @@ If you log out, the device and the device name is removed. When you log back in <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> + <trans-unit id="What’s new" xml:space="preserve"> + <source>What’s new</source> + <target state="new">What’s new</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. This might cause issues on certain websites, services, and apps. Attention: this setting cannot be used in combination with **Use custom DNS server**." 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. -This might cause issues on certain websites, services, and apps. -Attention: this setting cannot be used in combination with **Use custom DNS server**.</source> - <target state="new">When this feature is enabled it stops the device from contacting certain domains or websites known for distributing ads, malware, trackers and more. -This might cause issues on certain websites, services, and apps. -Attention: this setting cannot be used in combination with **Use custom DNS server**.</target> + <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="new">When this feature is enabled it stops the device from contacting certain domains or websites known for distributing ads, malware, trackers and more.</target> <note/> </trans-unit> <trans-unit id="When using DAITA, one provider with DAITA-enabled servers is required." xml:space="preserve"> @@ -1700,31 +1899,29 @@ Attention: this setting cannot be used in combination with **Use custom DNS serv <target state="new">Which TCP port the UDP-over-TCP obfuscation protocol should connect to on the VPN server.</target> <note/> </trans-unit> - <trans-unit id="WireGuard Obfuscation" xml:space="preserve"> - <source>WireGuard Obfuscation</source> - <target state="new">WireGuard Obfuscation</target> + <trans-unit id="WireGuard obfuscation" xml:space="preserve"> + <source>WireGuard obfuscation</source> + <target state="new">WireGuard obfuscation</target> <note/> </trans-unit> - <trans-unit id="WireGuard ports" xml:space="preserve"> - <source>WireGuard ports</source> - <target state="new">WireGuard ports</target> + <trans-unit id="WireGuard port" xml:space="preserve"> + <source>WireGuard port</source> + <target state="new">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="new">With the "Direct" method, the app communicates with a Mullvad API server directly without any intermediate proxies.</target> + <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="new">With the “Direct” method, the app communicates with a Mullvad API server directly without any intermediate proxies.</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="new">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.</target> + <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="new">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.</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="new">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.</target> + <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="new">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.</target> <note/> </trans-unit> <trans-unit id="Yes, continue" xml:space="preserve"> @@ -1732,6 +1929,16 @@ It does this by retrieving an address from a DNS over HTTPS (DoH) server and the <target state="new">Yes, continue</target> <note/> </trans-unit> + <trans-unit id="Yes, log out device" xml:space="preserve"> + <source>Yes, log out device</source> + <target state="new">Yes, log out device</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="new">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.</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="new">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.</target> @@ -1747,6 +1954,16 @@ It does this by retrieving an address from a DNS over HTTPS (DoH) server and the <target state="new">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="new">You can have up to 5 devices logged in on one Mullvad account.</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="new">You can now continue logging in on this device.</target> + <note/> + </trans-unit> <trans-unit id="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." 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="new">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> @@ -1757,14 +1974,22 @@ It does this by retrieving an address from a DNS over HTTPS (DoH) server and the <target state="new">You have %@ left on this account.</target> <note/> </trans-unit> - <trans-unit id="You have no more VPN time left on this account. Either buy credit on our website or make an in-app purchase via the **Add time** button below." xml:space="preserve"> - <source>You have no more VPN time left on this account. Either buy credit on our website or make an in-app purchase via the **Add time** button below.</source> - <target state="new">You have no more VPN time left on this account. Either buy credit on our website or make an in-app purchase via the **Add time** button below.</target> + <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. 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." 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="new">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. To add more, you will need to disconnect and access the Internet with an unsecure connection." xml:space="preserve"> - <source>You have no more VPN time left on this account. To add more, you will need to disconnect and access the Internet with an unsecure connection.</source> - <target state="new">You have no more VPN time left on this account. To add more, you will need to disconnect and access the Internet with an unsecure connection.</target> + <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="new">You have no more VPN time left on this account. </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"> @@ -1812,11 +2037,31 @@ It does this by retrieving an address from a DNS over HTTPS (DoH) server and the <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> <note/> </trans-unit> + <trans-unit id="multihop" xml:space="preserve"> + <source>multihop</source> + <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> + <note/> + </trans-unit> <trans-unit id="“%@ 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”?" 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. @@ -1828,7 +2073,7 @@ Would you like to continue to enable “Local network sharing”?</target> </trans-unit> </body> </file> - <file original="Assets/MullvadMockData-InfoPlist.xcstrings" source-language="en" target-language="en" datatype="plaintext"> + <file original="Assets/MullvadLogging-InfoPlist.xcstrings" source-language="en" target-language="en" datatype="plaintext"> <header> <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/> </header> @@ -1840,7 +2085,7 @@ Would you like to continue to enable “Local network sharing”?</target> </trans-unit> </body> </file> - <file original="Assets/MullvadRustRuntime-InfoPlist.xcstrings" source-language="en" target-language="en" datatype="plaintext"> + <file original="Assets/MullvadMockData-InfoPlist.xcstrings" source-language="en" target-language="en" datatype="plaintext"> <header> <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/> </header> @@ -1852,107 +2097,100 @@ Would you like to continue to enable “Local network sharing”?</target> </trans-unit> </body> </file> - <file original="en.lproj/MullvadLogging-InfoPlist.strings" source-language="en" target-language="en" datatype="plaintext"> + <file original="Assets/MullvadRustRuntime-InfoPlist.xcstrings" source-language="en" target-language="en" 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>Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> + <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> <note>Copyright (human-readable)</note> </trans-unit> </body> </file> - <file original="en.lproj/MullvadSettings-InfoPlist.strings" source-language="en" target-language="en" datatype="plaintext"> + <file original="Assets/MullvadSettings-InfoPlist.xcstrings" source-language="en" target-language="en" 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>Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> + <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> <note>Copyright (human-readable)</note> </trans-unit> </body> </file> - <file original="en.lproj/MullvadTypes-InfoPlist.strings" source-language="en" target-language="en" datatype="plaintext"> + <file original="Assets/MullvadTypes-InfoPlist.xcstrings" source-language="en" target-language="en" 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>Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> + <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> <note>Copyright (human-readable)</note> </trans-unit> </body> </file> - <file original="en.lproj/Operations-InfoPlist.strings" source-language="en" target-language="en" datatype="plaintext"> + <file original="Assets/Operations-InfoPlist.xcstrings" source-language="en" target-language="en" 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>Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> + <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> <note>Copyright (human-readable)</note> </trans-unit> </body> </file> - <file original="en.lproj/PacketTunnelCore-InfoPlist.strings" source-language="en" target-language="en" datatype="plaintext"> + <file original="Assets/PacketTunnelCore-InfoPlist.xcstrings" source-language="en" target-language="en" 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>Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> + <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> <note>Copyright (human-readable)</note> </trans-unit> </body> </file> - <file original="en.lproj/Routing-InfoPlist.strings" source-language="en" target-language="en" datatype="plaintext"> + <file original="Assets/Resources/InfoPlist.xcstrings" source-language="en" target-language="en" 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>Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> + <target state="new">Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> <note>Copyright (human-readable)</note> </trans-unit> </body> </file> - <file original="MullvadREST/en.lproj/InfoPlist.strings" source-language="en" target-language="en" datatype="plaintext"> + <file original="Assets/Routing-InfoPlist.xcstrings" source-language="en" target-language="en" 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>Copyright © 2025 Mullvad VPN AB. All rights reserved.</target> + <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/en.lproj/InfoPlist.strings" source-language="en" target-language="en" datatype="plaintext"> + <file original="MullvadVPN/Supporting Files/InfoPlist.xcstrings" source-language="en" target-language="en" 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>The app needs this to connect and test a new method.</target> + <target state="new">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="PacketTunnel/en.lproj/InfoPlist.strings" source-language="en" target-language="en" datatype="plaintext"> - <header> - <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="16.4" build-num="16F6"/> - </header> - <body> - </body> - </file> </xliff> diff --git a/ios/translation/locales/fr.xliff b/ios/translation/locales/fr.xliff index cdc6419701..42ea5c73ec 100644 --- a/ios/translation/locales/fr.xliff +++ b/ios/translation/locales/fr.xliff @@ -1,5 +1,12 @@ <?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/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="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"/> @@ -7,601 +14,737 @@ <body> <trans-unit id="%@" xml:space="preserve"> <source>%@</source> - <target state-qualifier="leveraged-mt">%@</target> + <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-qualifier="leveraged-tm">%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-qualifier="leveraged-mt">%@ ne peut pas être vide.</target> + <target state-qualifier="leveraged-tm">%@ 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-qualifier="leveraged-tm">%@ 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="%@ have been added to your account" xml:space="preserve"> <source>%@ have been added to your account</source> - <target state-qualifier="leveraged-mt">%@ a été ajouté à votre compte</target> + <target state="needs-translation">%@ have been added to your account</target> <note/> </trans-unit> <trans-unit id="%@ left on this account" xml:space="preserve"> <source>%@ left on this account</source> - <target state-qualifier="leveraged-mt">%@ restant sur ce compte</target> + <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="%@ were added to your account." xml:space="preserve"> <source>%@ were added to your account.</source> - <target state-qualifier="leveraged-mt">%@ a été ajouté à votre compte.</target> + <target state="needs-translation">%@ were added to your account.</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-qualifier="leveraged-mt">%d de plus...</target> + <target state-qualifier="leveraged-tm">%d 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.** DAITA (Defense against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. 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>**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.** - -DAITA (Defense against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. - -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-qualifier="leveraged-mt">**Attention : Ceci augmente le trafic réseau et affectera également la vitesse, la latence et l'utilisation de la batterie. À utiliser avec prudence sur des plans limités. * - -DAITA (Défense contre l'analyse du trafic guidée par AI) masque les patrons dans votre trafic VPN chiffré. - -En utilisant une IA sophistiquée, il est possible d'analyser le trafic des paquets de données entrants et sortants de votre appareil (même si le trafic est chiffré).</target> + <trans-unit id="%lld more..." xml:space="preserve"> + <source>%lld more...</source> + <target state-qualifier="leveraged-tm">%lld de plus…</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-qualifier="leveraged-mt">**Tapotez ici** pour voir les nouveautés.</target> + <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-qualifier="leveraged-tm">**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="A custom list with this name exists, please choose a unique name." xml:space="preserve"> <source>A custom list with this name exists, please choose a unique name.</source> - <target state-qualifier="leveraged-mt">Une liste personnalisée avec ce nom existe, veuillez choisir un nom unique.</target> + <target state="needs-translation">A custom list with this name exists, please choose a unique name.</target> <note/> </trans-unit> <trans-unit id="API access" xml:space="preserve"> <source>API access</source> - <target state-qualifier="leveraged-mt">Accès à l'API</target> - <note/> - </trans-unit> - <trans-unit id="API could not be reached, save anyway?" xml:space="preserve"> - <source>API could not be reached, save anyway?</source> - <target state-qualifier="leveraged-mt">L'API n'a pas pu être atteinte, enregistrer quand même ?</target> + <target state-qualifier="leveraged-tm">Accès à l'API</target> <note/> </trans-unit> <trans-unit id="API reachable" xml:space="preserve"> <source>API reachable</source> - <target state-qualifier="leveraged-mt">API accessible</target> + <target state-qualifier="leveraged-tm">API joignable</target> <note/> </trans-unit> <trans-unit id="API unreachable" xml:space="preserve"> <source>API unreachable</source> - <target state-qualifier="leveraged-mt">API injoignable</target> + <target state-qualifier="leveraged-tm">API injoignable</target> + <note/> + </trans-unit> + <trans-unit id="API unreachable, save anyway?" xml:space="preserve"> + <source>API unreachable, save anyway?</source> + <target state-qualifier="leveraged-tm">API injoignable, l'enregistrer quand même ?</target> <note/> </trans-unit> <trans-unit id="About API access…" xml:space="preserve"> <source>About API access…</source> - <target state-qualifier="leveraged-mt">A propos de l'accès à l'API…</target> + <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-qualifier="leveraged-mt">À propos de la méthode Direct...</target> + <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-qualifier="leveraged-mt">À propos de la méthode de proxy DNS chiffré...</target> + <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-qualifier="leveraged-mt">À propos de la méthode des ponts Mullvad...</target> + <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-qualifier="leveraged-mt">À propos du remplacement de l'IP du serveur...</target> + <target state="needs-translation">About Server IP override...</target> <note/> </trans-unit> <trans-unit id="Account" xml:space="preserve"> <source>Account</source> - <target state-qualifier="leveraged-mt">Compte client</target> + <target state-qualifier="leveraged-tm">Compte</target> <note/> </trans-unit> <trans-unit id="Account created" xml:space="preserve"> <source>Account created</source> - <target state-qualifier="leveraged-mt">Compte créé</target> + <target state-qualifier="leveraged-tm">Compte créé</target> <note/> </trans-unit> <trans-unit id="Account credit expires soon" xml:space="preserve"> <source>Account credit expires soon</source> - <target state-qualifier="leveraged-mt">Le crédit du compte expire bientôt</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Le crédit du compte a expiré</target> + <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-qualifier="leveraged-mt">Suppression du compte</target> + <target state="needs-translation">Account deletion</target> <note/> </trans-unit> <trans-unit id="Account number" xml:space="preserve"> <source>Account number</source> - <target state-qualifier="leveraged-mt">Numéro de compte</target> + <target state-qualifier="leveraged-tm">Numéro de compte</target> + <note/> + </trans-unit> + <trans-unit id="Active features" xml:space="preserve"> + <source>Active features</source> + <target state-qualifier="leveraged-tm">Fonctionnalités activées</target> <note/> </trans-unit> <trans-unit id="Add" xml:space="preserve"> <source>Add</source> - <target state-qualifier="leveraged-mt">Ajouter</target> + <target state-qualifier="leveraged-tm">Ajouter</target> <note/> </trans-unit> <trans-unit id="Add 30 days" xml:space="preserve"> <source>Add 30 days</source> - <target state-qualifier="leveraged-mt">Ajouter 30 jours</target> + <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-qualifier="leveraged-mt">Ajouter 90 jours</target> + <target state="needs-translation">Add 90 days</target> <note/> </trans-unit> <trans-unit id="Add Time" xml:space="preserve"> <source>Add Time</source> - <target state-qualifier="leveraged-mt">Ajouter une heure</target> + <target state="needs-translation">Add Time</target> <note/> </trans-unit> <trans-unit id="Add a server" xml:space="preserve"> <source>Add a server</source> - <target state-qualifier="leveraged-mt">Ajouter un serveur</target> + <target state-qualifier="leveraged-tm">Ajouter un serveur</target> <note/> </trans-unit> <trans-unit id="Add access method" xml:space="preserve"> <source>Add access method</source> - <target state-qualifier="leveraged-mt">Ajouter une méthode d'accès</target> + <target state="needs-translation">Add access method</target> <note/> </trans-unit> <trans-unit id="Add locations" xml:space="preserve"> <source>Add locations</source> - <target state-qualifier="leveraged-mt">Ajouter des emplacements</target> + <target state-qualifier="leveraged-tm">Ajouter des localisations</target> <note/> </trans-unit> <trans-unit id="Add new list" xml:space="preserve"> <source>Add new list</source> - <target state-qualifier="leveraged-mt">Ajouter une nouvelle liste</target> + <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-qualifier="leveraged-mt">Ajouter une heure</target> + <target state-qualifier="leveraged-tm">Ajouter du temps</target> <note/> </trans-unit> <trans-unit id="Ads" xml:space="preserve"> <source>Ads</source> - <target state-qualifier="leveraged-mt">Annonces</target> + <target state-qualifier="leveraged-tm">Publicités</target> <note/> </trans-unit> <trans-unit id="Adult content" xml:space="preserve"> <source>Adult content</source> - <target state-qualifier="leveraged-mt">Contenu adulte</target> + <target state-qualifier="leveraged-tm">Contenu pour adultes</target> + <note/> + </trans-unit> + <trans-unit id="Agree and continue" xml:space="preserve"> + <source>Agree and continue</source> + <target state-qualifier="leveraged-tm">Accepter et continuer</target> <note/> </trans-unit> <trans-unit id="All" xml:space="preserve"> <source>All</source> - <target state-qualifier="leveraged-mt">Tous</target> + <target state="needs-translation">All</target> <note/> </trans-unit> <trans-unit id="All Providers" xml:space="preserve"> <source>All Providers</source> - <target state-qualifier="leveraged-mt">Tous les fournisseurs</target> + <target state="needs-translation">All Providers</target> <note/> </trans-unit> <trans-unit id="All locations" xml:space="preserve"> <source>All locations</source> - <target state-qualifier="leveraged-mt">Tous les emplacements</target> + <target state-qualifier="leveraged-tm">Toutes les localisations</target> <note/> </trans-unit> <trans-unit id="Any" xml:space="preserve"> <source>Any</source> - <target state-qualifier="leveraged-mt">N'importe quel</target> + <target state-qualifier="leveraged-tm">N'importe lequel</target> <note/> </trans-unit> <trans-unit id="App logs" xml:space="preserve"> <source>App logs</source> - <target state-qualifier="leveraged-mt">Journaux des applications</target> + <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-qualifier="leveraged-mt">Le reçu de l'AppStore est introuvable sur le disque.</target> + <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-qualifier="leveraged-mt">Au moins une méthode doit être activée.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Authentification</target> + <target state-qualifier="leveraged-tm">Authentification</target> <note/> </trans-unit> <trans-unit id="Automatic" xml:space="preserve"> <source>Automatic</source> - <target state-qualifier="leveraged-mt">Automatique</target> + <target state-qualifier="leveraged-tm">Automatique</target> <note/> </trans-unit> <trans-unit id="BLOCKING INTERNET" xml:space="preserve"> <source>BLOCKING INTERNET</source> - <target state-qualifier="leveraged-mt">INTERNET DE BLOCKING</target> + <target state-qualifier="leveraged-tm">BLOCAGE D'INTERNET</target> <note/> </trans-unit> <trans-unit id="Back to editing" xml:space="preserve"> <source>Back to editing</source> - <target state-qualifier="leveraged-mt">Retour à l'édition</target> + <target state="needs-translation">Back to editing</target> <note/> </trans-unit> <trans-unit id="Blocked connection" xml:space="preserve"> <source>Blocked connection</source> - <target state-qualifier="leveraged-mt">Connexion bloquée</target> + <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-qualifier="leveraged-mt">Blocage d'Internet: Votre temps sur ce compte a expiré. Pour continuer à utiliser Internet, veuillez ajouter plus de temps ou déconnecter le VPN.</target> + <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 "Direct only" you will have to manually select a server that is DAITA-enabled. Multihop won't automatically be used to enable DAITA with any server." xml:space="preserve"> - <source>By enabling "Direct only" you will have to manually select a server that is DAITA-enabled. Multihop won't automatically be used to enable DAITA with any server.</source> - <target state-qualifier="leveraged-mt">En activant "Direct only", vous devrez sélectionner manuellement un serveur qui est activé par DAITA. Multihop ne sera pas automatiquement utilisé pour activer DAITA avec aucun serveur.</target> + <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 enabling "Direct only" you will have to manually select a server that is DAITA-enabled. This can cause you to end up in a blocked state until you have selected a compatible server in the "Select location" view." xml:space="preserve"> - <source>By enabling "Direct only" you will have to manually select a server that is DAITA-enabled. This can cause you to end up in a blocked state until you have selected a compatible server in the "Select location" view.</source> - <target state-qualifier="leveraged-mt">En activant "Direct only", vous devrez sélectionner manuellement un serveur qui est activé par DAITA. Cela peut vous faire tomber dans un état bloqué jusqu'à ce que vous ayez sélectionné un serveur compatible dans la vue « Sélectionner un emplacement ».</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Abandonner</target> + <target state-qualifier="leveraged-tm">Annuler</target> <note/> </trans-unit> <trans-unit id="Cannot complete the purchase" xml:space="preserve"> <source>Cannot complete the purchase</source> - <target state-qualifier="leveraged-mt">Impossible de terminer l'achat</target> + <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-qualifier="leveraged-mt">Impossible de lire la réception de l'AppStore depuis le disque</target> + <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-qualifier="leveraged-mt">Impossible d'actualiser le reçu de l'AppStore : %@</target> + <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-qualifier="leveraged-mt">Impossible de restaurer les achats</target> + <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-qualifier="leveraged-mt">Numéro de compte de la vérification</target> + <target state-qualifier="leveraged-tm">Vérification du numéro de compte</target> <note/> </trans-unit> <trans-unit id="Cipher" xml:space="preserve"> <source>Cipher</source> - <target state-qualifier="leveraged-mt">Chiffre</target> + <target state-qualifier="leveraged-tm">Chiffre</target> <note/> </trans-unit> <trans-unit id="Clear" xml:space="preserve"> <source>Clear</source> - <target state-qualifier="leveraged-mt">Nettoyer</target> + <target state-qualifier="leveraged-tm">Effacer</target> <note/> </trans-unit> <trans-unit id="Clear all overrides" xml:space="preserve"> <source>Clear all overrides</source> - <target state-qualifier="leveraged-mt">Effacer toutes les surcharges</target> + <target state-qualifier="leveraged-tm">Effacer toutes les substitutions</target> <note/> </trans-unit> <trans-unit id="Clear all overrides?" xml:space="preserve"> <source>Clear all overrides?</source> - <target state-qualifier="leveraged-mt">Effacer toutes les dérogations ?</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">La suppression des surcharges importées modifie les adresses IP du serveur, dans la vue de l'emplacement de sélection, par défaut.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Le client n'est pas autorisé à émettre la requête.</target> + <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-qualifier="leveraged-mt">Réduire cet emplacement.</target> + <target state="needs-translation">Collapses this location.</target> <note/> </trans-unit> <trans-unit id="Congrats!" xml:space="preserve"> <source>Congrats!</source> - <target state-qualifier="leveraged-mt">Félicitations !</target> + <target state-qualifier="leveraged-tm">Félicitations !</target> + <note/> + </trans-unit> + <trans-unit id="Connect" xml:space="preserve"> + <source>Connect</source> + <target state-qualifier="leveraged-tm">Connexion</target> <note/> </trans-unit> <trans-unit id="Connected" xml:space="preserve"> <source>Connected</source> - <target state-qualifier="leveraged-mt">Connecté</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">Connexion...</target> + <note/> + </trans-unit> + <trans-unit id="Connection details" xml:space="preserve"> + <source>Connection details</source> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">Continuer avec la connexion</target> <note/> </trans-unit> <trans-unit id="Copy to pasteboard" xml:space="preserve"> <source>Copy to pasteboard</source> - <target state-qualifier="leveraged-mt">Copier dans le presse-papier</target> + <target state="needs-translation">Copy to pasteboard</target> <note/> </trans-unit> <trans-unit id="Correct account number" xml:space="preserve"> <source>Correct account number</source> - <target state-qualifier="leveraged-mt">Numéro de compte correct</target> + <target state="needs-translation">Correct account number</target> <note/> </trans-unit> <trans-unit id="Create" xml:space="preserve"> <source>Create</source> - <target state-qualifier="leveraged-mt">Créer</target> + <target state-qualifier="leveraged-tm">Créer</target> <note/> </trans-unit> <trans-unit id="Create account" xml:space="preserve"> <source>Create account</source> - <target state-qualifier="leveraged-mt">Créer un compte</target> + <target state-qualifier="leveraged-tm">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-translation">Create new account</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-qualifier="leveraged-mt">Création d'un nouveau compte</target> + <target state="needs-translation">Creating new account</target> <note/> </trans-unit> <trans-unit id="Creating quantum secure connection" xml:space="preserve"> <source>Creating quantum secure connection</source> - <target state-qualifier="leveraged-mt">Création de la connexion quantique sécurisée</target> + <target state="needs-translation">Creating quantum secure connection</target> <note/> </trans-unit> <trans-unit id="Creating secure connection" xml:space="preserve"> <source>Creating secure connection</source> - <target state-qualifier="leveraged-mt">Création d'une connexion sécurisée</target> + <target state="needs-translation">Creating secure connection</target> + <note/> + </trans-unit> + <trans-unit id="Current device" xml:space="preserve"> + <source>Current device</source> + <target state-qualifier="leveraged-tm">Appareil actuel</target> <note/> </trans-unit> <trans-unit id="Custom" xml:space="preserve"> <source>Custom</source> - <target state-qualifier="leveraged-mt">Personnalisé</target> + <target state-qualifier="leveraged-tm">Personnalisé</target> <note/> </trans-unit> <trans-unit id="Custom DNS" xml:space="preserve"> <source>Custom DNS</source> - <target state-qualifier="leveraged-mt">DNS personnalisé</target> + <target state-qualifier="leveraged-tm">DNS personnalisé</target> <note/> </trans-unit> <trans-unit id="Custom lists" xml:space="preserve"> <source>Custom lists</source> - <target state-qualifier="leveraged-mt">Listes personnalisées</target> + <target state-qualifier="leveraged-tm">Listes personnalisées</target> <note/> </trans-unit> <trans-unit id="DAITA" xml:space="preserve"> <source>DAITA</source> - <target state-qualifier="leveraged-mt">DAITA</target> - <note/> - </trans-unit> - <trans-unit id="DAITA (Defence against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. If anyone is monitoring your connection, this makes it significantly harder for them to identify what websites you are visiting. It does this by carefully adding network noise and making all network packets the same size. Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. Attention: Be cautious if you have a limited data plan as this feature will increase your network traffic." xml:space="preserve"> - <source>DAITA (Defence against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. If anyone is monitoring your connection, this makes it significantly harder for them to identify what websites you are visiting. -It does this by carefully adding network noise and making all network packets the same size. -Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. -Attention: Be cautious if you have a limited data plan as this feature will increase your network traffic.</source> - <target state="needs-translation">DAITA (Defence against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. If anyone is monitoring your connection, this makes it significantly harder for them to identify what websites you are visiting. -It does this by carefully adding network noise and making all network packets the same size. -Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. -Attention: Be cautious if you have a limited data plan as this feature will increase your network traffic.</target> + <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 "Select location" 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-qualifier="leveraged-mt">DAITA n'est pas disponible à l'emplacement actuellement sélectionné. Après l'activation, veuillez aller dans la vue "Sélectionner un emplacement" et sélectionner un emplacement qui prend en charge DAITA.</target> + <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 "Select location" 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-qualifier="leveraged-mt">DAITA n'est pas disponible sur le serveur d'entrée actuel. Après l'activation, veuillez aller dans la vue "Sélectionner un emplacement" et sélectionner un emplacement d'entrée qui prend en charge DAITA.</target> + <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-qualifier="leveraged-mt">Activé par DAITA</target> + <target state="needs-translation">DAITA-enabled</target> <note/> </trans-unit> <trans-unit id="DAITA: Multihop" xml:space="preserve"> <source>DAITA: Multihop</source> - <target state-qualifier="leveraged-mt">DAITA : Multihop</target> + <target state="needs-translation">DAITA: Multihop</target> <note/> </trans-unit> <trans-unit id="DNS content blockers" xml:space="preserve"> <source>DNS content blockers</source> - <target state-qualifier="leveraged-mt">Blocages de contenu DNS</target> + <target state-qualifier="leveraged-tm">Bloqueurs de contenu DNS</target> <note/> </trans-unit> <trans-unit id="DNS settings" xml:space="preserve"> <source>DNS settings</source> - <target state-qualifier="leveraged-mt">Paramètres DNS</target> + <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-qualifier="leveraged-mt">Supprimez</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Supprimer le compte</target> + <target state="needs-translation">Delete Account</target> <note/> </trans-unit> <trans-unit id="Delete account" xml:space="preserve"> <source>Delete account</source> - <target state-qualifier="leveraged-mt">Supprimer le compte</target> + <target state="needs-translation">Delete account</target> <note/> </trans-unit> <trans-unit id="Delete list" xml:space="preserve"> <source>Delete list</source> - <target state-qualifier="leveraged-mt">Supprimer la liste</target> + <target state-qualifier="leveraged-tm">Supprimer la liste</target> <note/> </trans-unit> <trans-unit id="Delete method" xml:space="preserve"> <source>Delete method</source> - <target state-qualifier="leveraged-mt">Méthode de suppression</target> + <target state-qualifier="leveraged-tm">Supprimer la méthode</target> <note/> </trans-unit> <trans-unit id="Deleting account..." xml:space="preserve"> <source>Deleting account...</source> - <target state-qualifier="leveraged-mt">Suppression du compte...</target> + <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-qualifier="leveraged-mt">L'appareil est inactif</target> + <target state-qualifier="leveraged-tm">L'appareil est inactif</target> <note/> </trans-unit> <trans-unit id="Device name" xml:space="preserve"> <source>Device name</source> - <target state-qualifier="leveraged-mt">Nom de l'appareil</target> + <target state-qualifier="leveraged-tm">Nom de l'appareil</target> <note/> </trans-unit> <trans-unit id="Device name: %@" xml:space="preserve"> <source>Device name: %@</source> - <target state-qualifier="leveraged-mt">Nom de l'appareil : %@</target> + <target state="needs-translation">Device name: %@</target> <note/> </trans-unit> <trans-unit id="Direct" xml:space="preserve"> <source>Direct</source> - <target state-qualifier="leveraged-mt">Directement</target> + <target state="needs-translation">Direct</target> <note/> </trans-unit> <trans-unit id="Direct only" xml:space="preserve"> <source>Direct only</source> - <target state-qualifier="leveraged-mt">Direct uniquement</target> + <target state-qualifier="leveraged-tm">Directe uniquement</target> <note/> </trans-unit> - <trans-unit id="Disable all content blockers to activate this setting." xml:space="preserve"> - <source>Disable all content blockers to activate this setting.</source> - <target state-qualifier="leveraged-mt">Désactiver tous les bloqueurs de contenu pour activer ce paramètre.</target> + <trans-unit id="Disable all "%@" above to activate this setting." xml:space="preserve"> + <source>Disable all "%@" above to activate this setting.</source> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Désactivé</target> + <target state="needs-translation">Disabled</target> <note/> </trans-unit> <trans-unit id="Disabling" xml:space="preserve"> <source>Disabling</source> - <target state-qualifier="leveraged-mt">Désactivation</target> + <target state="needs-translation">Disabling</target> <note/> </trans-unit> <trans-unit id="Discard changes" xml:space="preserve"> <source>Discard changes</source> - <target state-qualifier="leveraged-mt">Annuler les modifications</target> + <target state-qualifier="leveraged-tm">Annuler les modifications </target> <note/> </trans-unit> <trans-unit id="Disconnect" xml:space="preserve"> <source>Disconnect</source> - <target state-qualifier="leveraged-mt">Déconnecter</target> + <target state-qualifier="leveraged-tm">Déconnexion</target> + <note/> + </trans-unit> + <trans-unit id="Disconnected" xml:space="preserve"> + <source>Disconnected</source> + <target state-qualifier="leveraged-tm">Déconnecté</target> <note/> </trans-unit> <trans-unit id="Disconnecting" xml:space="preserve"> <source>Disconnecting</source> - <target state-qualifier="leveraged-mt">Déconnexion</target> + <target state-qualifier="leveraged-tm">Déconnexion en cours</target> + <note/> + </trans-unit> + <trans-unit id="Disconnecting..." xml:space="preserve"> + <source>Disconnecting...</source> + <target state-qualifier="leveraged-tm">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-translation">Do you want to create a new account?</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-qualifier="leveraged-mt">Fait</target> + <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-qualifier="leveraged-mt">Vous n'avez pas de numéro de compte ?</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Modifier la liste personnalisée</target> + <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-qualifier="leveraged-mt">Editer les listes</target> + <target state-qualifier="leveraged-tm">Modifier les listes</target> <note/> </trans-unit> <trans-unit id="Edit locations" xml:space="preserve"> <source>Edit locations</source> - <target state-qualifier="leveraged-mt">Modifier les emplacements</target> + <target state-qualifier="leveraged-tm">Modifier les localisations</target> <note/> </trans-unit> <trans-unit id="Edit message" xml:space="preserve"> <source>Edit message</source> - <target state-qualifier="leveraged-mt">Modifier le message</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Activer</target> + <target state-qualifier="leveraged-tm">Activer</target> <note/> </trans-unit> <trans-unit id="Enable "%@"" xml:space="preserve"> <source>Enable "%@"</source> - <target state-qualifier="leveraged-mt">Activer «%@»</target> + <target state="needs-translation">Enable "%@"</target> <note/> </trans-unit> <trans-unit id="Enable method" xml:space="preserve"> <source>Enable method</source> - <target state-qualifier="leveraged-mt">Activer la méthode</target> + <target state-qualifier="leveraged-tm">Activer la méthode</target> <note/> </trans-unit> <trans-unit id="Enabling" xml:space="preserve"> <source>Enabling</source> - <target state-qualifier="leveraged-mt">Activation</target> + <target state="needs-translation">Enabling</target> <note/> </trans-unit> <trans-unit id="Encrypted DNS proxy" xml:space="preserve"> <source>Encrypted DNS proxy</source> - <target state-qualifier="leveraged-mt">Proxy DNS chiffré</target> + <target state="needs-translation">Encrypted DNS proxy</target> <note/> </trans-unit> <trans-unit id="Enter IP" xml:space="preserve"> <source>Enter IP</source> - <target state-qualifier="leveraged-mt">Entrez l'adresse IP</target> + <target state-qualifier="leveraged-tm">Saisir l'IP</target> <note/> </trans-unit> <trans-unit id="Enter voucher code" xml:space="preserve"> <source>Enter voucher code</source> - <target state-qualifier="leveraged-mt">Entrez le code du bon de réduction</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Entrez votre numéro de compte</target> + <target state-qualifier="leveraged-tm">Saisissez votre numéro de compte</target> <note/> </trans-unit> <trans-unit id="Entry" xml:space="preserve"> <source>Entry</source> - <target state-qualifier="leveraged-mt">Entrée</target> + <target state-qualifier="leveraged-tm">Entrée</target> <note/> </trans-unit> <trans-unit id="Exit" xml:space="preserve"> <source>Exit</source> - <target state-qualifier="leveraged-mt">Quitter</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Développe cet emplacement.</target> + <target state="needs-translation">Expands this location.</target> <note/> </trans-unit> <trans-unit id="FAQs & Guides" xml:space="preserve"> @@ -611,370 +754,367 @@ Attention: Be cautious if you have a limited data plan as this feature will incr </trans-unit> <trans-unit id="Failed to connect to App store, please try again later." xml:space="preserve"> <source>Failed to connect to App store, please try again later.</source> - <target state-qualifier="leveraged-mt">Impossible de se connecter à l'App Store, veuillez réessayer plus tard.</target> + <target state="needs-translation">Failed to connect to App store, please try again later.</target> <note/> </trans-unit> <trans-unit id="Failed to send" xml:space="preserve"> <source>Failed to send</source> - <target state-qualifier="leveraged-mt">Échec de l'envoi</target> + <target state-qualifier="leveraged-tm">É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-qualifier="leveraged-mt">Impossible d'envoyer la réception au serveur: %@</target> + <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-qualifier="leveraged-mt">Impossible de démarrer le tunnel.</target> + <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-qualifier="leveraged-mt">Impossible de démarrer le tunnel : %@.</target> + <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-qualifier="leveraged-mt">Impossible d'arrêter le tunnel.</target> + <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-qualifier="leveraged-mt">Impossible d'arrêter le tunnel : %@.</target> + <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-qualifier="leveraged-mt">Impossible de valider le numéro de compte : %@</target> + <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-qualifier="leveraged-mt">Récupération des appareils...</target> + <target state="needs-translation">Fetching devices...</target> <note/> </trans-unit> <trans-unit id="Filter" xml:space="preserve"> <source>Filter</source> - <target state-qualifier="leveraged-mt">Filtre</target> + <target state-qualifier="leveraged-tm">Filtrer</target> <note/> </trans-unit> <trans-unit id="Filtered:" xml:space="preserve"> <source>Filtered:</source> - <target state-qualifier="leveraged-mt">Filtré :</target> + <target state-qualifier="leveraged-tm">Filtré :</target> <note/> </trans-unit> <trans-unit id="Gambling" xml:space="preserve"> <source>Gambling</source> - <target state-qualifier="leveraged-mt">Jeu</target> + <target state-qualifier="leveraged-tm">Jeux d'argent</target> <note/> </trans-unit> - <trans-unit id="Go ahead and start using the app to begin reclaiming your online privacy. To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools." xml:space="preserve"> - <source>Go ahead and start using the app to begin reclaiming your online privacy. -To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools.</source> - <target state="needs-translation">Go ahead and start using the app to begin reclaiming your online privacy. -To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Aller à la connexion</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Se connecter débloquera Internet sur cet appareil.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Compris!</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Voici votre numéro de compte. Enregistrez-le !</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Cacher le numéro de compte</target> + <target state-qualifier="leveraged-tm">Masquer le numéro de compte</target> <note/> </trans-unit> - <trans-unit id="If an observer monitors these data packets, DAITA makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating. DAITA does this by carefully adding network noise and making all network packets the same size. Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. " xml:space="preserve"> - <source>If an observer monitors these data packets, DAITA makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating. - -DAITA does this by carefully adding network noise and making all network packets the same size. - -Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. -</source> - <target state-qualifier="leveraged-mt">Si un observateur surveille ces paquets de données, DAITA leur rend beaucoup plus difficile d'identifier les sites Web que vous visitez ou avec lesquels vous communiquez. - -DAITA le fait en ajoutant soigneusement du bruit du réseau et en faisant de tous les paquets du réseau la même taille. - -Tous nos serveurs ne sont pas activés par DAITA. Par conséquent, nous utilisons le multilien automatiquement pour activer DAITA avec n'importe quel serveur. -</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Si nécessaire, nous vous contacterons à %@</target> + <target state-qualifier="leveraged-tm">Si nécessaire, nous vous contacterons à l'adresse %@</target> + <note/> + </trans-unit> + <trans-unit id="If so, click log out below to log in with the other account number." xml:space="preserve"> + <source>If so, click log out below to log in with the other account number.</source> + <target state="needs-translation">If so, click log out below to log in with the other account number.</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-qualifier="leveraged-mt">Si vous rencontrez des problèmes de connexion aux serveurs VPN, veuillez contacter le support.</target> + <target state-qualifier="leveraged-tm">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> + <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-qualifier="leveraged-mt">Si vous vous déconnectez maintenant, vous ne pourrez pas sécuriser votre connexion tant que l'appareil ne sera pas en ligne.</target> + <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-qualifier="leveraged-mt">Si vous quittez le formulaire et réessayez plus tard, les informations que vous avez déjà saisies seront toujours là.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Si vous n'avez pas reçu de temps VPN supplémentaire après l'achat</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Si vous rencontrez toujours des problèmes, vous pouvez envoyer un e-mail à notre assistance directement à **%@**. Veuillez joindre votre journal d'application à votre adresse e-mail.</target> + <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-qualifier="leveraged-mt">Importation</target> + <target state-qualifier="leveraged-tm">Importer</target> <note/> </trans-unit> - <trans-unit id="Import %@ was successful, overrides are now active." xml:space="preserve"> - <source>Import %@ was successful, overrides are now active.</source> - <target state-qualifier="leveraged-mt">Importation %@ réussie, les remplacements sont maintenant actifs.</target> + <trans-unit id="Import file" xml:space="preserve"> + <source>Import file</source> + <target state-qualifier="leveraged-tm">Importer un fichier</target> <note/> </trans-unit> - <trans-unit id="Import %@ was unsuccessful, please try again." xml:space="preserve"> - <source>Import %@ was unsuccessful, please try again.</source> - <target state-qualifier="leveraged-mt">L'importation de %@ a échoué, veuillez réessayer.</target> + <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-qualifier="leveraged-tm">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 file" xml:space="preserve"> - <source>Import file</source> - <target state-qualifier="leveraged-mt">Importer un fichier</target> + <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 files or text with the new IP addresses for the servers in the Select location view." xml:space="preserve"> - <source>Import files or text with the new IP addresses for the servers in the Select location view.</source> - <target state-qualifier="leveraged-mt">Importer des fichiers ou du texte avec les nouvelles adresses IP pour les serveurs dans la vue Choisir un emplacement.</target> + <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-qualifier="leveraged-mt">Importation réussie</target> + <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-qualifier="leveraged-mt">Importer par texte</target> + <target state-qualifier="leveraged-tm">Importer par texte</target> + <note/> + </trans-unit> + <trans-unit id="In" xml:space="preserve"> + <source>In</source> + <target state-qualifier="leveraged-tm">Entrante</target> <note/> </trans-unit> <trans-unit id="In use" xml:space="preserve"> <source>In use</source> - <target state-qualifier="leveraged-mt">En cours d'utilisation</target> + <target state-qualifier="leveraged-tm">En cours d'utilisation</target> <note/> </trans-unit> <trans-unit id="Include all networks" xml:space="preserve"> <source>Include all networks</source> - <target state-qualifier="leveraged-mt">Inclure tous les réseaux</target> + <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-qualifier="leveraged-mt">Une erreur interne est survenue. Les paramètres seront réinitialisés par défaut et le périphérique sera déconnecté.</target> + <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-qualifier="leveraged-mt">Erreur interne.</target> + <target state="needs-translation">Internal error.</target> <note/> </trans-unit> <trans-unit id="Invalid account" xml:space="preserve"> <source>Invalid account</source> - <target state-qualifier="leveraged-mt">Compte invalide</target> + <target state="needs-translation">Invalid account</target> <note/> </trans-unit> <trans-unit id="Invalid device state." xml:space="preserve"> <source>Invalid device state.</source> - <target state-qualifier="leveraged-mt">Etat de l'appareil non valide.</target> + <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-qualifier="leveraged-mt">Identifiant d'achat invalide.</target> + <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-qualifier="leveraged-tm">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 have entered a Mullvad account number instead of a voucher code. Do you want to log in to an existing account? If so, click log out below to log in with the other account number." xml:space="preserve"> - <source>It looks like you have entered a Mullvad account number instead of a voucher code. Do you want to log in to an existing account? -If so, click log out below to log in with the other account number.</source> - <target state-qualifier="leveraged-mt">On dirait que vous avez entré un numéro de compte Mullvad au lieu d'un code coupon. Voulez-vous vous connecter à un compte existant ? -Si c'est le cas, cliquez sur déconnecter ci-dessous pour vous connecter avec l'autre numéro de compte.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Langue</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Les quatre derniers chiffres du numéro de compte sont incorrects</target> + <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-qualifier="leveraged-mt">Dernier compte utilisé</target> + <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-qualifier="leveraged-mt">En savoir plus sur la confidentialité</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Moins d'un jour</target> + <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-qualifier="leveraged-mt">Partage de réseau local</target> + <target state-qualifier="leveraged-tm">Partage réseau local</target> <note/> </trans-unit> <trans-unit id="Log in" xml:space="preserve"> <source>Log in</source> - <target state-qualifier="leveraged-mt">Se connecter</target> + <target state="needs-translation">Log in</target> <note/> </trans-unit> <trans-unit id="Log out" xml:space="preserve"> <source>Log out</source> - <target state-qualifier="leveraged-mt">Déconnexion</target> + <target state-qualifier="leveraged-tm">Déconnexion</target> <note/> </trans-unit> <trans-unit id="Logged in" xml:space="preserve"> <source>Logged in</source> - <target state-qualifier="leveraged-mt">Connecté</target> + <target state-qualifier="leveraged-tm">Connecté</target> <note/> </trans-unit> <trans-unit id="Logging in..." xml:space="preserve"> <source>Logging in...</source> - <target state-qualifier="leveraged-mt">Connexion en cours...</target> + <target state-qualifier="leveraged-tm">Connexion...</target> <note/> </trans-unit> <trans-unit id="Logging out..." xml:space="preserve"> <source>Logging out...</source> - <target state-qualifier="leveraged-mt">Déconnexion...</target> + <target state="needs-translation">Logging out...</target> <note/> </trans-unit> <trans-unit id="Login" xml:space="preserve"> <source>Login</source> - <target state-qualifier="leveraged-mt">Se connecter</target> + <target state-qualifier="leveraged-tm">Connexion</target> <note/> </trans-unit> <trans-unit id="Login failed" xml:space="preserve"> <source>Login failed</source> - <target state-qualifier="leveraged-mt">Échec de la connexion</target> + <target state-qualifier="leveraged-tm">É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-qualifier="leveraged-mt">Faites un achat avec StoreKit2</target> + <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-qualifier="leveraged-mt">Malware</target> + <target state="needs-translation">Malware</target> <note/> </trans-unit> <trans-unit id="Manage default and setup custom methods to access the Mullvad API." xml:space="preserve"> <source>Manage default and setup custom methods to access the Mullvad API.</source> - <target state-qualifier="leveraged-mt">Gérer les méthodes par défaut et configurer les méthodes personnalisées pour accéder à l'API Mullvad.</target> + <target state="needs-translation">Manage default and setup custom methods to access the Mullvad API.</target> <note/> </trans-unit> <trans-unit id="Manage default and setup custom methods to access the Mullvad API. " xml:space="preserve"> <source>Manage default and setup custom methods to access the Mullvad API. </source> - <target state-qualifier="leveraged-mt">Gérer les méthodes par défaut et configurer les méthodes personnalisées pour accéder à l'API Mullvad. </target> + <target state="needs-translation">Manage default and setup custom methods to access the Mullvad API. </target> <note/> </trans-unit> <trans-unit id="Manage devices" xml:space="preserve"> <source>Manage devices</source> - <target state-qualifier="leveraged-mt">Gérer les appareils</target> + <target state-qualifier="leveraged-tm">Gérer les appareils</target> <note/> </trans-unit> <trans-unit id="Method settings" xml:space="preserve"> <source>Method settings</source> - <target state-qualifier="leveraged-mt">Paramètres de la méthode</target> + <target state="needs-translation">Method settings</target> <note/> </trans-unit> <trans-unit id="Mullvad bridges" xml:space="preserve"> <source>Mullvad bridges</source> - <target state-qualifier="leveraged-mt">Ponts de Mullvad</target> + <target state="needs-translation">Mullvad bridges</target> <note/> </trans-unit> <trans-unit id="Multihop" xml:space="preserve"> <source>Multihop</source> - <target state-qualifier="leveraged-mt">Multilien</target> + <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-qualifier="leveraged-mt">Le multilien est utilisé pour activer DAITA pour l'emplacement que vous avez sélectionné.</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="needs-translation">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> + <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-qualifier="leveraged-mt">Multihop achemine votre trafic vers un serveur WireGuard et un autre, ce qui rend la traçabilité plus difficile. Cela entraîne une latence accrue mais augmente l'anonymat en ligne.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Plusieurs erreurs de validation se sont produites.</target> + <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-qualifier="leveraged-mt">ÎLES DE RÉSEAU</target> + <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-qualifier="leveraged-mt">NOUVEAU APPAREIL CRÉÉ</target> + <target state-qualifier="leveraged-tm">NOUVEL APPAREIL CRÉÉ</target> <note/> </trans-unit> <trans-unit id="NEW VERSION INSTALLED" xml:space="preserve"> <source>NEW VERSION INSTALLED</source> - <target state-qualifier="leveraged-mt">NOUVELLE VERSION INSTALLEE</target> + <target state-qualifier="leveraged-tm">NOUVELLE VERSION INSTALLÉE</target> <note/> </trans-unit> <trans-unit id="Name" xml:space="preserve"> <source>Name</source> - <target state-qualifier="leveraged-mt">Nom</target> + <target state-qualifier="leveraged-tm">Nom</target> <note/> </trans-unit> <trans-unit id="Name should be no longer than %i characters." xml:space="preserve"> @@ -984,851 +1124,956 @@ This results in increased latency but increases anonymity online.</target> </trans-unit> <trans-unit id="Network error: %@" xml:space="preserve"> <source>Network error: %@</source> - <target state-qualifier="leveraged-mt">Erreur réseau : %@</target> + <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-qualifier="leveraged-mt">Nouvelle liste personnalisée</target> + <target state="needs-translation">New custom list</target> <note/> </trans-unit> <trans-unit id="Next" xml:space="preserve"> <source>Next</source> - <target state-qualifier="leveraged-mt">Suivant</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Aucun serveur compatible DAITA ne correspond à vos paramètres de localisation. Essayez de changer d'emplacement.</target> + <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-qualifier="leveraged-mt">Aucun relais correspondant, vérifiez les paramètres de votre filtre.</target> + <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-qualifier="leveraged-mt">Aucun serveur correspondant</target> + <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-qualifier="leveraged-mt">Aucun réseau</target> + <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-qualifier="leveraged-mt">Aucune substitution importée</target> + <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-qualifier="leveraged-mt">Aucun serveur ne correspond à votre filtre de localisation. Essayez de changer les paramètres de filtre.</target> + <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-qualifier="leveraged-mt">Aucun serveur ne correspond à vos paramètres, essayez de changer de serveur ou d'autres paramètres.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">HORS DU TEMPS</target> + <target state-qualifier="leveraged-tm">PLUS DE TEMPS</target> <note/> </trans-unit> <trans-unit id="Obfuscation" xml:space="preserve"> <source>Obfuscation</source> - <target state-qualifier="leveraged-mt">Obfuscation</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">L'obfuscation cache le trafic WireGuard à l'intérieur d'un autre protocole. Il peut être utilisé pour aider à contourner la censure et d'autres types de filtrage, où une simple connexion WireGuard serait bloquée.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Obscuré</target> + <target state="needs-translation">Obscured</target> <note/> </trans-unit> <trans-unit id="Off" xml:space="preserve"> <source>Off</source> - <target state-qualifier="leveraged-mt">Désactivé</target> + <target state-qualifier="leveraged-tm">Désactivé</target> <note/> </trans-unit> <trans-unit id="On" xml:space="preserve"> <source>On</source> - <target state-qualifier="leveraged-mt">Activé</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Sur certains réseaux, où différents types de censure sont utilisés, les adresses IP de notre serveur sont parfois bloquées.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Sur certains réseaux, où différents types de censure sont utilisés, les serveurs API peuvent ne pas être directement accessibles.</target> + <target state-qualifier="leveraged-tm">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 DAITA settings" xml:space="preserve"> - <source>Open DAITA settings</source> - <target state-qualifier="leveraged-mt">Ouvrir les paramètres DAITA</target> + <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-qualifier="leveraged-mt">Optionnel</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Dépassement de temps</target> + <target state-qualifier="leveraged-tm">Plus de temps</target> <note/> </trans-unit> <trans-unit id="Overrides active" xml:space="preserve"> <source>Overrides active</source> - <target state-qualifier="leveraged-mt">Substitutions activées</target> + <target state-qualifier="leveraged-tm">Substitutions actives</target> <note/> </trans-unit> <trans-unit id="Owned" xml:space="preserve"> <source>Owned</source> - <target state-qualifier="leveraged-mt">Possédé</target> + <target state-qualifier="leveraged-tm">Possédé</target> <note/> </trans-unit> <trans-unit id="Ownership" xml:space="preserve"> <source>Ownership</source> - <target state-qualifier="leveraged-mt">Propriété</target> + <target state-qualifier="leveraged-tm">Propriété</target> <note/> </trans-unit> <trans-unit id="Paid until" xml:space="preserve"> <source>Paid until</source> - <target state-qualifier="leveraged-mt">Payé jusqu'au</target> + <target state-qualifier="leveraged-tm">Payé jusqu'au</target> <note/> </trans-unit> <trans-unit id="Password" xml:space="preserve"> <source>Password</source> - <target state-qualifier="leveraged-mt">Mot de passe</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Effectue un test de connexion à un serveur API Mullvad via cette méthode d'accès.</target> + <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-qualifier="leveraged-mt">Veuillez entrer une adresse IPv4 ou IPv6 valide.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Veuillez entrer un port valide.</target> + <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-qualifier="leveraged-tm">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 "Restore purchases" button." xml:space="preserve"> <source>Please retry by using the "Restore purchases" button.</source> - <target state-qualifier="leveraged-mt">Veuillez réessayer en utilisant le bouton "Restaurer les achats".</target> + <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-qualifier="leveraged-mt">Port</target> + <target state="needs-translation">Port</target> <note/> </trans-unit> <trans-unit id="Port: %@" xml:space="preserve"> <source>Port: %@</source> - <target state-qualifier="leveraged-mt">Port : %@</target> + <target state="needs-translation">Port: %@</target> <note/> </trans-unit> <trans-unit id="Previous" xml:space="preserve"> <source>Previous</source> - <target state-qualifier="leveraged-mt">Précédent</target> + <target state="needs-translation">Previous</target> <note/> </trans-unit> <trans-unit id="Providers" xml:space="preserve"> <source>Providers</source> - <target state-qualifier="leveraged-mt">Fournisseurs</target> + <target state-qualifier="leveraged-tm">Fournisseurs</target> <note/> </trans-unit> <trans-unit id="Providers: %d" xml:space="preserve"> <source>Providers: %d</source> - <target state-qualifier="leveraged-mt">Fournisseurs : %d</target> + <target state="needs-translation">Providers: %d</target> <note/> </trans-unit> <trans-unit id="QUIC" xml:space="preserve"> <source>QUIC</source> - <target state-qualifier="leveraged-mt">QUIQUE</target> + <target state="needs-translation">QUIC</target> <note/> </trans-unit> <trans-unit id="Quantum resistance" xml:space="preserve"> <source>Quantum resistance</source> - <target state-qualifier="leveraged-mt">Résistance quantique</target> + <target state-qualifier="leveraged-tm">Résistance quantique</target> <note/> </trans-unit> <trans-unit id="Quantum secure connection" xml:space="preserve"> <source>Quantum secure connection</source> - <target state-qualifier="leveraged-mt">Connexion sécurisée Quantum</target> + <target state="needs-translation">Quantum secure connection</target> <note/> </trans-unit> <trans-unit id="Quantum secure connection. Connected to %@, %@" xml:space="preserve"> <source>Quantum secure connection. Connected to %1$@, %2$@</source> - <target state-qualifier="leveraged-mt">Connexion sécurisée quantique. Connectée à %1$@, %2$@</target> + <target state="needs-translation">Quantum secure connection. Connected to %1$@, %2$@</target> <note/> </trans-unit> <trans-unit id="Quantum-resistant tunnel" xml:space="preserve"> <source>Quantum-resistant tunnel</source> - <target state-qualifier="leveraged-mt">Tunnel résistant aux Quantumes</target> + <target state-qualifier="leveraged-tm">Tunnel résistant aux attaques quantiques</target> <note/> </trans-unit> <trans-unit id="Reconnecting" xml:space="preserve"> <source>Reconnecting</source> - <target state-qualifier="leveraged-mt">Reconnexion</target> + <target state-qualifier="leveraged-tm">Reconnexion</target> <note/> </trans-unit> <trans-unit id="Reconnecting to %@, %@" xml:space="preserve"> <source>Reconnecting to %1$@, %2$@</source> - <target state-qualifier="leveraged-mt">Reconnexion à %1$@, %2$@</target> + <target state="needs-translation">Reconnecting to %1$@, %2$@</target> <note/> </trans-unit> <trans-unit id="Redeem" xml:space="preserve"> <source>Redeem</source> - <target state-qualifier="leveraged-mt">Redeem</target> + <target state-qualifier="leveraged-tm">Échanger</target> <note/> </trans-unit> <trans-unit id="Redeem voucher" xml:space="preserve"> <source>Redeem voucher</source> - <target state-qualifier="leveraged-mt">Redeem voucher</target> + <target state-qualifier="leveraged-tm">É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-qualifier="leveraged-mt">Rembourser le dernier achat avec StoreKit2</target> + <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-qualifier="leveraged-mt">Remboursement réussi</target> + <target state="needs-translation">Refund successful</target> + <note/> + </trans-unit> + <trans-unit id="Remove" xml:space="preserve"> + <source>Remove</source> + <target state-qualifier="leveraged-tm">Supprimer</target> + <note/> + </trans-unit> + <trans-unit id="Remove %@?" xml:space="preserve"> + <source>Remove %@?</source> + <target state-qualifier="leveraged-tm">Supprimer %@ ?</target> <note/> </trans-unit> <trans-unit id="Remove last used account" xml:space="preserve"> <source>Remove last used account</source> - <target state-qualifier="leveraged-mt">Supprimer le dernier compte utilisé</target> + <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. 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-qualifier="leveraged-mt">Loué</target> + <target state-qualifier="leveraged-tm">Loué</target> <note/> </trans-unit> <trans-unit id="Report a problem" xml:space="preserve"> <source>Report a problem</source> - <target state-qualifier="leveraged-mt">Signaler un problème</target> + <target state-qualifier="leveraged-tm">Signaler un problème</target> <note/> </trans-unit> <trans-unit id="Required" xml:space="preserve"> <source>Required</source> - <target state-qualifier="leveraged-mt">Requis</target> + <target state-qualifier="leveraged-tm">Requis</target> <note/> </trans-unit> <trans-unit id="Restore purchases" xml:space="preserve"> <source>Restore purchases</source> - <target state-qualifier="leveraged-mt">Restaurer les achats</target> + <target state="needs-translation">Restore purchases</target> <note/> </trans-unit> <trans-unit id="Save" xml:space="preserve"> <source>Save</source> - <target state-qualifier="leveraged-mt">Enregistrer</target> + <target state-qualifier="leveraged-tm">Enregistrer</target> <note/> </trans-unit> <trans-unit id="Save anyway" xml:space="preserve"> <source>Save anyway</source> - <target state-qualifier="leveraged-mt">Enregistrer quand même</target> + <target state="needs-translation">Save anyway</target> <note/> </trans-unit> <trans-unit id="Saving changes..." xml:space="preserve"> <source>Saving changes...</source> - <target state-qualifier="leveraged-mt">Enregistrement des modifications...</target> + <target state="needs-translation">Saving changes...</target> <note/> </trans-unit> <trans-unit id="Search for..." xml:space="preserve"> <source>Search for...</source> - <target state-qualifier="leveraged-mt">Rechercher...</target> + <target state-qualifier="leveraged-tm">Rechercher...</target> <note/> </trans-unit> <trans-unit id="Secure connection. Connected to %@, %@" xml:space="preserve"> <source>Secure connection. Connected to %1$@, %2$@</source> - <target state-qualifier="leveraged-mt">Connexion sécurisée. Connectée à %1$@, %2$@</target> + <target state="needs-translation">Secure connection. Connected to %1$@, %2$@</target> <note/> </trans-unit> <trans-unit id="Select location" xml:space="preserve"> <source>Select location</source> - <target state-qualifier="leveraged-mt">Sélectionnez un emplacement</target> + <target state-qualifier="leveraged-tm">Sélectionner une localisation</target> <note/> </trans-unit> <trans-unit id="Selected" xml:space="preserve"> <source>Selected</source> - <target state-qualifier="leveraged-mt">Sélectionnés</target> + <target state="needs-translation">Selected</target> <note/> </trans-unit> <trans-unit id="Send" xml:space="preserve"> <source>Send</source> - <target state-qualifier="leveraged-mt">Envoyer</target> + <target state-qualifier="leveraged-tm">Envoyer</target> <note/> </trans-unit> <trans-unit id="Send anyway" xml:space="preserve"> <source>Send anyway</source> - <target state-qualifier="leveraged-mt">Envoyer quand même</target> + <target state-qualifier="leveraged-tm">Envoyer quand même</target> <note/> </trans-unit> <trans-unit id="Sending..." xml:space="preserve"> <source>Sending...</source> - <target state-qualifier="leveraged-mt">Envoi...</target> + <target state-qualifier="leveraged-tm">Envoi...</target> <note/> </trans-unit> <trans-unit id="Sent" xml:space="preserve"> <source>Sent</source> - <target state-qualifier="leveraged-mt">Envoyé</target> + <target state-qualifier="leveraged-tm">Envoyé</target> <note/> </trans-unit> <trans-unit id="Server" xml:space="preserve"> <source>Server</source> - <target state-qualifier="leveraged-mt">Serveur</target> + <target state-qualifier="leveraged-tm">Serveur</target> <note/> </trans-unit> <trans-unit id="Server IP Override" xml:space="preserve"> <source>Server IP Override</source> - <target state-qualifier="leveraged-mt">Surcharge IP du serveur</target> + <target state="needs-translation">Server IP Override</target> <note/> </trans-unit> <trans-unit id="Server IP override" xml:space="preserve"> <source>Server IP override</source> - <target state-qualifier="leveraged-mt">Surcharge IP du serveur</target> + <target state-qualifier="leveraged-tm">Substitution d'IP de serveur</target> <note/> </trans-unit> <trans-unit id="Server details" xml:space="preserve"> <source>Server details</source> - <target state-qualifier="leveraged-mt">Détails du serveur</target> - <note/> - </trans-unit> - <trans-unit id="Setting: DAITA" xml:space="preserve"> - <source>Setting: DAITA</source> - <target state-qualifier="leveraged-mt">Paramètre: DAITA</target> + <target state-qualifier="leveraged-tm">Détails du serveur</target> <note/> </trans-unit> - <trans-unit id="Setting: Obfuscation" xml:space="preserve"> - <source>Setting: Obfuscation</source> - <target state-qualifier="leveraged-mt">Paramètre: Obfuscation</target> + <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-qualifier="leveraged-mt">Réglages</target> + <target state-qualifier="leveraged-tm">Paramètres</target> <note/> </trans-unit> <trans-unit id="Settings migration error" xml:space="preserve"> <source>Settings migration error</source> - <target state-qualifier="leveraged-mt">Erreur de migration des paramètres</target> + <target state="needs-translation">Settings migration error</target> <note/> </trans-unit> <trans-unit id="Shadowsocks" xml:space="preserve"> <source>Shadowsocks</source> - <target state-qualifier="leveraged-mt">Chaussettes fantômes</target> + <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-qualifier="leveraged-mt">Afficher le numéro de compte</target> + <target state-qualifier="leveraged-tm">Afficher le numéro de compte</target> <note/> </trans-unit> <trans-unit id="Social media" xml:space="preserve"> <source>Social media</source> - <target state-qualifier="leveraged-mt">Réseaux sociaux</target> + <target state-qualifier="leveraged-tm">Réseaux sociaux</target> <note/> </trans-unit> <trans-unit id="Socks5" xml:space="preserve"> <source>Socks5</source> - <target state-qualifier="leveraged-mt">Socks5</target> + <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-qualifier="leveraged-mt">Commencer à utiliser l'application</target> + <target state-qualifier="leveraged-tm">Commencer à utiliser l'application</target> <note/> </trans-unit> <trans-unit id="Super!" xml:space="preserve"> <source>Super!</source> - <target state-qualifier="leveraged-mt">Super!</target> + <target state-qualifier="leveraged-tm">Super !</target> <note/> </trans-unit> <trans-unit id="Switch location" xml:space="preserve"> <source>Switch location</source> - <target state-qualifier="leveraged-mt">Changer d'emplacement</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">ERREUR DE TUNNEL</target> + <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-qualifier="leveraged-mt">Appuyez sur **Modifier** pour ajouter au moins un serveur DNS.</target> + <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-qualifier="leveraged-mt">Méthode de test</target> + <target state-qualifier="leveraged-tm">Tester la méthode</target> <note/> </trans-unit> <trans-unit id="Testing..." xml:space="preserve"> <source>Testing...</source> - <target state-qualifier="leveraged-mt">Test en cours...</target> + <target state-qualifier="leveraged-tm">Test...</target> <note/> </trans-unit> <trans-unit id="Thanks for your purchase" xml:space="preserve"> <source>Thanks for your purchase</source> - <target state-qualifier="leveraged-mt">Merci pour votre achat</target> + <target state="needs-translation">Thanks for your purchase</target> <note/> </trans-unit> <trans-unit id="Thanks!" xml:space="preserve"> <source>Thanks!</source> - <target state-qualifier="leveraged-mt">Merci!</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">L'application communique directement avec un serveur API Mullvad.</target> + <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-qualifier="leveraged-mt">L'application communique avec un serveur API Mullvad via un pont de connexion Mullvad.</target> + <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-qualifier="leveraged-mt">L'application communique avec un serveur API Mullvad via une adresse proxy.</target> + <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-qualifier="leveraged-mt">L'application a besoin de communiquer avec un serveur API Mullvad pour vous connecter, récupérer les listes de serveurs et d'autres opérations critiques.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">L'application va tester la méthode avant d'enregistrer.</target> + <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. The custom port can be any value inside the valid ranges: %@" xml:space="preserve"> - <source>The automatic setting will randomly choose from the valid port ranges shown below. -The custom port can be any value inside the valid ranges: -%@</source> - <target state-qualifier="leveraged-mt">Le réglage automatique choisira aléatoirement parmi les plages de ports valides indiquées ci-dessous. -Le port personnalisé peut ętre n'importe quelle valeur dans les plages valides : -%@</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Les serveurs d'entrée et de sortie ne peuvent pas être identiques. Essayez d'en changer un sur un nouveau serveur ou un nouvel emplacement.</target> + <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 multihop is currently overridden by DAITA. To select an entry server, please first enable “Direct only” or disable “DAITA” in the settings." xml:space="preserve"> - <source>The entry server for multihop is currently overridden by DAITA. To select an entry server, please first enable “Direct only” or disable “DAITA” in the settings.</source> - <target state-qualifier="leveraged-mt">Le serveur d'entrée pour le multisaut est actuellement remplacé par DAITA. Pour sélectionner un serveur d'entrée, veuillez d'abord activer "Direct only" ou désactiver "DAITA" dans les paramètres.</target> + <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-qualifier="leveraged-mt">La demande de paiement a été annulée.</target> + <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-qualifier="leveraged-mt">Le port WireGuard sélectionné n'est pas pris en charge, veuillez le modifier dans les **paramètres VPN**.</target> + <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-qualifier="leveraged-mt">La version des paramètres stockés sur l'appareil n'est pas reconnue. Les paramètres seront réinitialisés par défaut et l'appareil sera déconnecté.</target> + <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-qualifier="leveraged-mt">Cela peut être utile si l’API est censurée mais que les serveurs de pont de Mullvad ne le sont pas.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Cela peut être utile lorsque vous n'êtes pas affecté par la censure.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Cet appareil n'est pas autorisé à effectuer le paiement.</target> + <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. Attention: toggling “Local network sharing” requires restarting the VPN connection." xml:space="preserve"> - <source>This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc. -Attention: toggling “Local network sharing” requires restarting the VPN connection.</source> - <target state-qualifier="leveraged-mt">Cette fonctionnalité permet d'accéder à d'autres périphériques du réseau local, tels que le partage, l'impression, le streaming, etc. -Attention : activer le « Partage de réseau local » nécessite un redémarrage de la connexion VPN.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Cette fonctionnalité vous permet de contourner cette censure en ajoutant des moyens personnalisés d'accéder à l'API via des mandataires et des méthodes similaires.</target> + <target state-qualifier="leveraged-tm">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. 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>This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers. -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="needs-translation">This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers. -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.</target> + <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-qualifier="leveraged-tm">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. You can have up to 5 devices logged in on one Mullvad account. 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>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. -You can have up to 5 devices logged in on one Mullvad account. -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="needs-translation">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. -You can have up to 5 devices logged in on one Mullvad account. -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.</target> + <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-qualifier="leveraged-tm">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 "Delete account" 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-qualifier="leveraged-mt">Ceci déconnecte tous les appareils utilisant ce compte et tous les accès VPN seront refusés, même s'il reste du temps sur le compte. Entrez les 4 derniers chiffres du numéro de compte et cliquez sur "Supprimer le compte" si vous voulez vraiment supprimer le compte :</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Ce bon de réduction a déjà été utilisé.</target> + <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-qualifier="leveraged-mt">Temps restant : %@</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Pour mieux vous aider, écrivez en anglais ou en suédois et indiquez le pays depuis lequel vous vous connectez.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Pour éviter cela, vous pouvez importer un fichier ou un texte fourni par notre équipe de support. avec de nouvelles adresses IP qui remplacent les adresses par défaut des serveurs dans la vue Choisir un emplacement.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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 "..." " xml:space="preserve"> <source>To create a custom list, tap on "..." </source> - <target state-qualifier="leveraged-mt">Pour créer une liste personnalisée, appuyez sur "..." </target> + <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-qualifier="leveraged-mt">Pour activer ce paramètre, ajoutez au moins un serveur.</target> + <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-qualifier="leveraged-mt">Pour vous aider plus efficacement, le fichier journal de votre application sera joint à ce message. Vos données resteront sécurisées et privées, car elles sont anonymes avant d'être envoyées par un canal chiffré.</target> + <target state-qualifier="leveraged-tm">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. Either buy credit on our website or redeem a voucher." xml:space="preserve"> - <source>To start using the app, you first need to add time to your account. Either buy credit on our website or redeem a voucher.</source> - <target state-qualifier="leveraged-mt">Pour commencer à utiliser l'application, vous devez d'abord ajouter du temps à votre compte. Achetez du crédit sur notre site Web ou utilisez un bon d'achat.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Trop d'appareils</target> + <target state-qualifier="leveraged-tm">Trop d'appareils</target> <note/> </trans-unit> <trans-unit id="Too many devices registered with account" xml:space="preserve"> <source>Too many devices registered with account</source> - <target state-qualifier="leveraged-mt">Trop d'appareils enregistrés avec le compte</target> + <target state="needs-translation">Too many devices registered with account</target> <note/> </trans-unit> <trans-unit id="Trackers" xml:space="preserve"> <source>Trackers</source> - <target state-qualifier="leveraged-mt">Trackers</target> + <target state="needs-translation">Trackers</target> <note/> </trans-unit> <trans-unit id="Try again" xml:space="preserve"> <source>Try again</source> - <target state-qualifier="leveraged-mt">Réessayez</target> + <target state-qualifier="leveraged-tm">Réessayer</target> <note/> </trans-unit> <trans-unit id="Tunnel is unset." xml:space="preserve"> <source>Tunnel is unset.</source> - <target state-qualifier="leveraged-mt">Le tunnel est désactivé.</target> + <target state="needs-translation">Tunnel is unset.</target> <note/> </trans-unit> <trans-unit id="Type" xml:space="preserve"> <source>Type</source> - <target state-qualifier="leveraged-mt">Type de texte</target> + <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-qualifier="leveraged-mt">UDP-sur-TCP</target> + <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-qualifier="leveraged-mt">Impossible d'authentifier le compte. Veuillez vous déconnecter et vous reconnecter.</target> + <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-qualifier="leveraged-mt">Impossible de démarrer la connexion du tunnel après la mise à jour. Veuillez vous déconnecter et vous reconnecter.</target> + <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-qualifier="leveraged-mt">Impossible de démarrer la connexion au tunnel. Veuillez envoyer un rapport de problème.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Réponse inattendue du serveur : %1$@ (statut HTTP : %2$d)</target> + <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-qualifier="leveraged-mt">Réponse inattendue du serveur : %d</target> + <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-qualifier="leveraged-mt">Erreur inconnue.</target> + <target state-qualifier="leveraged-tm">Erreur inconnue.</target> <note/> </trans-unit> <trans-unit id="Unsecured connection" xml:space="preserve"> <source>Unsecured connection</source> - <target state-qualifier="leveraged-mt">Connexion non sécurisée</target> + <target state="needs-translation">Unsecured connection</target> <note/> </trans-unit> <trans-unit id="Use custom DNS server" xml:space="preserve"> <source>Use custom DNS server</source> - <target state-qualifier="leveraged-mt">Utiliser un serveur DNS personnalisé</target> + <target state-qualifier="leveraged-tm">Utiliser un serveur DNS personnalisé</target> <note/> </trans-unit> <trans-unit id="Username" xml:space="preserve"> <source>Username</source> - <target state-qualifier="leveraged-mt">Nom d'utilisateur</target> + <target state-qualifier="leveraged-tm">Nom d'utilisateur</target> <note/> </trans-unit> <trans-unit id="VPN settings" xml:space="preserve"> <source>VPN settings</source> - <target state-qualifier="leveraged-mt">Paramètres VPN</target> + <target state-qualifier="leveraged-tm">Paramètres VPN</target> <note/> </trans-unit> - <trans-unit id="Valid range: 1 - 65535" xml:space="preserve"> - <source>Valid range: 1 - 65535</source> - <target state-qualifier="leveraged-mt">Valid range: 1 - 65535</target> + <trans-unit id="Valid range: %d - %d" xml:space="preserve"> + <source>Valid range: %1$d - %2$d</source> + <target state-qualifier="leveraged-tm">Plage valide : %1$d - %2$d</target> <note/> </trans-unit> <trans-unit id="Verifying voucher..." xml:space="preserve"> <source>Verifying voucher...</source> - <target state-qualifier="leveraged-mt">Vérification du bon de réduction...</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Voir les journaux des applications</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Le code du bon de réduction est invalide.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Le bon a été utilisé avec succès.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Attention : Le bloqueur de logiciels malveillants n'est pas un anti-virus et ne doit pas être traité en tant que tel, il ne s'agit que d'une couche supplémentaire de protection.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Nous avons quelques problèmes, veuillez réessayer plus tard</target> + <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-qualifier="leveraged-mt">Nous allons nous pencher sur cette question.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Bienvenue, cet appareil s'appelle maintenant **%@**. Pour plus de détails, consultez le bouton info dans le compte client.</target> + <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-qualifier="leveraged-mt">Quoi de neuf</target> + <trans-unit id="What’s new" xml:space="preserve"> + <source>What’s new</source> + <target state-qualifier="leveraged-tm">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. This might cause issues on certain websites, services, and apps. Attention: this setting cannot be used in combination with **Use custom DNS server**." 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. -This might cause issues on certain websites, services, and apps. -Attention: this setting cannot be used in combination with **Use custom DNS server**.</source> - <target state="needs-translation">When this feature is enabled it stops the device from contacting certain domains or websites known for distributing ads, malware, trackers and more. -This might cause issues on certain websites, services, and apps. -Attention: this setting cannot be used in combination with **Use custom DNS server**.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Lors de l'utilisation de DAITA, un fournisseur de serveurs activés par DAITA est requis.</target> + <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-qualifier="leveraged-mt">À quel port TCP le protocole d'obfuscation UDP-over-TCP doit se connecter sur le serveur VPN.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Obfuscation WireGuard</target> + <trans-unit id="WireGuard obfuscation" xml:space="preserve"> + <source>WireGuard obfuscation</source> + <target state-qualifier="leveraged-tm">Obfuscation WireGuard</target> <note/> </trans-unit> - <trans-unit id="WireGuard ports" xml:space="preserve"> - <source>WireGuard ports</source> - <target state-qualifier="leveraged-mt">Ports WireGuard</target> + <trans-unit id="WireGuard port" xml:space="preserve"> + <source>WireGuard port</source> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Avec la méthode "Direct", l'application communique directement avec un serveur API Mullvad sans proxys intermédiaires.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Avec la méthode "proxy DNS chiffré", l'application communiquera avec notre API Mullvad via une adresse proxy. -Il fait cela en récupérant une adresse depuis un DNS via un serveur HTTPS (DoH) puis en utilisant cela pour atteindre nos serveurs API.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Avec la méthode "pont Mullvad", l'application communique avec un serveur API Mullvad via un serveur pont Mullvad. Il fait cela en envoyant le trafic obscurci par Shadowsocks.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Oui, continuer</target> + <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-qualifier="leveraged-tm">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-translation">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.</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-qualifier="leveraged-mt">Vous êtes sur le point d'envoyer le rapport de problème sans que nous puissions vous répondre. Si vous voulez une réponse à votre signalement vous devrez entrer une adresse e-mail.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Vous êtes connecté avec un numéro de compte invalide. Veuillez vous déconnecter et essayer un autre.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Vous pouvez ajouter plus de temps via la vue du compte ou le site Web pour continuer à utiliser le VPN.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-tm">Vous pouvez maintenant continuer la connexion sur cet appareil.</target> <note/> </trans-unit> <trans-unit id="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." 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-qualifier="leveraged-mt">Vous pouvez utiliser la fonction "restaurer les achats" pour vérifier les paiements effectués via les services Apple. S'il y a un paiement qui n'a pas été crédité, il ajoutera le temps au compte actuellement connecté à Mullvad.</target> + <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-qualifier="leveraged-mt">Il vous reste %@ sur ce compte.</target> + <target state="needs-translation">You have %@ left on this account.</target> <note/> </trans-unit> - <trans-unit id="You have no more VPN time left on this account. Either buy credit on our website or make an in-app purchase via the **Add time** button below." xml:space="preserve"> - <source>You have no more VPN time left on this account. Either buy credit on our website or make an in-app purchase via the **Add time** button below.</source> - <target state-qualifier="leveraged-mt">Il ne vous reste plus de temps VPN sur ce compte. Achetez du crédit sur notre site Web ou effectuez un achat dans l'application via le bouton **Ajouter du temps** ci-dessous.</target> + <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. 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." 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. To add more, you will need to disconnect and access the Internet with an unsecure connection." xml:space="preserve"> - <source>You have no more VPN time left on this account. To add more, you will need to disconnect and access the Internet with an unsecure connection.</source> - <target state-qualifier="leveraged-mt">Il ne vous reste plus de temps VPN sur ce compte. Pour en ajouter plus, vous devrez vous déconnecter et accéder à Internet avec une connexion non sécurisée.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Il vous reste un jour sur ce compte. Veuillez ajouter plus de temps pour continuer à utiliser le VPN.</target> + <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-qualifier="leveraged-mt">Vous avez supprimé cet appareil. Pour vous reconnecter, vous devrez vous reconnecter.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Vous avez des modifications non enregistrées.</target> + <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-qualifier="leveraged-mt">Votre appareil est hors ligne. Le tunnel se connectera automatiquement une fois que votre appareil sera de nouveau connecté.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Votre appareil est hors ligne. Essayez de vous connecter à nouveau lorsque l'appareil a accès à Internet.</target> + <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-qualifier="leveraged-mt">Votre adresse e-mail (facultatif)</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Vos achats précédents ont déjà été ajoutés à ce compte.</target> + <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-qualifier="leveraged-mt">Votre achat a été remboursé avec succès.</target> + <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-qualifier="leveraged-mt">Vous êtes prêt !!</target> + <target state="needs-translation">You’re all set!!</target> + <note/> + </trans-unit> + <trans-unit id="file" xml:space="preserve"> + <source>file</source> + <target state-qualifier="leveraged-tm">fichier</target> <note/> </trans-unit> <trans-unit id="method" xml:space="preserve"> <source>method</source> - <target state-qualifier="leveraged-mt">Méthode</target> + <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-qualifier="leveraged-tm">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. To prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing. 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-qualifier="leveraged-mt">Le « Partage de réseau local%@ » nécessite de redémarrer la connexion VPN, ce qui vous déconnectera et exposera brièvement votre trafic. -Pour éviter cela, activez manuellement le mode avion et éteignez le Wi-Fi avant de continuer. -Voulez-vous continuer à activer le « Partage de réseau local»?</target> + <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/MullvadMockData-InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext"> + <file original="Assets/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> @@ -1840,7 +2085,7 @@ Voulez-vous continuer à activer le « Partage de réseau local»?</target> </trans-unit> </body> </file> - <file original="Assets/MullvadRustRuntime-InfoPlist.xcstrings" source-language="en" target-language="fr" datatype="plaintext"> + <file original="Assets/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> @@ -1852,7 +2097,7 @@ Voulez-vous continuer à activer le « Partage de réseau local»?</target> </trans-unit> </body> </file> - <file original="en.lproj/MullvadLogging-InfoPlist.strings" source-language="en" target-language="fr" datatype="plaintext"> + <file original="Assets/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> @@ -1864,7 +2109,7 @@ Voulez-vous continuer à activer le « Partage de réseau local»?</target> </trans-unit> </body> </file> - <file original="en.lproj/MullvadSettings-InfoPlist.strings" source-language="en" target-language="fr" datatype="plaintext"> + <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> @@ -1876,7 +2121,7 @@ Voulez-vous continuer à activer le « Partage de réseau local»?</target> </trans-unit> </body> </file> - <file original="en.lproj/MullvadTypes-InfoPlist.strings" source-language="en" target-language="fr" datatype="plaintext"> + <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> @@ -1888,7 +2133,7 @@ Voulez-vous continuer à activer le « Partage de réseau local»?</target> </trans-unit> </body> </file> - <file original="en.lproj/Operations-InfoPlist.strings" source-language="en" target-language="fr" datatype="plaintext"> + <file original="Assets/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> @@ -1900,7 +2145,7 @@ Voulez-vous continuer à activer le « Partage de réseau local»?</target> </trans-unit> </body> </file> - <file original="en.lproj/PacketTunnelCore-InfoPlist.strings" source-language="en" target-language="fr" datatype="plaintext"> + <file original="Assets/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> @@ -1912,7 +2157,7 @@ Voulez-vous continuer à activer le « Partage de réseau local»?</target> </trans-unit> </body> </file> - <file original="en.lproj/Routing-InfoPlist.strings" source-language="en" target-language="fr" datatype="plaintext"> + <file original="Assets/Resources/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> @@ -1924,7 +2169,7 @@ Voulez-vous continuer à activer le « Partage de réseau local»?</target> </trans-unit> </body> </file> - <file original="MullvadREST/en.lproj/InfoPlist.strings" source-language="en" target-language="fr" datatype="plaintext"> + <file original="Assets/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> @@ -1936,23 +2181,16 @@ Voulez-vous continuer à activer le « Partage de réseau local»?</target> </trans-unit> </body> </file> - <file original="MullvadVPN/Supporting Files/en.lproj/InfoPlist.strings" source-language="en" target-language="fr" datatype="plaintext"> + <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-qualifier="leveraged-mt">L'application a besoin de cela pour se connecter et tester une nouvelle méthode.</target> + <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="PacketTunnel/en.lproj/InfoPlist.strings" 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> </xliff> diff --git a/ios/translation/locales/sv.xliff b/ios/translation/locales/sv.xliff index 326ce9c498..9fffbb4bac 100644 --- a/ios/translation/locales/sv.xliff +++ b/ios/translation/locales/sv.xliff @@ -1,5 +1,12 @@ <?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/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="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"/> @@ -7,641 +14,777 @@ <body> <trans-unit id="%@" xml:space="preserve"> <source>%@</source> - <target state-qualifier="leveraged-mt">%@</target> + <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-qualifier="leveraged-tm">%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-qualifier="leveraged-mt">%@ kan inte vara tomt.</target> + <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-qualifier="leveraged-tm">%@ 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="%@ have been added to your account" xml:space="preserve"> <source>%@ have been added to your account</source> - <target state-qualifier="leveraged-mt">%@ har lagts till på ditt konto</target> + <target state="needs-translation">%@ have been added to your account</target> <note/> </trans-unit> <trans-unit id="%@ left on this account" xml:space="preserve"> <source>%@ left on this account</source> - <target state-qualifier="leveraged-mt">%@ kvar på detta konto</target> + <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="%@ were added to your account." xml:space="preserve"> <source>%@ were added to your account.</source> - <target state-qualifier="leveraged-mt">%@ lades till på ditt konto.</target> + <target state="needs-translation">%@ were added to your account.</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-qualifier="leveraged-mt">%d mer...</target> + <target state-qualifier="leveraged-tm">%d 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.** DAITA (Defense against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. 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>**Attention: This increases network traffic and will also negatively affect speed, latency, and battery usage. Use with caution on limited plans.** - -DAITA (Defense against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. - -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-qualifier="leveraged-mt">**Uppmärksamhet: Detta ökar nätverkstrafiken och kommer också att påverka hastighet, latens och batterianvändning. Använd med försiktighet på begränsade planer. * - -DAITA (Försvar mot AI-styrda Trafikanalys) döljer mönster i din krypterade VPN-trafik. - -Genom att använda sofistikerad AI är det möjligt att analysera trafiken av datapaket som går in och ut från din enhet (även om trafiken är krypterad).</target> + <trans-unit id="%lld more..." xml:space="preserve"> + <source>%lld more...</source> + <target state-qualifier="leveraged-tm">%lld till ...</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-qualifier="leveraged-mt">**Tryck här** för att se vad som är nytt.</target> + <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-qualifier="leveraged-tm">**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="A custom list with this name exists, please choose a unique name." xml:space="preserve"> <source>A custom list with this name exists, please choose a unique name.</source> - <target state-qualifier="leveraged-mt">En anpassad lista med detta namn finns, välj ett unikt namn.</target> + <target state="needs-translation">A custom list with this name exists, please choose a unique name.</target> <note/> </trans-unit> <trans-unit id="API access" xml:space="preserve"> <source>API access</source> - <target state-qualifier="leveraged-mt">API åtkomst</target> - <note/> - </trans-unit> - <trans-unit id="API could not be reached, save anyway?" xml:space="preserve"> - <source>API could not be reached, save anyway?</source> - <target state-qualifier="leveraged-mt">API kunde inte nås, spara ändå?</target> + <target state-qualifier="leveraged-tm">API-åtkomst</target> <note/> </trans-unit> <trans-unit id="API reachable" xml:space="preserve"> <source>API reachable</source> - <target state-qualifier="leveraged-mt">API kan nås</target> + <target state-qualifier="leveraged-tm">API kan nås</target> <note/> </trans-unit> <trans-unit id="API unreachable" xml:space="preserve"> <source>API unreachable</source> - <target state-qualifier="leveraged-mt">API onåbar</target> + <target state-qualifier="leveraged-tm">API kan inte nås</target> + <note/> + </trans-unit> + <trans-unit id="API unreachable, save anyway?" xml:space="preserve"> + <source>API unreachable, save anyway?</source> + <target state-qualifier="leveraged-tm">API kan inte nås, spara ändå?</target> <note/> </trans-unit> <trans-unit id="About API access…" xml:space="preserve"> <source>About API access…</source> - <target state-qualifier="leveraged-mt">Om API-åtkomst…</target> + <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-qualifier="leveraged-mt">Om Direkt metod...</target> + <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-qualifier="leveraged-mt">Om krypterad DNS-proxymetod...</target> + <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-qualifier="leveraged-mt">Om Mullvad broar metod...</target> + <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-qualifier="leveraged-mt">Om Server IP åsidosätta...</target> + <target state="needs-translation">About Server IP override...</target> <note/> </trans-unit> <trans-unit id="Account" xml:space="preserve"> <source>Account</source> - <target state-qualifier="leveraged-mt">Konto</target> + <target state-qualifier="leveraged-tm">Konto</target> <note/> </trans-unit> <trans-unit id="Account created" xml:space="preserve"> <source>Account created</source> - <target state-qualifier="leveraged-mt">Konto skapat</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Konto kredit upphör snart</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Konto kredit har löpt ut</target> + <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-qualifier="leveraged-mt">Radering av konto</target> + <target state="needs-translation">Account deletion</target> <note/> </trans-unit> <trans-unit id="Account number" xml:space="preserve"> <source>Account number</source> - <target state-qualifier="leveraged-mt">Kontonummer</target> + <target state-qualifier="leveraged-tm">Kontonummer</target> + <note/> + </trans-unit> + <trans-unit id="Active features" xml:space="preserve"> + <source>Active features</source> + <target state-qualifier="leveraged-tm">Aktiva funktioner</target> <note/> </trans-unit> <trans-unit id="Add" xml:space="preserve"> <source>Add</source> - <target state-qualifier="leveraged-mt">Lägg till</target> + <target state-qualifier="leveraged-tm">Lägg till</target> <note/> </trans-unit> <trans-unit id="Add 30 days" xml:space="preserve"> <source>Add 30 days</source> - <target state-qualifier="leveraged-mt">Lägg till 30 dagar</target> + <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-qualifier="leveraged-mt">Lägg till 90 dagar</target> + <target state="needs-translation">Add 90 days</target> <note/> </trans-unit> <trans-unit id="Add Time" xml:space="preserve"> <source>Add Time</source> - <target state-qualifier="leveraged-mt">Lägg till tid</target> + <target state="needs-translation">Add Time</target> <note/> </trans-unit> <trans-unit id="Add a server" xml:space="preserve"> <source>Add a server</source> - <target state-qualifier="leveraged-mt">Lägg till en server</target> + <target state-qualifier="leveraged-tm">Lägg till en server</target> <note/> </trans-unit> <trans-unit id="Add access method" xml:space="preserve"> <source>Add access method</source> - <target state-qualifier="leveraged-mt">Lägg till accessmetod</target> + <target state="needs-translation">Add access method</target> <note/> </trans-unit> <trans-unit id="Add locations" xml:space="preserve"> <source>Add locations</source> - <target state-qualifier="leveraged-mt">Lägg till platser</target> + <target state-qualifier="leveraged-tm">Lägg till platser</target> <note/> </trans-unit> <trans-unit id="Add new list" xml:space="preserve"> <source>Add new list</source> - <target state-qualifier="leveraged-mt">Lägg till ny lista</target> + <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-qualifier="leveraged-mt">Lägg till tid</target> + <target state-qualifier="leveraged-tm">Lägg till tid</target> <note/> </trans-unit> <trans-unit id="Ads" xml:space="preserve"> <source>Ads</source> - <target state-qualifier="leveraged-mt">Annonser</target> + <target state-qualifier="leveraged-tm">Annonser</target> <note/> </trans-unit> <trans-unit id="Adult content" xml:space="preserve"> <source>Adult content</source> - <target state-qualifier="leveraged-mt">Vuxen innehåll</target> + <target state-qualifier="leveraged-tm">Vuxet innehåll</target> + <note/> + </trans-unit> + <trans-unit id="Agree and continue" xml:space="preserve"> + <source>Agree and continue</source> + <target state-qualifier="leveraged-tm">Godkänn och fortsätt</target> <note/> </trans-unit> <trans-unit id="All" xml:space="preserve"> <source>All</source> - <target state-qualifier="leveraged-mt">Alla</target> + <target state="needs-translation">All</target> <note/> </trans-unit> <trans-unit id="All Providers" xml:space="preserve"> <source>All Providers</source> - <target state-qualifier="leveraged-mt">Alla leverantörer</target> + <target state="needs-translation">All Providers</target> <note/> </trans-unit> <trans-unit id="All locations" xml:space="preserve"> <source>All locations</source> - <target state-qualifier="leveraged-mt">Alla platser</target> + <target state-qualifier="leveraged-tm">Alla platser</target> <note/> </trans-unit> <trans-unit id="Any" xml:space="preserve"> <source>Any</source> - <target state-qualifier="leveraged-mt">Valfri</target> + <target state-qualifier="leveraged-tm">Valfri</target> <note/> </trans-unit> <trans-unit id="App logs" xml:space="preserve"> <source>App logs</source> - <target state-qualifier="leveraged-mt">App loggar</target> + <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-qualifier="leveraged-mt">AppStore-kvitto finns inte på disken.</target> + <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-qualifier="leveraged-mt">Minst en metod måste aktiveras.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Autentisering</target> + <target state-qualifier="leveraged-tm">Autentisering</target> <note/> </trans-unit> <trans-unit id="Automatic" xml:space="preserve"> <source>Automatic</source> - <target state-qualifier="leveraged-mt">Automatisk</target> + <target state-qualifier="leveraged-tm">Automatisk</target> <note/> </trans-unit> <trans-unit id="BLOCKING INTERNET" xml:space="preserve"> <source>BLOCKING INTERNET</source> - <target state-qualifier="leveraged-mt">BLOCKAR INTERNET</target> + <target state-qualifier="leveraged-tm">BLOCKERAR INTERNET</target> <note/> </trans-unit> <trans-unit id="Back to editing" xml:space="preserve"> <source>Back to editing</source> - <target state-qualifier="leveraged-mt">Tillbaka till redigering</target> + <target state="needs-translation">Back to editing</target> <note/> </trans-unit> <trans-unit id="Blocked connection" xml:space="preserve"> <source>Blocked connection</source> - <target state-qualifier="leveraged-mt">Blockerad anslutning</target> + <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-qualifier="leveraged-mt">Blockera internet: Din tid på detta konto har gått ut. För att fortsätta använda internet, lägg till mer tid eller koppla från VPN.</target> + <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 "Direct only" you will have to manually select a server that is DAITA-enabled. Multihop won't automatically be used to enable DAITA with any server." xml:space="preserve"> - <source>By enabling "Direct only" you will have to manually select a server that is DAITA-enabled. Multihop won't automatically be used to enable DAITA with any server.</source> - <target state-qualifier="leveraged-mt">Genom att aktivera "Direct only" måste du manuellt välja en server som är DAITA-aktiverad. Multihop används inte automatiskt för att aktivera DAITA med någon server.</target> + <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 enabling "Direct only" you will have to manually select a server that is DAITA-enabled. This can cause you to end up in a blocked state until you have selected a compatible server in the "Select location" view." xml:space="preserve"> - <source>By enabling "Direct only" you will have to manually select a server that is DAITA-enabled. This can cause you to end up in a blocked state until you have selected a compatible server in the "Select location" view.</source> - <target state-qualifier="leveraged-mt">Genom att aktivera "Direct only" måste du manuellt välja en server som är DAITA-aktiverad. Detta kan leda till att du hamnar i ett blockerat tillstånd tills du har valt en kompatibel server i "Välj plats"-vyn.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Avbryt</target> + <target state-qualifier="leveraged-tm">Avbryt</target> <note/> </trans-unit> <trans-unit id="Cannot complete the purchase" xml:space="preserve"> <source>Cannot complete the purchase</source> - <target state-qualifier="leveraged-mt">Kan inte slutföra köpet</target> + <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-qualifier="leveraged-mt">Kan inte läsa AppStore-kvittot från disk</target> + <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-qualifier="leveraged-mt">Kan inte uppdatera AppStore-kvitto: %@</target> + <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-qualifier="leveraged-mt">Kan inte återställa köp</target> + <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-qualifier="leveraged-mt">Kontrollerar kontonummer</target> + <target state-qualifier="leveraged-tm">Kontrollerar kontonummer</target> <note/> </trans-unit> <trans-unit id="Cipher" xml:space="preserve"> <source>Cipher</source> - <target state-qualifier="leveraged-mt">Cipher</target> + <target state-qualifier="leveraged-tm">Chiffrering</target> <note/> </trans-unit> <trans-unit id="Clear" xml:space="preserve"> <source>Clear</source> - <target state-qualifier="leveraged-mt">Rensa</target> + <target state-qualifier="leveraged-tm">Rensa</target> <note/> </trans-unit> <trans-unit id="Clear all overrides" xml:space="preserve"> <source>Clear all overrides</source> - <target state-qualifier="leveraged-mt">Rensa alla åsidosättningar</target> + <target state-qualifier="leveraged-tm">Rensa alla åsidosättningar</target> <note/> </trans-unit> <trans-unit id="Clear all overrides?" xml:space="preserve"> <source>Clear all overrides?</source> - <target state-qualifier="leveraged-mt">Rensa alla överskridningar?</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Rensar de importerade åsidosättningarna ändrar serverns IP-adresser, i Välj plats vyn, tillbaka till standard.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Kunden har inte tillåtelse att utfärda begäran.</target> + <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-qualifier="leveraged-mt">Kollapsar denna plats.</target> + <target state="needs-translation">Collapses this location.</target> <note/> </trans-unit> <trans-unit id="Congrats!" xml:space="preserve"> <source>Congrats!</source> - <target state-qualifier="leveraged-mt">Grattis!</target> + <target state-qualifier="leveraged-tm">Grattis!</target> + <note/> + </trans-unit> + <trans-unit id="Connect" xml:space="preserve"> + <source>Connect</source> + <target state-qualifier="leveraged-tm">Anslut</target> <note/> </trans-unit> <trans-unit id="Connected" xml:space="preserve"> <source>Connected</source> - <target state-qualifier="leveraged-mt">Ansluten</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">Ansluter ...</target> + <note/> + </trans-unit> + <trans-unit id="Connection details" xml:space="preserve"> + <source>Connection details</source> + <target state-qualifier="leveraged-tm">Anslutningsinformation</target> + <note/> + </trans-unit> + <trans-unit id="Continue with login" xml:space="preserve"> + <source>Continue with login</source> + <target state-qualifier="leveraged-tm">Fortsätt med inloggning</target> <note/> </trans-unit> <trans-unit id="Copy to pasteboard" xml:space="preserve"> <source>Copy to pasteboard</source> - <target state-qualifier="leveraged-mt">Kopiera till pasteboard</target> + <target state="needs-translation">Copy to pasteboard</target> <note/> </trans-unit> <trans-unit id="Correct account number" xml:space="preserve"> <source>Correct account number</source> - <target state-qualifier="leveraged-mt">Rätt kontonummer</target> + <target state="needs-translation">Correct account number</target> <note/> </trans-unit> <trans-unit id="Create" xml:space="preserve"> <source>Create</source> - <target state-qualifier="leveraged-mt">Skapa</target> + <target state-qualifier="leveraged-tm">Skapa</target> <note/> </trans-unit> <trans-unit id="Create account" xml:space="preserve"> <source>Create account</source> - <target state-qualifier="leveraged-mt">Skapa konto</target> + <target state-qualifier="leveraged-tm">Skapa konto</target> + <note/> + </trans-unit> + <trans-unit id="Create new account" xml:space="preserve"> + <source>Create new account</source> + <target state="needs-translation">Create new account</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-qualifier="leveraged-mt">Skapa nytt konto</target> + <target state="needs-translation">Creating new account</target> <note/> </trans-unit> <trans-unit id="Creating quantum secure connection" xml:space="preserve"> <source>Creating quantum secure connection</source> - <target state-qualifier="leveraged-mt">Skapar kvantsäker anslutning</target> + <target state="needs-translation">Creating quantum secure connection</target> <note/> </trans-unit> <trans-unit id="Creating secure connection" xml:space="preserve"> <source>Creating secure connection</source> - <target state-qualifier="leveraged-mt">Skapar säker anslutning</target> + <target state="needs-translation">Creating secure connection</target> + <note/> + </trans-unit> + <trans-unit id="Current device" xml:space="preserve"> + <source>Current device</source> + <target state-qualifier="leveraged-tm">Aktuell enhet</target> <note/> </trans-unit> <trans-unit id="Custom" xml:space="preserve"> <source>Custom</source> - <target state-qualifier="leveraged-mt">Anpassad</target> + <target state-qualifier="leveraged-tm">Anpassad</target> <note/> </trans-unit> <trans-unit id="Custom DNS" xml:space="preserve"> <source>Custom DNS</source> - <target state-qualifier="leveraged-mt">Anpassad DNS</target> + <target state-qualifier="leveraged-tm">Anpassad DNS</target> <note/> </trans-unit> <trans-unit id="Custom lists" xml:space="preserve"> <source>Custom lists</source> - <target state-qualifier="leveraged-mt">Anpassade listor</target> + <target state-qualifier="leveraged-tm">Anpassade listor</target> <note/> </trans-unit> <trans-unit id="DAITA" xml:space="preserve"> <source>DAITA</source> - <target state-qualifier="leveraged-mt">DAITA</target> - <note/> - </trans-unit> - <trans-unit id="DAITA (Defence against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. If anyone is monitoring your connection, this makes it significantly harder for them to identify what websites you are visiting. It does this by carefully adding network noise and making all network packets the same size. Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. Attention: Be cautious if you have a limited data plan as this feature will increase your network traffic." xml:space="preserve"> - <source>DAITA (Defence against AI-guided Traffic Analysis) hides patterns in your encrypted VPN traffic. If anyone is monitoring your connection, this makes it significantly harder for them to identify what websites you are visiting. -It does this by carefully adding network noise and making all network packets the same size. -Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. -Attention: Be cautious if you have a limited data plan as this feature will increase your network traffic.</source> - <target state-qualifier="leveraged-mt">DAITA (Defence against AI-guided Traffic Analysis) döljer mönster i din krypterade VPN-trafik. Om någon övervakar din anslutning, detta gör det betydligt svårare för dem att identifiera vilka webbplatser du besöker. -Det gör detta genom att noggrant lägga till nätverksljud och göra alla nätverkspaket till samma storlek. -Alla våra servrar är inte DAITA-aktiverade. Därför använder vi multihop automatiskt för att aktivera DAITA med alla servrar. -Observera: Var försiktig om du har en begränsad dataplan eftersom denna funktion kommer att öka din nätverkstrafik.</target> + <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 "Select location" 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-qualifier="leveraged-mt">DAITA är inte tillgängligt på den valda platsen för närvarande. Efter aktivering, gå till "Välj plats"-vyn och välj en plats som stöder DAITA.</target> + <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 "Select location" 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-qualifier="leveraged-mt">DAITA är inte tillgängligt på den aktuella postservern. Efter aktivering, gå till "Välj plats"-vyn och välj en postplats som stöder DAITA.</target> + <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-qualifier="leveraged-mt">DAITA-aktiverat</target> + <target state="needs-translation">DAITA-enabled</target> <note/> </trans-unit> <trans-unit id="DAITA: Multihop" xml:space="preserve"> <source>DAITA: Multihop</source> - <target state-qualifier="leveraged-mt">DAITA: Multihop</target> + <target state="needs-translation">DAITA: Multihop</target> <note/> </trans-unit> <trans-unit id="DNS content blockers" xml:space="preserve"> <source>DNS content blockers</source> - <target state-qualifier="leveraged-mt">DNS-innehållsblockerare</target> + <target state-qualifier="leveraged-tm">DNS-innehållsblockerare</target> <note/> </trans-unit> <trans-unit id="DNS settings" xml:space="preserve"> <source>DNS settings</source> - <target state-qualifier="leveraged-mt">DNS-inställningar</target> + <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-qualifier="leveraged-mt">Radera</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Ta bort konto</target> + <target state="needs-translation">Delete Account</target> <note/> </trans-unit> <trans-unit id="Delete account" xml:space="preserve"> <source>Delete account</source> - <target state-qualifier="leveraged-mt">Ta bort konto</target> + <target state="needs-translation">Delete account</target> <note/> </trans-unit> <trans-unit id="Delete list" xml:space="preserve"> <source>Delete list</source> - <target state-qualifier="leveraged-mt">Ta bort lista</target> + <target state-qualifier="leveraged-tm">Ta bort lista</target> <note/> </trans-unit> <trans-unit id="Delete method" xml:space="preserve"> <source>Delete method</source> - <target state-qualifier="leveraged-mt">Ta bort metod</target> + <target state-qualifier="leveraged-tm">Radera metod</target> <note/> </trans-unit> <trans-unit id="Deleting account..." xml:space="preserve"> <source>Deleting account...</source> - <target state-qualifier="leveraged-mt">Tar bort konto...</target> + <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-qualifier="leveraged-mt">Enheten är inaktiv</target> + <target state-qualifier="leveraged-tm">Enheten är inaktiv</target> <note/> </trans-unit> <trans-unit id="Device name" xml:space="preserve"> <source>Device name</source> - <target state-qualifier="leveraged-mt">Enhetens namn</target> + <target state-qualifier="leveraged-tm">Enhetens namn</target> <note/> </trans-unit> <trans-unit id="Device name: %@" xml:space="preserve"> <source>Device name: %@</source> - <target state-qualifier="leveraged-mt">Enhetsnamn: %@</target> + <target state="needs-translation">Device name: %@</target> <note/> </trans-unit> <trans-unit id="Direct" xml:space="preserve"> <source>Direct</source> - <target state-qualifier="leveraged-mt">Direkt</target> + <target state="needs-translation">Direct</target> <note/> </trans-unit> <trans-unit id="Direct only" xml:space="preserve"> <source>Direct only</source> - <target state-qualifier="leveraged-mt">Endast direkt</target> + <target state-qualifier="leveraged-tm">Endast direkt</target> <note/> </trans-unit> - <trans-unit id="Disable all content blockers to activate this setting." xml:space="preserve"> - <source>Disable all content blockers to activate this setting.</source> - <target state-qualifier="leveraged-mt">Inaktivera alla innehållsblockerare för att aktivera denna inställning.</target> + <trans-unit id="Disable all "%@" above to activate this setting." xml:space="preserve"> + <source>Disable all "%@" above to activate this setting.</source> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Inaktiverad</target> + <target state="needs-translation">Disabled</target> <note/> </trans-unit> <trans-unit id="Disabling" xml:space="preserve"> <source>Disabling</source> - <target state-qualifier="leveraged-mt">Inaktiverar</target> + <target state="needs-translation">Disabling</target> <note/> </trans-unit> <trans-unit id="Discard changes" xml:space="preserve"> <source>Discard changes</source> - <target state-qualifier="leveraged-mt">Ignorera ändringar</target> + <target state-qualifier="leveraged-tm">Ignorera ändringarna</target> <note/> </trans-unit> <trans-unit id="Disconnect" xml:space="preserve"> <source>Disconnect</source> - <target state-qualifier="leveraged-mt">Koppla från</target> + <target state-qualifier="leveraged-tm">Koppla från</target> + <note/> + </trans-unit> + <trans-unit id="Disconnected" xml:space="preserve"> + <source>Disconnected</source> + <target state-qualifier="leveraged-tm">Frånkopplad</target> <note/> </trans-unit> <trans-unit id="Disconnecting" xml:space="preserve"> <source>Disconnecting</source> - <target state-qualifier="leveraged-mt">Kopplar från</target> + <target state-qualifier="leveraged-tm">Kopplar från</target> + <note/> + </trans-unit> + <trans-unit id="Disconnecting..." xml:space="preserve"> + <source>Disconnecting...</source> + <target state-qualifier="leveraged-tm">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-translation">Do you want to create a new account?</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-qualifier="leveraged-mt">Klar</target> + <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-qualifier="leveraged-mt">Har du inget kontonummer?</target> + <target state-qualifier="leveraged-tm">Har du inget kontonummer?</target> <note/> </trans-unit> <trans-unit id="Edit custom list" xml:space="preserve"> <source>Edit custom list</source> - <target state-qualifier="leveraged-mt">Redigera anpassad lista</target> + <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-qualifier="leveraged-mt">Redigera listor</target> + <target state-qualifier="leveraged-tm">Redigera listor</target> <note/> </trans-unit> <trans-unit id="Edit locations" xml:space="preserve"> <source>Edit locations</source> - <target state-qualifier="leveraged-mt">Redigera platser</target> + <target state-qualifier="leveraged-tm">Redigera platser</target> <note/> </trans-unit> <trans-unit id="Edit message" xml:space="preserve"> <source>Edit message</source> - <target state-qualifier="leveraged-mt">Redigera meddelande</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Aktivera</target> + <target state-qualifier="leveraged-tm">Aktivera</target> <note/> </trans-unit> <trans-unit id="Enable "%@"" xml:space="preserve"> <source>Enable "%@"</source> - <target state-qualifier="leveraged-mt">Aktivera "%@"</target> + <target state="needs-translation">Enable "%@"</target> <note/> </trans-unit> <trans-unit id="Enable method" xml:space="preserve"> <source>Enable method</source> - <target state-qualifier="leveraged-mt">Aktivera metod</target> + <target state-qualifier="leveraged-tm">Aktivera metod</target> <note/> </trans-unit> <trans-unit id="Enabling" xml:space="preserve"> <source>Enabling</source> - <target state-qualifier="leveraged-mt">Aktiverar</target> + <target state="needs-translation">Enabling</target> <note/> </trans-unit> <trans-unit id="Encrypted DNS proxy" xml:space="preserve"> <source>Encrypted DNS proxy</source> - <target state-qualifier="leveraged-mt">Krypterad DNS-proxy</target> + <target state="needs-translation">Encrypted DNS proxy</target> <note/> </trans-unit> <trans-unit id="Enter IP" xml:space="preserve"> <source>Enter IP</source> - <target state-qualifier="leveraged-mt">Ange IP</target> + <target state-qualifier="leveraged-tm">Ange IP</target> <note/> </trans-unit> <trans-unit id="Enter voucher code" xml:space="preserve"> <source>Enter voucher code</source> - <target state-qualifier="leveraged-mt">Ange rabattkod</target> + <target state-qualifier="leveraged-tm">Ange kupongkod</target> <note/> </trans-unit> <trans-unit id="Enter your account number" xml:space="preserve"> <source>Enter your account number</source> - <target state-qualifier="leveraged-mt">Ange ditt kontonummer</target> + <target state-qualifier="leveraged-tm">Ange ditt kontonummer</target> <note/> </trans-unit> <trans-unit id="Entry" xml:space="preserve"> <source>Entry</source> - <target state-qualifier="leveraged-mt">Inlägg</target> + <target state-qualifier="leveraged-tm">Ingång</target> <note/> </trans-unit> <trans-unit id="Exit" xml:space="preserve"> <source>Exit</source> - <target state-qualifier="leveraged-mt">Avsluta</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Expanderar denna plats.</target> + <target state="needs-translation">Expands this location.</target> <note/> </trans-unit> <trans-unit id="FAQs & Guides" xml:space="preserve"> <source>FAQs & Guides</source> - <target state-qualifier="leveraged-mt">FAQs & Guider</target> + <target state="needs-translation">FAQs & Guides</target> <note/> </trans-unit> <trans-unit id="Failed to connect to App store, please try again later." xml:space="preserve"> <source>Failed to connect to App store, please try again later.</source> - <target state-qualifier="leveraged-mt">Det gick inte att ansluta till App Store, försök igen senare.</target> + <target state="needs-translation">Failed to connect to App store, please try again later.</target> <note/> </trans-unit> <trans-unit id="Failed to send" xml:space="preserve"> <source>Failed to send</source> - <target state-qualifier="leveraged-mt">Det gick inte att skicka</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Det gick inte att skicka kvittot till server: %@</target> + <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-qualifier="leveraged-mt">Det gick inte att starta tunneln.</target> + <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-qualifier="leveraged-mt">Det gick inte att starta tunneln: %@.</target> + <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-qualifier="leveraged-mt">Det gick inte att stoppa tunneln.</target> + <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-qualifier="leveraged-mt">Det gick inte att stoppa tunneln: %@.</target> + <target state="needs-translation">Failed to stop the tunnel: %@.</target> <note/> </trans-unit> <trans-unit id="Failed to validate account number: %@" xml:space="preserve"> @@ -651,1184 +794,1286 @@ Observera: Var försiktig om du har en begränsad dataplan eftersom denna funkti </trans-unit> <trans-unit id="Fetching devices..." xml:space="preserve"> <source>Fetching devices...</source> - <target state-qualifier="leveraged-mt">Hämtar enheter...</target> + <target state="needs-translation">Fetching devices...</target> <note/> </trans-unit> <trans-unit id="Filter" xml:space="preserve"> <source>Filter</source> - <target state-qualifier="leveraged-mt">Filtrera</target> + <target state-qualifier="leveraged-tm">Filtrera</target> <note/> </trans-unit> <trans-unit id="Filtered:" xml:space="preserve"> <source>Filtered:</source> - <target state-qualifier="leveraged-mt">Filtrerat:</target> + <target state-qualifier="leveraged-tm">Filtrerat:</target> <note/> </trans-unit> <trans-unit id="Gambling" xml:space="preserve"> <source>Gambling</source> - <target state-qualifier="leveraged-mt">Spelande</target> + <target state-qualifier="leveraged-tm">Hasardspel</target> <note/> </trans-unit> - <trans-unit id="Go ahead and start using the app to begin reclaiming your online privacy. To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools." xml:space="preserve"> - <source>Go ahead and start using the app to begin reclaiming your online privacy. -To continue your journey as a privacy ninja, visit our website to pick up other privacy-friendly habits and tools.</source> - <target state-qualifier="leveraged-mt">Gå vidare och börja använda appen för att börja återta din integritet online. -För att fortsätta din resa som privatliv ninja, besök vår hemsida för att plocka upp andra integritetsvänliga vanor och verktyg.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Gå till inloggning</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Att gå till inloggning kommer att avblockera Internet på den här enheten.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Jag förstår!</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Här är ditt kontonummer. Spara det!</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Dölj kontonummer</target> + <target state-qualifier="leveraged-tm">Dölj kontonummer</target> <note/> </trans-unit> - <trans-unit id="If an observer monitors these data packets, DAITA makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating. DAITA does this by carefully adding network noise and making all network packets the same size. Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. " xml:space="preserve"> - <source>If an observer monitors these data packets, DAITA makes it significantly harder for them to identify which websites you are visiting or with whom you are communicating. - -DAITA does this by carefully adding network noise and making all network packets the same size. - -Not all our servers are DAITA-enabled. Therefore, we use multihop automatically to enable DAITA with any server. -</source> - <target state-qualifier="leveraged-mt">Om en observatör övervakar dessa datapaket, DAITA gör det betydligt svårare för dem att identifiera vilka webbplatser du besöker eller med vilka du kommunicerar. - -DAITA gör detta genom att noggrant lägga till nätverksljud och göra alla nätverkspaket till samma storlek. - -Alla våra servrar är inte DAITA-aktiverade. Därför använder vi multihop automatiskt för att aktivera DAITA med alla servrar. -</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Om det behövs kommer vi att kontakta dig på %@</target> + <target state-qualifier="leveraged-tm">Om det behövs kontaktar vi dig på %@</target> + <note/> + </trans-unit> + <trans-unit id="If so, click log out below to log in with the other account number." xml:space="preserve"> + <source>If so, click log out below to log in with the other account number.</source> + <target state="needs-translation">If so, click log out below to log in with the other account number.</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-qualifier="leveraged-mt">Om du har problem med att ansluta till VPN-servrar, vänligen kontakta support.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Om du inte är ansluten till vårt VPN kommer den krypterade DNS-proxyn att använda din egen icke-VPN IP när du ansluter. -DoH-servrarna är värd för en av följande leverantörer: Quad9 eller 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="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-qualifier="leveraged-mt">Om du kopplar från nu kommer du inte att kunna säkra din anslutning förrän enheten är online.</target> + <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-qualifier="leveraged-mt">Om du avslutar formuläret och försöker igen senare, kommer informationen du redan angett fortfarande att vara här.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Om du inte har fått ytterligare VPN-tid efter köp</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Om du fortfarande upplever problem kan du maila vår support direkt på **%@**. Vänligen bifoga din app-logg till din e-post.</target> + <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-qualifier="leveraged-mt">Importera</target> + <target state-qualifier="leveraged-tm">Importera</target> <note/> </trans-unit> - <trans-unit id="Import %@ was successful, overrides are now active." xml:space="preserve"> - <source>Import %@ was successful, overrides are now active.</source> - <target state-qualifier="leveraged-mt">Import %@ lyckades, åsidosättningar är nu aktiva.</target> + <trans-unit id="Import file" xml:space="preserve"> + <source>Import file</source> + <target state-qualifier="leveraged-tm">Importera fil</target> <note/> </trans-unit> - <trans-unit id="Import %@ was unsuccessful, please try again." xml:space="preserve"> - <source>Import %@ was unsuccessful, please try again.</source> - <target state-qualifier="leveraged-mt">Importen av %@ misslyckades, försök igen.</target> + <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-qualifier="leveraged-tm">Importera filer eller text med nya IP-adresser för servrarna i Välj platsvy.</target> <note/> </trans-unit> - <trans-unit id="Import file" xml:space="preserve"> - <source>Import file</source> - <target state-qualifier="leveraged-mt">Importera fil</target> + <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 files or text with the new IP addresses for the servers in the Select location view." xml:space="preserve"> - <source>Import files or text with the new IP addresses for the servers in the Select location view.</source> - <target state-qualifier="leveraged-mt">Importera filer eller text med de nya IP-adresserna för servrarna i Välj plats vyn.</target> + <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-qualifier="leveraged-mt">Importen lyckades</target> + <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-qualifier="leveraged-mt">Importera via text</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">I bruk</target> + <target state-qualifier="leveraged-tm">Används</target> <note/> </trans-unit> <trans-unit id="Include all networks" xml:space="preserve"> <source>Include all networks</source> - <target state-qualifier="leveraged-mt">Inkludera alla nätverk</target> + <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-qualifier="leveraged-mt">Internt fel uppstod. Inställningarna återställs till standardinställningar och enheten loggas ut.</target> + <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-qualifier="leveraged-mt">Internt fel.</target> + <target state="needs-translation">Internal error.</target> <note/> </trans-unit> <trans-unit id="Invalid account" xml:space="preserve"> <source>Invalid account</source> - <target state-qualifier="leveraged-mt">Ogiltigt konto</target> + <target state="needs-translation">Invalid account</target> <note/> </trans-unit> <trans-unit id="Invalid device state." xml:space="preserve"> <source>Invalid device state.</source> - <target state-qualifier="leveraged-mt">Ogiltig enhets status.</target> + <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-qualifier="leveraged-mt">Ogiltig inköpsidentifierare</target> + <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-qualifier="leveraged-tm">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 have entered a Mullvad account number instead of a voucher code. Do you want to log in to an existing account? If so, click log out below to log in with the other account number." xml:space="preserve"> - <source>It looks like you have entered a Mullvad account number instead of a voucher code. Do you want to log in to an existing account? -If so, click log out below to log in with the other account number.</source> - <target state-qualifier="leveraged-mt">Det verkar som om du har angett ett Mullva-kontonummer istället för en kupongkod. Vill du logga in på ett befintligt konto? -Om så är fallet, klicka på logga ut nedan för att logga in med det andra kontonumret.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Språk</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">De fyra sista siffrorna i kontonumret är felaktiga</target> + <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-qualifier="leveraged-mt">Senast använda konto</target> + <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-qualifier="leveraged-mt">Läs mer om sekretess</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Mindre än en dag</target> + <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-qualifier="leveraged-mt">Delning av lokalt nätverk</target> + <target state-qualifier="leveraged-tm">Lokal nätverksdelning</target> <note/> </trans-unit> <trans-unit id="Log in" xml:space="preserve"> <source>Log in</source> - <target state-qualifier="leveraged-mt">Logga in</target> + <target state="needs-translation">Log in</target> <note/> </trans-unit> <trans-unit id="Log out" xml:space="preserve"> <source>Log out</source> - <target state-qualifier="leveraged-mt">Logga ut</target> + <target state-qualifier="leveraged-tm">Logga ut</target> <note/> </trans-unit> <trans-unit id="Logged in" xml:space="preserve"> <source>Logged in</source> - <target state-qualifier="leveraged-mt">Inloggad</target> + <target state-qualifier="leveraged-tm">Inloggad</target> <note/> </trans-unit> <trans-unit id="Logging in..." xml:space="preserve"> <source>Logging in...</source> - <target state-qualifier="leveraged-mt">Loggar in...</target> + <target state-qualifier="leveraged-tm">Loggar in...</target> <note/> </trans-unit> <trans-unit id="Logging out..." xml:space="preserve"> <source>Logging out...</source> - <target state-qualifier="leveraged-mt">Loggar ut...</target> + <target state="needs-translation">Logging out...</target> <note/> </trans-unit> <trans-unit id="Login" xml:space="preserve"> <source>Login</source> - <target state-qualifier="leveraged-mt">Inloggning</target> + <target state-qualifier="leveraged-tm">Logga in</target> <note/> </trans-unit> <trans-unit id="Login failed" xml:space="preserve"> <source>Login failed</source> - <target state-qualifier="leveraged-mt">Inloggning misslyckades</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Gör ett köp med StoreKit2</target> + <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-qualifier="leveraged-mt">Malware</target> + <target state-qualifier="leveraged-tm">Skadlig kod</target> <note/> </trans-unit> <trans-unit id="Manage default and setup custom methods to access the Mullvad API." xml:space="preserve"> <source>Manage default and setup custom methods to access the Mullvad API.</source> - <target state-qualifier="leveraged-mt">Hantera standard och konfigurera anpassade metoder för att komma åt Mullvads API.</target> + <target state="needs-translation">Manage default and setup custom methods to access the Mullvad API.</target> <note/> </trans-unit> <trans-unit id="Manage default and setup custom methods to access the Mullvad API. " xml:space="preserve"> <source>Manage default and setup custom methods to access the Mullvad API. </source> - <target state-qualifier="leveraged-mt">Hantera standard och konfigurera anpassade metoder för att komma åt Mullvads API. </target> + <target state="needs-translation">Manage default and setup custom methods to access the Mullvad API. </target> <note/> </trans-unit> <trans-unit id="Manage devices" xml:space="preserve"> <source>Manage devices</source> - <target state-qualifier="leveraged-mt">Hantera enheter</target> + <target state-qualifier="leveraged-tm">Hantera enheter</target> <note/> </trans-unit> <trans-unit id="Method settings" xml:space="preserve"> <source>Method settings</source> - <target state-qualifier="leveraged-mt">Metod inställningar</target> + <target state="needs-translation">Method settings</target> <note/> </trans-unit> <trans-unit id="Mullvad bridges" xml:space="preserve"> <source>Mullvad bridges</source> - <target state-qualifier="leveraged-mt">Mullvad bryggor</target> + <target state="needs-translation">Mullvad bridges</target> <note/> </trans-unit> <trans-unit id="Multihop" xml:space="preserve"> <source>Multihop</source> - <target state-qualifier="leveraged-mt">Multihop</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Multihop används för att aktivera DAITA för din valda plats.</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-qualifier="leveraged-mt">Multihop rutter din trafik i en WireGuard server och ut en annan, vilket gör det svårare att spåra. -Detta resulterar i ökad fördröjning men ökar anonymiteten på nätet.</target> + <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-qualifier="leveraged-mt">Multihop leder din trafik till en WireGuard-server och ut en annan, vilket gör det svårare att spåra. Detta resulterar i ökad fördröjning men ökar anonymiteten online.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Flera valideringsfel uppstod.</target> + <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-qualifier="leveraged-mt">NETWORK ISSUES</target> + <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-qualifier="leveraged-mt">NYA ENHETER SKAPAD</target> + <target state-qualifier="leveraged-tm">NY ENHET HAR SKAPATS</target> <note/> </trans-unit> <trans-unit id="NEW VERSION INSTALLED" xml:space="preserve"> <source>NEW VERSION INSTALLED</source> - <target state-qualifier="leveraged-mt">NY VERSION INSTALLERAD</target> + <target state-qualifier="leveraged-tm">NY VERSION INSTALLERAD</target> <note/> </trans-unit> <trans-unit id="Name" xml:space="preserve"> <source>Name</source> - <target state-qualifier="leveraged-mt">Namn</target> + <target state-qualifier="leveraged-tm">Namn</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-qualifier="leveraged-mt">Namnet får inte vara längre än %i tecken.</target> + <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-qualifier="leveraged-mt">Nätverksfel: %@</target> + <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-qualifier="leveraged-mt">Ny anpassad lista</target> + <target state="needs-translation">New custom list</target> <note/> </trans-unit> <trans-unit id="Next" xml:space="preserve"> <source>Next</source> - <target state-qualifier="leveraged-mt">Nästa</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Inga DAITA-kompatibla servrar matchar dina platsinställningar. Försök att ändra plats.</target> + <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-qualifier="leveraged-mt">Inga matchande reläer hittade, kontrollera dina filterinställningar.</target> + <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-qualifier="leveraged-mt">Inga matchande servrar</target> + <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-qualifier="leveraged-mt">Inget nätverk</target> + <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-qualifier="leveraged-mt">Inga åsidosättningar importerade</target> + <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-qualifier="leveraged-mt">Inga servrar matchar ditt platsfilter. Prova att ändra filterinställningar.</target> + <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-qualifier="leveraged-mt">Inga servrar matchar dina inställningar, prova att ändra server eller andra inställningar.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">SLUT AV TID</target> + <target state-qualifier="leveraged-tm">INGEN TID KVAR</target> <note/> </trans-unit> <trans-unit id="Obfuscation" xml:space="preserve"> <source>Obfuscation</source> - <target state-qualifier="leveraged-mt">Obfusk</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Obduktion döljer WireGuard trafik inuti ett annat protokoll. Den kan användas för att kringgå censur och andra typer av filtrering, där en vanlig WireGuard-anslutning skulle blockeras.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Obscured</target> + <target state="needs-translation">Obscured</target> <note/> </trans-unit> <trans-unit id="Off" xml:space="preserve"> <source>Off</source> - <target state-qualifier="leveraged-mt">Av</target> + <target state-qualifier="leveraged-tm">Av</target> <note/> </trans-unit> <trans-unit id="On" xml:space="preserve"> <source>On</source> - <target state-qualifier="leveraged-mt">På</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">På vissa nätverk, där olika typer av censur används, blockeras ibland våra serverIP-adresser.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">På vissa nätverk, där olika typer av censur används, kanske API-servrarna inte är direkt nåbara.</target> + <target state-qualifier="leveraged-tm">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 DAITA settings" xml:space="preserve"> - <source>Open DAITA settings</source> - <target state-qualifier="leveraged-mt">Öppna DAITA-inställningar</target> + <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-qualifier="leveraged-mt">Valfri</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Slut på tid</target> + <target state-qualifier="leveraged-tm">Ingen tid kvar</target> <note/> </trans-unit> <trans-unit id="Overrides active" xml:space="preserve"> <source>Overrides active</source> - <target state-qualifier="leveraged-mt">Ersätter aktiva</target> + <target state-qualifier="leveraged-tm">Åsidosättningar aktiva</target> <note/> </trans-unit> <trans-unit id="Owned" xml:space="preserve"> <source>Owned</source> - <target state-qualifier="leveraged-mt">Ägd</target> + <target state-qualifier="leveraged-tm">Ägd</target> <note/> </trans-unit> <trans-unit id="Ownership" xml:space="preserve"> <source>Ownership</source> - <target state-qualifier="leveraged-mt">Ägarskap</target> + <target state-qualifier="leveraged-tm">Ägarskap</target> <note/> </trans-unit> <trans-unit id="Paid until" xml:space="preserve"> <source>Paid until</source> - <target state-qualifier="leveraged-mt">Betalad till</target> + <target state-qualifier="leveraged-tm">Betalat till</target> <note/> </trans-unit> <trans-unit id="Password" xml:space="preserve"> <source>Password</source> - <target state-qualifier="leveraged-mt">Lösenord</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Utför ett anslutningstest till en Mullvads API-server via denna åtkomstmetod.</target> + <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-qualifier="leveraged-mt">Ange en giltig IPv4 eller IPv6-adress.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Ange en giltig port.</target> + <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-qualifier="leveraged-tm">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 "Restore purchases" button." xml:space="preserve"> <source>Please retry by using the "Restore purchases" button.</source> - <target state-qualifier="leveraged-mt">Försök igen genom att använda knappen "Återställ köp".</target> + <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-qualifier="leveraged-mt">Port</target> + <target state="needs-translation">Port</target> <note/> </trans-unit> <trans-unit id="Port: %@" xml:space="preserve"> <source>Port: %@</source> - <target state-qualifier="leveraged-mt">Port: %@</target> + <target state="needs-translation">Port: %@</target> <note/> </trans-unit> <trans-unit id="Previous" xml:space="preserve"> <source>Previous</source> - <target state-qualifier="leveraged-mt">Föregående</target> + <target state="needs-translation">Previous</target> <note/> </trans-unit> <trans-unit id="Providers" xml:space="preserve"> <source>Providers</source> - <target state-qualifier="leveraged-mt">Leverantörer</target> + <target state-qualifier="leveraged-tm">Leverantörer</target> <note/> </trans-unit> <trans-unit id="Providers: %d" xml:space="preserve"> <source>Providers: %d</source> - <target state-qualifier="leveraged-mt">Leverantörer: %d</target> + <target state="needs-translation">Providers: %d</target> <note/> </trans-unit> <trans-unit id="QUIC" xml:space="preserve"> <source>QUIC</source> - <target state-qualifier="leveraged-mt">FRÅGOR</target> + <target state="needs-translation">QUIC</target> <note/> </trans-unit> <trans-unit id="Quantum resistance" xml:space="preserve"> <source>Quantum resistance</source> - <target state-qualifier="leveraged-mt">Kvantmotstånd</target> + <target state-qualifier="leveraged-tm">Kvantresistens</target> <note/> </trans-unit> <trans-unit id="Quantum secure connection" xml:space="preserve"> <source>Quantum secure connection</source> - <target state-qualifier="leveraged-mt">Kvantsäker anslutning</target> + <target state="needs-translation">Quantum secure connection</target> <note/> </trans-unit> <trans-unit id="Quantum secure connection. Connected to %@, %@" xml:space="preserve"> <source>Quantum secure connection. Connected to %1$@, %2$@</source> - <target state-qualifier="leveraged-mt">Kvantsäker anslutning. Ansluten till %1$@, %2$@</target> + <target state="needs-translation">Quantum secure connection. Connected to %1$@, %2$@</target> <note/> </trans-unit> <trans-unit id="Quantum-resistant tunnel" xml:space="preserve"> <source>Quantum-resistant tunnel</source> - <target state-qualifier="leveraged-mt">Kvantbeständig tunnel</target> + <target state-qualifier="leveraged-tm">Kvantresistent tunnel</target> <note/> </trans-unit> <trans-unit id="Reconnecting" xml:space="preserve"> <source>Reconnecting</source> - <target state-qualifier="leveraged-mt">Återansluter</target> + <target state-qualifier="leveraged-tm">Återansluter</target> <note/> </trans-unit> <trans-unit id="Reconnecting to %@, %@" xml:space="preserve"> <source>Reconnecting to %1$@, %2$@</source> - <target state-qualifier="leveraged-mt">Återansluter till %1$@, %2$@</target> + <target state="needs-translation">Reconnecting to %1$@, %2$@</target> <note/> </trans-unit> <trans-unit id="Redeem" xml:space="preserve"> <source>Redeem</source> - <target state-qualifier="leveraged-mt">Redeem</target> + <target state-qualifier="leveraged-tm">Lös in</target> <note/> </trans-unit> <trans-unit id="Redeem voucher" xml:space="preserve"> <source>Redeem voucher</source> - <target state-qualifier="leveraged-mt">Redeem voucher</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Återbetala senaste köp med StoreKit2</target> + <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-qualifier="leveraged-mt">Återbetalning slutförd</target> + <target state="needs-translation">Refund successful</target> + <note/> + </trans-unit> + <trans-unit id="Remove" xml:space="preserve"> + <source>Remove</source> + <target state-qualifier="leveraged-tm">Ta bort</target> + <note/> + </trans-unit> + <trans-unit id="Remove %@?" xml:space="preserve"> + <source>Remove %@?</source> + <target state-qualifier="leveraged-tm">Ta bort %@?</target> <note/> </trans-unit> <trans-unit id="Remove last used account" xml:space="preserve"> <source>Remove last used account</source> - <target state-qualifier="leveraged-mt">Ta bort senast använda konto</target> + <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. 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-qualifier="leveraged-mt">Hyrd</target> + <target state-qualifier="leveraged-tm">Hyrd</target> <note/> </trans-unit> <trans-unit id="Report a problem" xml:space="preserve"> <source>Report a problem</source> - <target state-qualifier="leveraged-mt">Rapportera ett problem</target> + <target state-qualifier="leveraged-tm">Rapportera ett problem</target> <note/> </trans-unit> <trans-unit id="Required" xml:space="preserve"> <source>Required</source> - <target state-qualifier="leveraged-mt">Krävs</target> + <target state-qualifier="leveraged-tm">Obligatoriskt</target> <note/> </trans-unit> <trans-unit id="Restore purchases" xml:space="preserve"> <source>Restore purchases</source> - <target state-qualifier="leveraged-mt">Återställ köp</target> + <target state="needs-translation">Restore purchases</target> <note/> </trans-unit> <trans-unit id="Save" xml:space="preserve"> <source>Save</source> - <target state-qualifier="leveraged-mt">Spara</target> + <target state-qualifier="leveraged-tm">Spara</target> <note/> </trans-unit> <trans-unit id="Save anyway" xml:space="preserve"> <source>Save anyway</source> - <target state-qualifier="leveraged-mt">Spara ändå</target> + <target state="needs-translation">Save anyway</target> <note/> </trans-unit> <trans-unit id="Saving changes..." xml:space="preserve"> <source>Saving changes...</source> - <target state-qualifier="leveraged-mt">Sparar ändringar...</target> + <target state="needs-translation">Saving changes...</target> <note/> </trans-unit> <trans-unit id="Search for..." xml:space="preserve"> <source>Search for...</source> - <target state-qualifier="leveraged-mt">Sök efter...</target> + <target state-qualifier="leveraged-tm">Sök efter …</target> <note/> </trans-unit> <trans-unit id="Secure connection. Connected to %@, %@" xml:space="preserve"> <source>Secure connection. Connected to %1$@, %2$@</source> - <target state-qualifier="leveraged-mt">Säker anslutning. Ansluten till %1$@, %2$@</target> + <target state="needs-translation">Secure connection. Connected to %1$@, %2$@</target> <note/> </trans-unit> <trans-unit id="Select location" xml:space="preserve"> <source>Select location</source> - <target state-qualifier="leveraged-mt">Välj plats</target> + <target state-qualifier="leveraged-tm">Välj plats</target> <note/> </trans-unit> <trans-unit id="Selected" xml:space="preserve"> <source>Selected</source> - <target state-qualifier="leveraged-mt">Vald</target> + <target state="needs-translation">Selected</target> <note/> </trans-unit> <trans-unit id="Send" xml:space="preserve"> <source>Send</source> - <target state-qualifier="leveraged-mt">Skicka</target> + <target state-qualifier="leveraged-tm">Skicka</target> <note/> </trans-unit> <trans-unit id="Send anyway" xml:space="preserve"> <source>Send anyway</source> - <target state-qualifier="leveraged-mt">Skicka ändå</target> + <target state-qualifier="leveraged-tm">Skicka ändå</target> <note/> </trans-unit> <trans-unit id="Sending..." xml:space="preserve"> <source>Sending...</source> - <target state-qualifier="leveraged-mt">Skickar...</target> + <target state-qualifier="leveraged-tm">Skicka...</target> <note/> </trans-unit> <trans-unit id="Sent" xml:space="preserve"> <source>Sent</source> - <target state-qualifier="leveraged-mt">Skickat</target> + <target state-qualifier="leveraged-tm">Skickat</target> <note/> </trans-unit> <trans-unit id="Server" xml:space="preserve"> <source>Server</source> - <target state-qualifier="leveraged-mt">Server</target> + <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-qualifier="leveraged-mt">Server IP åsidosättning</target> + <target state="needs-translation">Server IP Override</target> <note/> </trans-unit> <trans-unit id="Server IP override" xml:space="preserve"> <source>Server IP override</source> - <target state-qualifier="leveraged-mt">Server IP åsidosätter</target> + <target state-qualifier="leveraged-tm">Åsidosättning av serverns IP-adress</target> <note/> </trans-unit> <trans-unit id="Server details" xml:space="preserve"> <source>Server details</source> - <target state-qualifier="leveraged-mt">Serverdetaljer</target> - <note/> - </trans-unit> - <trans-unit id="Setting: DAITA" xml:space="preserve"> - <source>Setting: DAITA</source> - <target state-qualifier="leveraged-mt">Inställning: DAITA</target> + <target state-qualifier="leveraged-tm">Serverinformation</target> <note/> </trans-unit> - <trans-unit id="Setting: Obfuscation" xml:space="preserve"> - <source>Setting: Obfuscation</source> - <target state-qualifier="leveraged-mt">Inställning: Obfusk</target> + <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-qualifier="leveraged-mt">Inställningar</target> + <target state-qualifier="leveraged-tm">Inställningar</target> <note/> </trans-unit> <trans-unit id="Settings migration error" xml:space="preserve"> <source>Settings migration error</source> - <target state-qualifier="leveraged-mt">Migreringsfel för inställningar</target> + <target state="needs-translation">Settings migration error</target> <note/> </trans-unit> <trans-unit id="Shadowsocks" xml:space="preserve"> <source>Shadowsocks</source> - <target state-qualifier="leveraged-mt">Skuggstrumpor</target> + <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-qualifier="leveraged-mt">Visa kontonummer</target> + <target state-qualifier="leveraged-tm">Visa kontonummer</target> <note/> </trans-unit> <trans-unit id="Social media" xml:space="preserve"> <source>Social media</source> - <target state-qualifier="leveraged-mt">Sociala medier</target> + <target state-qualifier="leveraged-tm">Sociala medier</target> <note/> </trans-unit> <trans-unit id="Socks5" xml:space="preserve"> <source>Socks5</source> - <target state-qualifier="leveraged-mt">Socks5</target> + <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-qualifier="leveraged-mt">Börja använda appen</target> + <target state-qualifier="leveraged-tm">Börja använda appen</target> <note/> </trans-unit> <trans-unit id="Super!" xml:space="preserve"> <source>Super!</source> - <target state-qualifier="leveraged-mt">Super!</target> + <target state="needs-translation">Super!</target> <note/> </trans-unit> <trans-unit id="Switch location" xml:space="preserve"> <source>Switch location</source> - <target state-qualifier="leveraged-mt">Byt plats</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">TUNNEL FEL</target> + <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-qualifier="leveraged-mt">Tryck på **Redigera** för att lägga till minst en DNS-server.</target> + <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-qualifier="leveraged-mt">Testa metod</target> + <target state-qualifier="leveraged-tm">Testmetod</target> <note/> </trans-unit> <trans-unit id="Testing..." xml:space="preserve"> <source>Testing...</source> - <target state-qualifier="leveraged-mt">Testar...</target> + <target state-qualifier="leveraged-tm">Testar ...</target> <note/> </trans-unit> <trans-unit id="Thanks for your purchase" xml:space="preserve"> <source>Thanks for your purchase</source> - <target state-qualifier="leveraged-mt">Tack för ditt köp</target> + <target state="needs-translation">Thanks for your purchase</target> <note/> </trans-unit> <trans-unit id="Thanks!" xml:space="preserve"> <source>Thanks!</source> - <target state-qualifier="leveraged-mt">Tack!</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Appen kommunicerar direkt med en Mullvads API-server.</target> + <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-qualifier="leveraged-mt">Appen kommunicerar med en Mullvads API-server via en Mullvads brygga.</target> + <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-qualifier="leveraged-mt">Appen kommunicerar med en Mullvads API-server via en proxyadress.</target> + <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-qualifier="leveraged-mt">Appen behöver kommunicera med en Mullvads API-server för att logga in dig, hämta serverlistor och andra kritiska operationer.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Appen testar metoden innan du sparar.</target> + <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. The custom port can be any value inside the valid ranges: %@" xml:space="preserve"> - <source>The automatic setting will randomly choose from the valid port ranges shown below. -The custom port can be any value inside the valid ranges: -%@</source> - <target state-qualifier="leveraged-mt">Den automatiska inställningen kommer slumpmässigt att välja från de giltiga portintervall som visas nedan. -Den anpassade porten kan vara valfritt värde inom de giltiga intervallen: -%@</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Inmatnings- och utgångsservrarna kan inte vara desamma. Försök att ändra en till en ny server eller plats.</target> + <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 multihop is currently overridden by DAITA. To select an entry server, please first enable “Direct only” or disable “DAITA” in the settings." xml:space="preserve"> - <source>The entry server for multihop is currently overridden by DAITA. To select an entry server, please first enable “Direct only” or disable “DAITA” in the settings.</source> - <target state-qualifier="leveraged-mt">Inmatningsservern för multihop är för närvarande åsidosatt av DAITA. För att välja en postserver, vänligen först aktivera “Direct only” eller inaktivera “DAITA” i inställningarna.</target> + <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-qualifier="leveraged-mt">Betalningsbegäran avbröts.</target> + <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-qualifier="leveraged-mt">Den valda WireGuard-porten stöds inte, vänligen ändra den under **VPN-inställningar**.</target> + <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-qualifier="leveraged-mt">Versionen av inställningar som lagras på enheten känns inte igen.Inställningar kommer att återställas till standardvärden och enheten kommer att loggas ut.</target> + <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-qualifier="leveraged-mt">Detta kan vara användbart om API:et är censurerat men Mullvads bryggservrar är det inte.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Detta kan vara användbart när du inte påverkas av censur.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Denna enhet är inte tillåten att göra betalningen.</target> + <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. Attention: toggling “Local network sharing” requires restarting the VPN connection." xml:space="preserve"> - <source>This feature allows access to other devices on the local network, such as for sharing, printing, streaming, etc. -Attention: toggling “Local network sharing” requires restarting the VPN connection.</source> - <target state-qualifier="leveraged-mt">Den här funktionen ger åtkomst till andra enheter på det lokala nätverket, till exempel för att dela, skriva ut, strömma etc. -Observera: växla mellan “Lokalt nätverk delning” kräver omstart av VPN-anslutningen.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Denna funktion gör att du kan kringgå censur genom att lägga till anpassade sätt att komma åt API:et via proxies och liknande metoder.</target> + <target state-qualifier="leveraged-tm">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. 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>This feature makes the WireGuard tunnel resistant to potential attacks from quantum computers. -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-qualifier="leveraged-mt">Denna funktion gör WireGuard-tunneln resistent mot potentiella attacker från kvantdatorer. -Det gör detta genom att utföra ett extra nyckelutbyte med hjälp av en kvantsäker algoritm och blanda resultatet i WireGuards vanliga kryptering. -Detta extra steg använder cirka 500 kiB trafik varje gång en ny tunnel etableras.</target> + <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-qualifier="leveraged-tm">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. You can have up to 5 devices logged in on one Mullvad account. 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>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. -You can have up to 5 devices logged in on one Mullvad account. -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-qualifier="leveraged-mt">Detta är namnet som tilldelats enheten. Varje enhet som är inloggad på ett Mullva-konto får ett unikt namn som hjälper dig att identifiera det när du hanterar dina enheter i appen eller på webbplatsen. -Du kan ha upp till 5 enheter inloggade på ett Mullva-konto. -Om du loggar ut tas enheten och enhetsnamnet bort. När du loggar in igen får enheten ett nytt namn.</target> + <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-qualifier="leveraged-tm">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 "Delete account" 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-qualifier="leveraged-mt">Detta loggar ut alla enheter som använder detta konto och all VPN-åtkomst nekas även om det finns tid kvar på kontot. Ange de 4 sista siffrorna i kontonumret och tryck på "Ta bort konto" om du verkligen vill ta bort kontot:</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Denna rabattkod har redan använts.</target> + <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-qualifier="leveraged-mt">Återstående tid: %@</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">För att hjälpa dig bättre, skriv gärna på engelska eller svenska och inkludera vilket land du ska ansluta från.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">För att kringgå detta kan du importera en fil eller en text, som tillhandahålls av vårt supportteam, med nya IP-adresser som åsidosätter standardadresserna för servrarna i Välj platsvy.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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 "..." " xml:space="preserve"> <source>To create a custom list, tap on "..." </source> - <target state-qualifier="leveraged-mt">För att skapa en anpassad lista, tryck på "..." </target> + <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-qualifier="leveraged-mt">För att aktivera denna inställning, lägg till minst en server.</target> + <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-qualifier="leveraged-mt">För att hjälpa dig mer effektivt, kommer appens loggfil att bifogas till detta meddelande. Dina uppgifter förblir säkra och privata, eftersom de är anonymiserade innan de skickas över en krypterad kanal.</target> + <target state-qualifier="leveraged-tm">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. Either buy credit on our website or redeem a voucher." xml:space="preserve"> - <source>To start using the app, you first need to add time to your account. Either buy credit on our website or redeem a voucher.</source> - <target state-qualifier="leveraged-mt">För att börja använda appen måste du först lägga till tid på ditt konto. Antingen köpa kredit på vår webbplats eller lösa in en kupong.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">För många enheter</target> + <target state-qualifier="leveraged-tm">För många enheter</target> <note/> </trans-unit> <trans-unit id="Too many devices registered with account" xml:space="preserve"> <source>Too many devices registered with account</source> - <target state-qualifier="leveraged-mt">För många enheter registrerade med kontot</target> + <target state="needs-translation">Too many devices registered with account</target> <note/> </trans-unit> <trans-unit id="Trackers" xml:space="preserve"> <source>Trackers</source> - <target state-qualifier="leveraged-mt">Spårare</target> + <target state-qualifier="leveraged-tm">Spårare</target> <note/> </trans-unit> <trans-unit id="Try again" xml:space="preserve"> <source>Try again</source> - <target state-qualifier="leveraged-mt">Försök igen</target> + <target state-qualifier="leveraged-tm">Försök igen</target> <note/> </trans-unit> <trans-unit id="Tunnel is unset." xml:space="preserve"> <source>Tunnel is unset.</source> - <target state-qualifier="leveraged-mt">Tunneln är upplöst.</target> + <target state="needs-translation">Tunnel is unset.</target> <note/> </trans-unit> <trans-unit id="Type" xml:space="preserve"> <source>Type</source> - <target state-qualifier="leveraged-mt">Typ</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">UDP-over-TCP</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Det går inte att autentisera kontot. Logga ut och logga in igen.</target> + <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-qualifier="leveraged-mt">Det gick inte att starta tunnelanslutningen efter uppdatering. Vänligen koppla bort och återansluta.</target> + <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-qualifier="leveraged-mt">Det gick inte att starta tunnelanslutningen. Skicka en felrapport.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Oväntat serversvar: %1$@ (HTTP-status: %2$d)</target> + <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-qualifier="leveraged-mt">Oväntat serversvar: %d</target> + <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-qualifier="leveraged-mt">Okänt fel.</target> + <target state-qualifier="leveraged-tm">Okänt fel.</target> <note/> </trans-unit> <trans-unit id="Unsecured connection" xml:space="preserve"> <source>Unsecured connection</source> - <target state-qualifier="leveraged-mt">Osäkrad anslutning</target> + <target state="needs-translation">Unsecured connection</target> <note/> </trans-unit> <trans-unit id="Use custom DNS server" xml:space="preserve"> <source>Use custom DNS server</source> - <target state-qualifier="leveraged-mt">Använd anpassad DNS-server</target> + <target state-qualifier="leveraged-tm">Använd anpassad DNS-server</target> <note/> </trans-unit> <trans-unit id="Username" xml:space="preserve"> <source>Username</source> - <target state-qualifier="leveraged-mt">Användarnamn</target> + <target state-qualifier="leveraged-tm">Användarnamn</target> <note/> </trans-unit> <trans-unit id="VPN settings" xml:space="preserve"> <source>VPN settings</source> - <target state-qualifier="leveraged-mt">VPN-inställningar</target> + <target state-qualifier="leveraged-tm">VPN-inställningar</target> <note/> </trans-unit> - <trans-unit id="Valid range: 1 - 65535" xml:space="preserve"> - <source>Valid range: 1 - 65535</source> - <target state-qualifier="leveraged-mt">Valid range: 1 - 65535</target> + <trans-unit id="Valid range: %d - %d" xml:space="preserve"> + <source>Valid range: %1$d - %2$d</source> + <target state-qualifier="leveraged-tm">Giltigt intervall: %1$d–%2$d</target> <note/> </trans-unit> <trans-unit id="Verifying voucher..." xml:space="preserve"> <source>Verifying voucher...</source> - <target state-qualifier="leveraged-mt">Verifierar kupong...</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Visa app-loggar</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Kupongkoden är ogiltig.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Kupongen har lösts in.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Varning: malware blockeraren är inte en anti-virus och bör inte behandlas som sådan, detta är bara ett extra lager av skydd.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Vi har några problem, försök igen senare</target> + <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-qualifier="leveraged-mt">Vi kommer att undersöka detta.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Välkommen, denna enhet kallas nu **%@**. För mer information se knappen Info i Konto.</target> + <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-qualifier="leveraged-mt">Vad är nytt</target> + <trans-unit id="What’s new" xml:space="preserve"> + <source>What’s new</source> + <target state-qualifier="leveraged-tm">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. This might cause issues on certain websites, services, and apps. Attention: this setting cannot be used in combination with **Use custom DNS server**." 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. -This might cause issues on certain websites, services, and apps. -Attention: this setting cannot be used in combination with **Use custom DNS server**.</source> - <target state-qualifier="leveraged-mt">När den här funktionen är aktiverad stoppar den enheten från att kontakta vissa domäner eller webbplatser som är kända för att distribuera annonser, skadlig kod, trackers och mer. -Detta kan orsaka problem på vissa webbplatser, tjänster och appar. -Observera: den här inställningen kan inte användas i kombination med **Använd anpassad DNS-server**.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Vid användning av DAITA krävs en leverantör med DAITA-aktiverade servrar.</target> + <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-qualifier="leveraged-mt">Vilken TCP-port UDP-over-TCP obfuscation protokollet bör ansluta till på VPN-servern.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Trådvärnsförfalskning</target> + <trans-unit id="WireGuard obfuscation" xml:space="preserve"> + <source>WireGuard obfuscation</source> + <target state-qualifier="leveraged-tm">WireGuard-obfuskering</target> <note/> </trans-unit> - <trans-unit id="WireGuard ports" xml:space="preserve"> - <source>WireGuard ports</source> - <target state-qualifier="leveraged-mt">WireGuard portar</target> + <trans-unit id="WireGuard port" xml:space="preserve"> + <source>WireGuard port</source> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Med "Direkt" metoden kommunicerar appen med en Mullvads API-server direkt utan några mellanliggande proxier.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Med metoden "Krypterad DNS-proxy" kommer appen att kommunicera med vårt Mullvad API genom en proxyadress. -Det gör detta genom att hämta en adress från en DNS över HTTPS (DoH) server och sedan använda det för att nå våra API-servrar.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Med "Mullvad bridges"-metoden kommunicerar appen med en Mullvads API-server via en Mullvads bryggserver. Det gör detta genom att skicka trafiken fördunklad av Shadowsocks.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Ja, fortsätt</target> + <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-qualifier="leveraged-tm">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-translation">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.</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-qualifier="leveraged-mt">Ni är på väg att skicka problemrapporten utan ett sätt för oss att återkomma till er. Om du vill ha ett svar på din rapport måste du ange en e-postadress.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Du är inloggad med ett ogiltigt kontonummer. Logga ut och prova ett annat.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Du kan lägga till mer tid via kontovyn eller webbplatsen för att fortsätta använda VPN.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-tm">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 "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." 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-qualifier="leveraged-mt">Du kan använda funktionen "återställ köp" för att kontrollera eventuella in-app betalningar som görs via Apple-tjänster. Om det finns en betalning som inte har krediterats kommer den att lägga till tid till det inloggade Mullva-kontot.</target> + <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-qualifier="leveraged-mt">Du har %@ kvar på detta konto.</target> + <target state="needs-translation">You have %@ left on this account.</target> <note/> </trans-unit> - <trans-unit id="You have no more VPN time left on this account. Either buy credit on our website or make an in-app purchase via the **Add time** button below." xml:space="preserve"> - <source>You have no more VPN time left on this account. Either buy credit on our website or make an in-app purchase via the **Add time** button below.</source> - <target state-qualifier="leveraged-mt">Du har ingen mer VPN-tid kvar på detta konto. Antingen köpa kredit på vår webbplats eller göra ett in-app köp via **Lägg till tid** knappen nedan.</target> + <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. 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." 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. To add more, you will need to disconnect and access the Internet with an unsecure connection." xml:space="preserve"> - <source>You have no more VPN time left on this account. To add more, you will need to disconnect and access the Internet with an unsecure connection.</source> - <target state-qualifier="leveraged-mt">Du har ingen mer VPN-tid kvar på detta konto. För att lägga till mer, måste du koppla bort och komma åt Internet med en osäker anslutning.</target> + <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-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Du har en dag kvar på detta konto. Lägg till mer tid för att fortsätta använda VPN.</target> + <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-qualifier="leveraged-mt">Du har tagit bort den här enheten. För att ansluta igen måste du logga in igen.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Du har osparade ändringar.</target> + <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-qualifier="leveraged-mt">Din enhet är offline. Tunneln ansluts automatiskt när enheten är online.</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Din enhet är offline. Försök ansluta igen när enheten har tillgång till Internet.</target> + <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-qualifier="leveraged-mt">Din e-postadress (valfritt)</target> + <target state-qualifier="leveraged-tm">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-qualifier="leveraged-mt">Dina tidigare köp har redan lagts till i detta konto.</target> + <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-qualifier="leveraged-mt">Ditt köp har återbetalats.</target> + <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-qualifier="leveraged-mt">Ni är alla klara!</target> + <target state-qualifier="leveraged-tm">Du är klar!!</target> + <note/> + </trans-unit> + <trans-unit id="file" xml:space="preserve"> + <source>file</source> + <target state-qualifier="leveraged-tm">fil</target> <note/> </trans-unit> <trans-unit id="method" xml:space="preserve"> <source>method</source> - <target state-qualifier="leveraged-mt">metod</target> + <target state="needs-translation">method</target> + <note/> + </trans-unit> + <trans-unit id="multihop" xml:space="preserve"> + <source>multihop</source> + <target state-qualifier="leveraged-tm">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. To prevent this, manually enable Airplane Mode and turn off Wi-Fi before continuing. 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-qualifier="leveraged-mt">“%@ Lokalt nätverksdelning” kräver att VPN-anslutningen startas om, vilket kopplar bort dig och kortfattat exponerar din trafik. -För att förhindra detta, aktivera flygplansläge manuellt och stäng av Wi-Fi innan du fortsätter. -Vill du fortsätta att aktivera “Lokalt nätverk delning”?</target> + <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/MullvadMockData-InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext"> + <file original="Assets/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> @@ -1840,7 +2085,7 @@ Vill du fortsätta att aktivera “Lokalt nätverk delning”?</target> </trans-unit> </body> </file> - <file original="Assets/MullvadRustRuntime-InfoPlist.xcstrings" source-language="en" target-language="sv" datatype="plaintext"> + <file original="Assets/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> @@ -1852,7 +2097,7 @@ Vill du fortsätta att aktivera “Lokalt nätverk delning”?</target> </trans-unit> </body> </file> - <file original="en.lproj/MullvadLogging-InfoPlist.strings" source-language="en" target-language="sv" datatype="plaintext"> + <file original="Assets/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> @@ -1864,7 +2109,7 @@ Vill du fortsätta att aktivera “Lokalt nätverk delning”?</target> </trans-unit> </body> </file> - <file original="en.lproj/MullvadSettings-InfoPlist.strings" source-language="en" target-language="sv" datatype="plaintext"> + <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> @@ -1876,7 +2121,7 @@ Vill du fortsätta att aktivera “Lokalt nätverk delning”?</target> </trans-unit> </body> </file> - <file original="en.lproj/MullvadTypes-InfoPlist.strings" source-language="en" target-language="sv" datatype="plaintext"> + <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> @@ -1888,7 +2133,7 @@ Vill du fortsätta att aktivera “Lokalt nätverk delning”?</target> </trans-unit> </body> </file> - <file original="en.lproj/Operations-InfoPlist.strings" source-language="en" target-language="sv" datatype="plaintext"> + <file original="Assets/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> @@ -1900,7 +2145,7 @@ Vill du fortsätta att aktivera “Lokalt nätverk delning”?</target> </trans-unit> </body> </file> - <file original="en.lproj/PacketTunnelCore-InfoPlist.strings" source-language="en" target-language="sv" datatype="plaintext"> + <file original="Assets/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> @@ -1912,7 +2157,7 @@ Vill du fortsätta att aktivera “Lokalt nätverk delning”?</target> </trans-unit> </body> </file> - <file original="en.lproj/Routing-InfoPlist.strings" source-language="en" target-language="sv" datatype="plaintext"> + <file original="Assets/Resources/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> @@ -1924,7 +2169,7 @@ Vill du fortsätta att aktivera “Lokalt nätverk delning”?</target> </trans-unit> </body> </file> - <file original="MullvadREST/en.lproj/InfoPlist.strings" source-language="en" target-language="sv" datatype="plaintext"> + <file original="Assets/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> @@ -1936,23 +2181,16 @@ Vill du fortsätta att aktivera “Lokalt nätverk delning”?</target> </trans-unit> </body> </file> - <file original="MullvadVPN/Supporting Files/en.lproj/InfoPlist.strings" source-language="en" target-language="sv" datatype="plaintext"> + <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-qualifier="leveraged-tm">Appen behöver detta för att ansluta och testa en ny metod.</target> + <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="PacketTunnel/en.lproj/InfoPlist.strings" 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> </xliff> diff --git a/ios/translation/scripts/localizations.sh b/ios/translation/scripts/localizations.sh index 2129e3aa5a..76bb1eef2f 100755 --- a/ios/translation/scripts/localizations.sh +++ b/ios/translation/scripts/localizations.sh @@ -132,7 +132,7 @@ import_localizations() { [ -e "$xliff_file" ] || continue # Remove unwanted attributes from the XLIFF file - sed -i '' -E 's/ state="needs-review-translation"//g' "$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) |
