From 7854b22ace10fc4b2eca2c2a6463e8887ae8f5b1 Mon Sep 17 00:00:00 2001 From: Pete Smith <5278441+aataraxiaa@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:55:31 +0000 Subject: [PATCH 01/10] Privacy Pro Free Trials - Models and API (#3641) Task/Issue URL: https://app.asana.com/0/1208114992212396/1208796999534221/f Tech Design URL: https://app.asana.com/0/481882893211075/1208773437150501/f **Description**: Includes the following changes: * Bumps BSK which includes changes [here]. (https://github.com/duckduckgo/BrowserServicesKit/pull/1120) * Also forces casts `SubscriptionProduct` type to `Product` type, but only in debug menu code --- DuckDuckGo.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/swiftpm/Package.resolved | 4 ++-- LocalPackages/DataBrokerProtection/Package.swift | 2 +- LocalPackages/FeatureFlags/Package.swift | 2 +- LocalPackages/NetworkProtectionMac/Package.swift | 2 +- LocalPackages/NewTabPage/Package.swift | 2 +- LocalPackages/SubscriptionUI/Package.swift | 2 +- .../DebugMenu/DebugPurchaseViewController.swift | 6 +++++- LocalPackages/WebKitExtensions/Package.swift | 2 +- 9 files changed, 14 insertions(+), 10 deletions(-) diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 03ac824c54..12d3fa1c9b 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -15237,7 +15237,7 @@ repositoryURL = "https://github.com/duckduckgo/BrowserServicesKit"; requirement = { kind = exactVersion; - version = 221.0.1; + version = 221.1.0; }; }; 9FF521422BAA8FF300B9819B /* XCRemoteSwiftPackageReference "lottie-spm" */ = { diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index a1d9a17e0b..c6ef277727 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -32,8 +32,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/duckduckgo/BrowserServicesKit", "state" : { - "revision" : "b7f7ba99f7c77b576679eee426ddd80320dc74d8", - "version" : "221.0.1" + "revision" : "e8654e1a51bd20fa8fa234a4155a9aec37411ed1", + "version" : "221.1.0" } }, { diff --git a/LocalPackages/DataBrokerProtection/Package.swift b/LocalPackages/DataBrokerProtection/Package.swift index 1757ab328e..7d8adea3d8 100644 --- a/LocalPackages/DataBrokerProtection/Package.swift +++ b/LocalPackages/DataBrokerProtection/Package.swift @@ -29,7 +29,7 @@ let package = Package( targets: ["DataBrokerProtection"]) ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.0.1"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.1.0"), .package(path: "../SwiftUIExtensions"), .package(path: "../AppKitExtensions"), .package(path: "../XPCHelper"), diff --git a/LocalPackages/FeatureFlags/Package.swift b/LocalPackages/FeatureFlags/Package.swift index 026c39705d..000bb3497b 100644 --- a/LocalPackages/FeatureFlags/Package.swift +++ b/LocalPackages/FeatureFlags/Package.swift @@ -32,7 +32,7 @@ let package = Package( targets: ["FeatureFlags"]), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.0.1"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.1.0"), ], targets: [ // Targets are the basic building blocks of a package, defining a module or a test suite. diff --git a/LocalPackages/NetworkProtectionMac/Package.swift b/LocalPackages/NetworkProtectionMac/Package.swift index 7584cd7af8..67e3ae8726 100644 --- a/LocalPackages/NetworkProtectionMac/Package.swift +++ b/LocalPackages/NetworkProtectionMac/Package.swift @@ -32,7 +32,7 @@ let package = Package( .library(name: "VPNAppLauncher", targets: ["VPNAppLauncher"]), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.0.1"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.1.0"), .package(url: "https://github.com/airbnb/lottie-spm", exact: "4.4.3"), .package(path: "../AppLauncher"), .package(path: "../UDSHelper"), diff --git a/LocalPackages/NewTabPage/Package.swift b/LocalPackages/NewTabPage/Package.swift index eb6c426e96..9a0ffd2954 100644 --- a/LocalPackages/NewTabPage/Package.swift +++ b/LocalPackages/NewTabPage/Package.swift @@ -32,7 +32,7 @@ let package = Package( targets: ["NewTabPage"]), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.0.1"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.1.0"), .package(path: "../WebKitExtensions"), .package(path: "../Utilities"), ], diff --git a/LocalPackages/SubscriptionUI/Package.swift b/LocalPackages/SubscriptionUI/Package.swift index dcb31cdc13..b2ca03fa7b 100644 --- a/LocalPackages/SubscriptionUI/Package.swift +++ b/LocalPackages/SubscriptionUI/Package.swift @@ -12,7 +12,7 @@ let package = Package( targets: ["SubscriptionUI"]), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.0.1"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.1.0"), .package(path: "../SwiftUIExtensions"), .package(path: "../FeatureFlags") ], diff --git a/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/DebugMenu/DebugPurchaseViewController.swift b/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/DebugMenu/DebugPurchaseViewController.swift index fdc220c84b..a539dc8963 100644 --- a/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/DebugMenu/DebugPurchaseViewController.swift +++ b/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/DebugMenu/DebugPurchaseViewController.swift @@ -65,12 +65,16 @@ public final class DebugPurchaseViewController: NSViewController { } manager.$availableProducts.combineLatest(manager.$purchasedProductIDs, manager.$purchaseQueue).receive(on: RunLoop.main).sink { [weak self] availableProducts, purchasedProductIDs, purchaseQueue in + + // swiftlint:disable:next force_cast + let products = availableProducts as! [Product] + print(" -- got combineLatest -") print(" -- got combineLatest - availableProducts: \(availableProducts.map { $0.id }.joined(separator: ","))") print(" -- got combineLatest - purchasedProducts: \(purchasedProductIDs.joined(separator: ","))") print(" -- got combineLatest - purchaseQueue: \(purchaseQueue.joined(separator: ","))") - let sortedProducts = availableProducts.sorted(by: { $0.price > $1.price }) + let sortedProducts = products.sorted(by: { $0.price > $1.price }) self?.model.subscriptions = sortedProducts.map { SubscriptionRowModel(product: $0, isPurchased: purchasedProductIDs.contains($0.id), diff --git a/LocalPackages/WebKitExtensions/Package.swift b/LocalPackages/WebKitExtensions/Package.swift index 8a2ead51d5..b73bc0b6b9 100644 --- a/LocalPackages/WebKitExtensions/Package.swift +++ b/LocalPackages/WebKitExtensions/Package.swift @@ -32,7 +32,7 @@ let package = Package( ), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.0.1"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.1.0"), .package(path: "../AppKitExtensions") ], targets: [ From 2a6eb564783b6ca1b6a148eb45c19a2933ecfa74 Mon Sep 17 00:00:00 2001 From: Dominik Kapusta Date: Wed, 11 Dec 2024 18:16:25 +0100 Subject: [PATCH 02/10] Add pixels for Privacy Stats on HTML NTP (#3659) Task/Issue URL: https://app.asana.com/0/69071770703008/1208936504720914/f Description: This change adds 2 new messages to track actions in the Privacy Stats widget and implements usage and debug pixels for Privacy Stats. --- DuckDuckGo.xcodeproj/project.pbxproj | 45 +++++-- DuckDuckGo/Application/AppDelegate.swift | 2 +- .../NewTabPageActionsManagerExtension.swift | 3 +- ...=> NewTabPageNextStepsCardsProvider.swift} | 45 +++++-- .../NewTabPagePrivacyStatsEventHandler.swift | 39 ++++++ .../PrivacyStats/PrivacyStatsDatabase.swift | 4 +- .../PrivacyStatsErrorHandler.swift | 34 +++++ DuckDuckGo/Statistics/GeneralPixel.swift | 6 - DuckDuckGo/Statistics/NewTabPagePixel.swift | 97 ++++++++++++++ .../NewTabPageNextStepsCardsClient.swift | 4 +- .../NewTabPageNextStepsCardsProviding.swift | 1 + .../NewTabPagePrivacyStatsClient.swift | 18 ++- .../NewTabPagePrivacyStatsModel.swift | 18 +++ ...ngNewTabPagePrivacyStatsEventHandler.swift | 43 +++++++ .../NewTabPageNextStepsCardsClientTests.swift | 119 ++++++++++------- .../NewTabPagePrivacyStatsClientTests.swift | 18 +++ .../NewTabPagePrivacyStatsModelTests.swift | 3 + ...ewTabPageNextStepsCardsProviderTests.swift | 121 ++++++++++++++++++ 18 files changed, 541 insertions(+), 79 deletions(-) rename DuckDuckGo/NewTabPage/{ContinueSetUpModel+NewTabPage.swift => NewTabPageNextStepsCardsProvider.swift} (58%) create mode 100644 DuckDuckGo/NewTabPage/NewTabPagePrivacyStatsEventHandler.swift create mode 100644 DuckDuckGo/PrivacyStats/PrivacyStatsErrorHandler.swift create mode 100644 DuckDuckGo/Statistics/NewTabPagePixel.swift create mode 100644 LocalPackages/NewTabPage/Tests/NewTabPageTests/Mocks/CapturingNewTabPagePrivacyStatsEventHandler.swift create mode 100644 UnitTests/NewTabPage/NewTabPageNextStepsCardsProviderTests.swift diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 12d3fa1c9b..673129133f 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 70; objects = { /* Begin PBXBuildFile section */ @@ -1115,8 +1115,6 @@ 372A0FED2B2379310033BF7F /* SyncMetricsEventsHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 372A0FEB2B2379310033BF7F /* SyncMetricsEventsHandler.swift */; }; 372BC2A12A4AFA47001D8FD5 /* SyncCredentialsAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 372BC2A02A4AFA47001D8FD5 /* SyncCredentialsAdapter.swift */; }; 372BC2A22A4AFA47001D8FD5 /* SyncCredentialsAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 372BC2A02A4AFA47001D8FD5 /* SyncCredentialsAdapter.swift */; }; - 372D15E92D00F19500A11576 /* ContinueSetUpModel+NewTabPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 372D15E82D00F18E00A11576 /* ContinueSetUpModel+NewTabPage.swift */; }; - 372D15EA2D00F19500A11576 /* ContinueSetUpModel+NewTabPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 372D15E82D00F18E00A11576 /* ContinueSetUpModel+NewTabPage.swift */; }; 372D15EC2D00FA1A00A11576 /* AppearancePreferences+NewTabPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 372D15EB2D00FA1400A11576 /* AppearancePreferences+NewTabPage.swift */; }; 372D15ED2D00FA1A00A11576 /* AppearancePreferences+NewTabPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 372D15EB2D00FA1400A11576 /* AppearancePreferences+NewTabPage.swift */; }; 3739326529AE4B39009346AE /* DDGSync in Frameworks */ = {isa = PBXBuildFile; productRef = 3739326429AE4B39009346AE /* DDGSync */; }; @@ -1230,6 +1228,8 @@ 37B11B3928095E6600CBB621 /* TabLazyLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37B11B3828095E6600CBB621 /* TabLazyLoader.swift */; }; 37BA812D29B3CD690053F1A3 /* SyncUI in Frameworks */ = {isa = PBXBuildFile; productRef = 37BA812C29B3CD690053F1A3 /* SyncUI */; }; 37BA812F29B3CD6E0053F1A3 /* SyncUI in Frameworks */ = {isa = PBXBuildFile; productRef = 37BA812E29B3CD6E0053F1A3 /* SyncUI */; }; + 37BE087A2D09C0F200C77B8E /* NewTabPageNextStepsCardsProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BE08792D09C0EA00C77B8E /* NewTabPageNextStepsCardsProvider.swift */; }; + 37BE087B2D09C0F200C77B8E /* NewTabPageNextStepsCardsProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BE08792D09C0EA00C77B8E /* NewTabPageNextStepsCardsProvider.swift */; }; 37BF3F14286D8A6500BD9014 /* PinnedTabsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BF3F13286D8A6500BD9014 /* PinnedTabsManager.swift */; }; 37BF3F21286F0A7A00BD9014 /* PinnedTabsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BF3F1E286F0A7A00BD9014 /* PinnedTabsViewModel.swift */; }; 37BF3F22286F0A7A00BD9014 /* PinnedTabsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37BF3F1F286F0A7A00BD9014 /* PinnedTabsView.swift */; }; @@ -1290,6 +1290,12 @@ 37E260932C8A3EB4006EE07F /* MockHomePageSettingsModelNavigator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E260912C8A3EB4006EE07F /* MockHomePageSettingsModelNavigator.swift */; }; 37E307A72D072A1600599500 /* Common in Frameworks */ = {isa = PBXBuildFile; productRef = 37E307A62D072A1600599500 /* Common */; }; 37E307A92D072A1E00599500 /* Common in Frameworks */ = {isa = PBXBuildFile; productRef = 37E307A82D072A1E00599500 /* Common */; }; + 37E307AB2D0745DB00599500 /* PrivacyStatsErrorHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E307AA2D0745D500599500 /* PrivacyStatsErrorHandler.swift */; }; + 37E307AC2D0745DB00599500 /* PrivacyStatsErrorHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E307AA2D0745D500599500 /* PrivacyStatsErrorHandler.swift */; }; + 37E307AE2D07483400599500 /* NewTabPagePixel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E307AD2D07482F00599500 /* NewTabPagePixel.swift */; }; + 37E307AF2D07483400599500 /* NewTabPagePixel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E307AD2D07482F00599500 /* NewTabPagePixel.swift */; }; + 37E307B22D075B6500599500 /* NewTabPagePrivacyStatsEventHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E307B12D075B5E00599500 /* NewTabPagePrivacyStatsEventHandler.swift */; }; + 37E307B32D075B6500599500 /* NewTabPagePrivacyStatsEventHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37E307B12D075B5E00599500 /* NewTabPagePrivacyStatsEventHandler.swift */; }; 37EE81412D00DBC40068034A /* WebKitExtensions in Frameworks */ = {isa = PBXBuildFile; productRef = 37EE81402D00DBC40068034A /* WebKitExtensions */; }; 37EE81432D00DBCC0068034A /* WebKitExtensions in Frameworks */ = {isa = PBXBuildFile; productRef = 37EE81422D00DBCC0068034A /* WebKitExtensions */; }; 37F19A6528E1B3FB00740DC6 /* PreferencesDuckPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37F19A6428E1B3FB00740DC6 /* PreferencesDuckPlayerView.swift */; }; @@ -3640,7 +3646,6 @@ 37219B3C2CC27DB300C9D7A8 /* NewTabPageSearchBoxExperimentTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewTabPageSearchBoxExperimentTests.swift; sourceTree = ""; }; 372A0FEB2B2379310033BF7F /* SyncMetricsEventsHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncMetricsEventsHandler.swift; sourceTree = ""; }; 372BC2A02A4AFA47001D8FD5 /* SyncCredentialsAdapter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncCredentialsAdapter.swift; sourceTree = ""; }; - 372D15E82D00F18E00A11576 /* ContinueSetUpModel+NewTabPage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ContinueSetUpModel+NewTabPage.swift"; sourceTree = ""; }; 372D15EB2D00FA1400A11576 /* AppearancePreferences+NewTabPage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppearancePreferences+NewTabPage.swift"; sourceTree = ""; }; 373A1AA7283ED1B900586521 /* BookmarkHTMLReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkHTMLReader.swift; sourceTree = ""; }; 373A1AA9283ED86C00586521 /* BookmarksHTMLReaderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksHTMLReaderTests.swift; sourceTree = ""; }; @@ -3724,6 +3729,7 @@ 37AFCE9127DB8CAD00471A10 /* PreferencesAboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesAboutView.swift; sourceTree = ""; }; 37B11B3828095E6600CBB621 /* TabLazyLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabLazyLoader.swift; sourceTree = ""; }; 37BA812B29B3CB8A0053F1A3 /* SyncUI */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = SyncUI; sourceTree = ""; }; + 37BE08792D09C0EA00C77B8E /* NewTabPageNextStepsCardsProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewTabPageNextStepsCardsProvider.swift; sourceTree = ""; }; 37BF3F13286D8A6500BD9014 /* PinnedTabsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PinnedTabsManager.swift; sourceTree = ""; }; 37BF3F1E286F0A7A00BD9014 /* PinnedTabsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PinnedTabsViewModel.swift; sourceTree = ""; }; 37BF3F1F286F0A7A00BD9014 /* PinnedTabsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PinnedTabsView.swift; sourceTree = ""; }; @@ -3766,6 +3772,9 @@ 37E2608B2C8A1F6D006EE07F /* UserColorProviding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserColorProviding.swift; sourceTree = ""; }; 37E2608E2C8A3ABE006EE07F /* HomePageSettingsModelNavigator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageSettingsModelNavigator.swift; sourceTree = ""; }; 37E260912C8A3EB4006EE07F /* MockHomePageSettingsModelNavigator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockHomePageSettingsModelNavigator.swift; sourceTree = ""; }; + 37E307AA2D0745D500599500 /* PrivacyStatsErrorHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyStatsErrorHandler.swift; sourceTree = ""; }; + 37E307AD2D07482F00599500 /* NewTabPagePixel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewTabPagePixel.swift; sourceTree = ""; }; + 37E307B12D075B5E00599500 /* NewTabPagePrivacyStatsEventHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewTabPagePrivacyStatsEventHandler.swift; sourceTree = ""; }; 37E75733296F4F0500E1C162 /* UnitTestsAppStore.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = UnitTestsAppStore.xcconfig; sourceTree = ""; }; 37E75734296F4F0500E1C162 /* IntegrationTestsAppStore.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = IntegrationTestsAppStore.xcconfig; sourceTree = ""; }; 37F19A6428E1B3FB00740DC6 /* PreferencesDuckPlayerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesDuckPlayerView.swift; sourceTree = ""; }; @@ -4991,6 +5000,10 @@ FD23FD2C2886A81D007F6985 /* AutoconsentManagement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoconsentManagement.swift; sourceTree = ""; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedRootGroup section */ + 3792D51A2D09C72200FC15D6 /* NewTabPage */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = NewTabPage; sourceTree = ""; }; +/* End PBXFileSystemSynchronizedRootGroup section */ + /* Begin PBXFrameworksBuildPhase section */ 3706FCA6293F65D500E42796 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; @@ -5821,9 +5834,10 @@ 376788092CECCAD900F59D83 /* NewTabPage */ = { isa = PBXGroup; children = ( + 37BE08792D09C0EA00C77B8E /* NewTabPageNextStepsCardsProvider.swift */, + 37E307B12D075B5E00599500 /* NewTabPagePrivacyStatsEventHandler.swift */, 374EFDF22D01C99700B30939 /* ActiveRemoteMessageModel+NewTabPage.swift */, 372D15EB2D00FA1400A11576 /* AppearancePreferences+NewTabPage.swift */, - 372D15E82D00F18E00A11576 /* ContinueSetUpModel+NewTabPage.swift */, 3772BEDC2D019CDF0019B9EF /* DefaultsFavoritesActionHandler.swift */, 371BBC5D2D00CA3E008FA0C7 /* NewTabPageWebViewModel.swift */, 371BBC5A2D00C911008FA0C7 /* NewTabPageActionsManagerExtension.swift */, @@ -5983,8 +5997,9 @@ isa = PBXGroup; children = ( 37FC2A162CF903000048E226 /* Mocks */, - 370245FC2CF7C64B00CD79A3 /* PrivacyStatsTrackerDataProvider.swift */, 37DF37082CF38CD3005ED34B /* PrivacyStatsDatabase.swift */, + 37E307AA2D0745D500599500 /* PrivacyStatsErrorHandler.swift */, + 370245FC2CF7C64B00CD79A3 /* PrivacyStatsTrackerDataProvider.swift */, ); path = PrivacyStats; sourceTree = ""; @@ -8024,6 +8039,7 @@ 1D3B1AB7293405F5006F4388 /* PasswordManagers */, B6106BA126A7BE430013B453 /* Permissions */, CD34F0BE2C886462006826BE /* MaliciousSiteProtection */, + 3792D51A2D09C72200FC15D6 /* NewTabPage */, 37D2377E287EFECD00BCE03B /* PinnedTabs */, 4B0511EE262CAEB300F6079C /* Preferences */, 31E163BB293A577200963C10 /* PrivacyReferenceTests */, @@ -9303,6 +9319,7 @@ F18826832BBEE31700D9AC4F /* PixelKit+Assertion.swift */, F188267F2BBEB58100D9AC4F /* PrivacyProPixel.swift */, 370270BB2C78AC6F002E44E4 /* NewTabBackgroundPixel.swift */, + 37E307AD2D07482F00599500 /* NewTabPagePixel.swift */, 56DB9FE82CD24B47001BEC23 /* ContextualOnboardingPixel.swift */, 37219B362CBFBC8200C9D7A8 /* NewTabSearchBoxExperimentPixel.swift */, ); @@ -9963,6 +9980,9 @@ B6AEB5552BA3042300781A09 /* PBXTargetDependency */, 37079A93294236F20031BB3C /* PBXTargetDependency */, ); + fileSystemSynchronizedGroups = ( + 3792D51A2D09C72200FC15D6 /* NewTabPage */, + ); name = "Unit Tests App Store"; packageProductDependencies = ( 3706FDD6293F661700E42796 /* OHHTTPStubs */, @@ -10450,6 +10470,9 @@ B6E6BA1D2BA2E049008AA7E1 /* PBXTargetDependency */, B6CAC23D2B8F0EC6006CD402 /* PBXTargetDependency */, ); + fileSystemSynchronizedGroups = ( + 3792D51A2D09C72200FC15D6 /* NewTabPage */, + ); name = "Unit Tests"; packageProductDependencies = ( B6DA44162616C13800DD1EC2 /* OHHTTPStubs */, @@ -11399,6 +11422,7 @@ 3706FAF3293F65D500E42796 /* LocalAuthenticationService.swift in Sources */, 1D36E659298AA3BA00AA485D /* InternalUserDeciderStore.swift in Sources */, B6BCC5242AFCDABB002C5499 /* DataImportSourceViewModel.swift in Sources */, + 37E307AF2D07483400599500 /* NewTabPagePixel.swift in Sources */, B6F1B02B2BCE675C005E863C /* NetworkProtectionControllerTabExtension.swift in Sources */, 3706FEBC293F6EFF00E42796 /* BWResponse.swift in Sources */, B65C7DFC2B886CF0001E2D5C /* WKPDFHUDViewWrapper.swift in Sources */, @@ -11602,6 +11626,7 @@ 1D4071AF2BD64267002D4537 /* DockCustomizer.swift in Sources */, C153E7C32C8AD68D00B9BAD7 /* FreemiumDBPPromotionViewCoordinator.swift in Sources */, 4B41EDA42B1543B9001EEDF4 /* VPNPreferencesModel.swift in Sources */, + 37BE087A2D09C0F200C77B8E /* NewTabPageNextStepsCardsProvider.swift in Sources */, 1E559BB22BBCA9F1002B4AF6 /* RedirectNavigationResponder.swift in Sources */, 3706FB6C293F65D500E42796 /* FaviconStore.swift in Sources */, 3706FB6D293F65D500E42796 /* SuggestionListCharacteristics.swift in Sources */, @@ -11945,6 +11970,7 @@ 3706FC23293F65D500E42796 /* StatisticsStore.swift in Sources */, 1DDD3EBD2B84DCB9004CBF2B /* WebTrackingProtectionPreferences.swift in Sources */, 3706FC25293F65D500E42796 /* ColorView.swift in Sources */, + 37E307B32D075B6500599500 /* NewTabPagePrivacyStatsEventHandler.swift in Sources */, 3706FC26293F65D500E42796 /* RecentlyClosedCacheItem.swift in Sources */, 3706FC27293F65D500E42796 /* PopupBlockedPopover.swift in Sources */, F1476FC12C1359FB00EAE46A /* SubscriptionUIHandler.swift in Sources */, @@ -11984,6 +12010,7 @@ 4B9DB04B2A983B24000927DB /* NotificationService.swift in Sources */, 3706FC3A293F65D500E42796 /* NSOpenPanelExtensions.swift in Sources */, F118EA862BEACC7000F77634 /* NonStandardPixel.swift in Sources */, + 37E307AC2D0745DB00599500 /* PrivacyStatsErrorHandler.swift in Sources */, 3706FC3B293F65D500E42796 /* FirePopover.swift in Sources */, 4B4D60C12A0C848E00BCD287 /* NetworkProtectionControllerErrorStore.swift in Sources */, 3706FC3E293F65D500E42796 /* VariantManager.swift in Sources */, @@ -12077,7 +12104,6 @@ B6C0BB6829AEFF8100AE8E3C /* BookmarkExtension.swift in Sources */, B69A14FB2B4D705D00B9417D /* BookmarkFolderPicker.swift in Sources */, 3706FC6C293F65D500E42796 /* BookmarkViewModel.swift in Sources */, - 372D15EA2D00F19500A11576 /* ContinueSetUpModel+NewTabPage.swift in Sources */, 3706FC6D293F65D500E42796 /* DaxSpeech.swift in Sources */, CB63DECC2CDC0BBE0097986A /* PageRefreshMonitor.swift in Sources */, 3706FC6E293F65D500E42796 /* DuckURLSchemeHandler.swift in Sources */, @@ -12886,6 +12912,7 @@ buildActionMask = 2147483647; files = ( AAA0CC572539EBC90079BC96 /* FaviconUserScript.swift in Sources */, + 37BE087B2D09C0F200C77B8E /* NewTabPageNextStepsCardsProvider.swift in Sources */, 3158B1532B0BF75700AF130C /* LoginItem+DataBrokerProtection.swift in Sources */, 1D2DC0082901679E008083A1 /* BWResponse.swift in Sources */, AADCBF3A26F7C2CE00EF67A8 /* LottieAnimationCache.swift in Sources */, @@ -13305,7 +13332,6 @@ 3199AF792C80734A003AEBDC /* DuckPlayerOnboardingViewModel.swift in Sources */, B6685E4229A61C470043D2EE /* DownloadsTabExtension.swift in Sources */, 4B8AC93B26B48ADF00879451 /* ASN1Parser.swift in Sources */, - 372D15E92D00F19500A11576 /* ContinueSetUpModel+NewTabPage.swift in Sources */, 856C98DF257014BD00A22F1F /* FileDownloadManager.swift in Sources */, 4BB99CFF26FE191E001E4761 /* BookmarkImport.swift in Sources */, B68503A7279141CD00893A05 /* KeySetDictionary.swift in Sources */, @@ -13335,6 +13361,7 @@ 7B22D86E2CCFD7B7006A76E1 /* TipKitController.swift in Sources */, B68C2FB227706E6A00BF2C7D /* ProcessExtension.swift in Sources */, CD2AB5CA2C8225E70019EB49 /* URLTokenValidator.swift in Sources */, + 37E307B22D075B6500599500 /* NewTabPagePrivacyStatsEventHandler.swift in Sources */, B6106BA726A7BECC0013B453 /* PermissionAuthorizationQuery.swift in Sources */, CD2AB5C32C8222F70019EB49 /* MaliciousSiteProtectionState.swift in Sources */, 3171D6BA288984D00068632A /* BadgeAnimationView.swift in Sources */, @@ -13347,6 +13374,7 @@ 370C23092C76A39900A80A3E /* BackgroundCategoryView.swift in Sources */, 56D6A3D629DB2BAB0055215A /* ContinueSetUpView.swift in Sources */, B6B5F5842B03580A008DB58A /* RequestFilePermissionView.swift in Sources */, + 37E307AB2D0745DB00599500 /* PrivacyStatsErrorHandler.swift in Sources */, 4B1E6EEE27AB5E5100F51793 /* PasswordManagementListSection.swift in Sources */, 31C9ADE52AF0564500CEF57D /* WaitlistFeatureSetupHandler.swift in Sources */, AA222CB92760F74E00321475 /* FaviconReferenceCache.swift in Sources */, @@ -13616,6 +13644,7 @@ 3712092A2C2333A0003ADF3D /* RemoteMessagingDatabase.swift in Sources */, F1FDC9382BF51F41006B1435 /* VPNSettings+Environment.swift in Sources */, 3158B14A2B0BF74300AF130C /* DataBrokerProtectionDebugMenu.swift in Sources */, + 37E307AE2D07483400599500 /* NewTabPagePixel.swift in Sources */, 4BBDEE9128FC14760092FAA6 /* BWInstallationService.swift in Sources */, 7B4D8A212BDA857300852966 /* VPNOperationErrorRecorder.swift in Sources */, F17E7DDE2C7C83E500907A84 /* Logger+FileDownload.swift in Sources */, diff --git a/DuckDuckGo/Application/AppDelegate.swift b/DuckDuckGo/Application/AppDelegate.swift index 010db46361..1b0788355b 100644 --- a/DuckDuckGo/Application/AppDelegate.swift +++ b/DuckDuckGo/Application/AppDelegate.swift @@ -327,7 +327,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate { #if DEBUG if NSApplication.runType.requiresEnvironment { - privacyStats = PrivacyStats(databaseProvider: PrivacyStatsDatabase()) + privacyStats = PrivacyStats(databaseProvider: PrivacyStatsDatabase(), errorEvents: PrivacyStatsErrorHandler()) } else { privacyStats = MockPrivacyStats() } diff --git a/DuckDuckGo/NewTabPage/NewTabPageActionsManagerExtension.swift b/DuckDuckGo/NewTabPage/NewTabPageActionsManagerExtension.swift index 4d92b5ecc0..c061569cd7 100644 --- a/DuckDuckGo/NewTabPage/NewTabPageActionsManagerExtension.swift +++ b/DuckDuckGo/NewTabPage/NewTabPageActionsManagerExtension.swift @@ -30,6 +30,7 @@ extension NewTabPageActionsManager { let privacyStatsModel = NewTabPagePrivacyStatsModel( privacyStats: privacyStats, trackerDataProvider: PrivacyStatsTrackerDataProvider(contentBlocking: ContentBlocking.shared), + eventMapping: NewTabPagePrivacyStatsEventHandler(), getLegacyIsViewExpandedSetting: UserDefaultsWrapper(key: .homePageShowRecentlyVisited, defaultValue: false).wrappedValue ) @@ -43,7 +44,7 @@ extension NewTabPageActionsManager { self.init(scriptClients: [ NewTabPageConfigurationClient(sectionsVisibilityProvider: appearancePreferences), NewTabPageRMFClient(remoteMessageProvider: activeRemoteMessageModel), - NewTabPageNextStepsCardsClient(model: HomePage.Models.ContinueSetUpModel(tabOpener: NewTabPageTabOpener())), + NewTabPageNextStepsCardsClient(model: NewTabPageNextStepsCardsProvider(continueSetUpModel: HomePage.Models.ContinueSetUpModel(tabOpener: NewTabPageTabOpener()))), NewTabPageFavoritesClient(favoritesModel: favoritesModel, preferredFaviconSize: Int(Favicon.SizeCategory.medium.rawValue)), NewTabPagePrivacyStatsClient(model: privacyStatsModel) ]) diff --git a/DuckDuckGo/NewTabPage/ContinueSetUpModel+NewTabPage.swift b/DuckDuckGo/NewTabPage/NewTabPageNextStepsCardsProvider.swift similarity index 58% rename from DuckDuckGo/NewTabPage/ContinueSetUpModel+NewTabPage.swift rename to DuckDuckGo/NewTabPage/NewTabPageNextStepsCardsProvider.swift index 935f16d297..b56558e98e 100644 --- a/DuckDuckGo/NewTabPage/ContinueSetUpModel+NewTabPage.swift +++ b/DuckDuckGo/NewTabPage/NewTabPageNextStepsCardsProvider.swift @@ -1,5 +1,5 @@ // -// ContinueSetUpModel+NewTabPage.swift +// NewTabPageNextStepsCardsProvider.swift // // Copyright © 2024 DuckDuckGo. All rights reserved. // @@ -22,43 +22,66 @@ import NewTabPage import PixelKit import UserScript -extension HomePage.Models.ContinueSetUpModel: NewTabPageNextStepsCardsProviding { +final class NewTabPageNextStepsCardsProvider: NewTabPageNextStepsCardsProviding { + let continueSetUpModel: HomePage.Models.ContinueSetUpModel + let appearancePreferences: AppearancePreferences + + init(continueSetUpModel: HomePage.Models.ContinueSetUpModel, appearancePreferences: AppearancePreferences = .shared) { + self.continueSetUpModel = continueSetUpModel + self.appearancePreferences = appearancePreferences + } + var isViewExpanded: Bool { get { - shouldShowAllFeatures + continueSetUpModel.shouldShowAllFeatures } set { - shouldShowAllFeatures = newValue + continueSetUpModel.shouldShowAllFeatures = newValue } } var isViewExpandedPublisher: AnyPublisher { - shouldShowAllFeaturesPublisher.eraseToAnyPublisher() + continueSetUpModel.shouldShowAllFeaturesPublisher.eraseToAnyPublisher() } var cards: [NewTabPageNextStepsCardsClient.CardID] { - featuresMatrix.flatMap { $0.map(NewTabPageNextStepsCardsClient.CardID.init) } + guard !appearancePreferences.isContinueSetUpCardsViewOutdated else { + return [] + } + return continueSetUpModel.featuresMatrix.flatMap { $0.map(NewTabPageNextStepsCardsClient.CardID.init) } } var cardsPublisher: AnyPublisher<[NewTabPageNextStepsCardsClient.CardID], Never> { - $featuresMatrix.dropFirst().removeDuplicates() - .map { matrix in - matrix.flatMap { $0.map(NewTabPageNextStepsCardsClient.CardID.init) } + let features = continueSetUpModel.$featuresMatrix.dropFirst().removeDuplicates() + let cardsDidBecomeOutdated = appearancePreferences.$isContinueSetUpCardsViewOutdated.removeDuplicates() + + return Publishers.CombineLatest(features, cardsDidBecomeOutdated) + .map { features, isOutdated -> [NewTabPageNextStepsCardsClient.CardID] in + guard !isOutdated else { + return [] + } + return features.flatMap { $0.map(NewTabPageNextStepsCardsClient.CardID.init) } } .eraseToAnyPublisher() } @MainActor func handleAction(for card: NewTabPageNextStepsCardsClient.CardID) { - performAction(for: .init(card)) + continueSetUpModel.performAction(for: .init(card)) } @MainActor func dismiss(_ card: NewTabPageNextStepsCardsClient.CardID) { - removeItem(for: .init(card)) + continueSetUpModel.removeItem(for: .init(card)) } + @MainActor func willDisplayCards(_ cards: [NewTabPageNextStepsCardsClient.CardID]) { + appearancePreferences.continueSetUpCardsViewDidAppear() + fireAddToDockPixelIfNeeded(cards) + } + + private func fireAddToDockPixelIfNeeded(_ cards: [NewTabPageNextStepsCardsClient.CardID]) { guard cards.contains(.addAppToDockMac) else { return } diff --git a/DuckDuckGo/NewTabPage/NewTabPagePrivacyStatsEventHandler.swift b/DuckDuckGo/NewTabPage/NewTabPagePrivacyStatsEventHandler.swift new file mode 100644 index 0000000000..9f1e53c713 --- /dev/null +++ b/DuckDuckGo/NewTabPage/NewTabPagePrivacyStatsEventHandler.swift @@ -0,0 +1,39 @@ +// +// NewTabPagePrivacyStatsEventHandler.swift +// +// Copyright © 2024 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Common +import PixelKit +import NewTabPage + +final class NewTabPagePrivacyStatsEventHandler: EventMapping { + + init() { + super.init { event, _, _, _ in + switch event { + case .showLess: + PixelKit.fire(NewTabPagePixel.blockedTrackingAttemptsShowLess, frequency: .dailyAndCount) + case .showMore: + PixelKit.fire(NewTabPagePixel.blockedTrackingAttemptsShowMore, frequency: .dailyAndCount) + } + } + } + + override init(mapping: @escaping EventMapping.Mapping) { + fatalError("Use init()") + } +} diff --git a/DuckDuckGo/PrivacyStats/PrivacyStatsDatabase.swift b/DuckDuckGo/PrivacyStats/PrivacyStatsDatabase.swift index 8c16077b68..ff37dded0f 100644 --- a/DuckDuckGo/PrivacyStats/PrivacyStatsDatabase.swift +++ b/DuckDuckGo/PrivacyStats/PrivacyStatsDatabase.swift @@ -43,9 +43,9 @@ public final class PrivacyStatsDatabase: PrivacyStatsDatabaseProviding { db.loadStore { context, error in guard context != nil else { if let error = error { - PixelKit.fire(DebugEvent(GeneralPixel.privacyStatsCouldNotLoadDatabase, error: error)) + PixelKit.fire(DebugEvent(NewTabPagePixel.privacyStatsCouldNotLoadDatabase, error: error), frequency: .dailyAndCount) } else { - PixelKit.fire(DebugEvent(GeneralPixel.privacyStatsCouldNotLoadDatabase)) + PixelKit.fire(DebugEvent(NewTabPagePixel.privacyStatsCouldNotLoadDatabase), frequency: .dailyAndCount) } Thread.sleep(forTimeInterval: 1) diff --git a/DuckDuckGo/PrivacyStats/PrivacyStatsErrorHandler.swift b/DuckDuckGo/PrivacyStats/PrivacyStatsErrorHandler.swift new file mode 100644 index 0000000000..dbc4750ba2 --- /dev/null +++ b/DuckDuckGo/PrivacyStats/PrivacyStatsErrorHandler.swift @@ -0,0 +1,34 @@ +// +// PrivacyStatsErrorHandler.swift +// +// Copyright © 2024 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Common +import PixelKit +import PrivacyStats + +final class PrivacyStatsErrorHandler: EventMapping { + + init() { + super.init { event, _, _, _ in + PixelKit.fire(DebugEvent(NewTabPagePixel.privacyStatsDatabaseError, error: event), frequency: .dailyAndCount) + } + } + + override init(mapping: @escaping EventMapping.Mapping) { + fatalError("Use init()") + } +} diff --git a/DuckDuckGo/Statistics/GeneralPixel.swift b/DuckDuckGo/Statistics/GeneralPixel.swift index 9310710727..2a92aa9845 100644 --- a/DuckDuckGo/Statistics/GeneralPixel.swift +++ b/DuckDuckGo/Statistics/GeneralPixel.swift @@ -464,9 +464,6 @@ enum GeneralPixel: PixelKitEventV2 { case siteNotWorkingShown case siteNotWorkingWebsiteIsBroken - // Privacy Stats - case privacyStatsCouldNotLoadDatabase - var name: String { switch self { @@ -1144,9 +1141,6 @@ enum GeneralPixel: PixelKitEventV2 { case .pageRefreshThreeTimesWithin20Seconds: return "m_mac_reload-three-times-within-20-seconds" case .siteNotWorkingShown: return "m_mac_site-not-working_shown" case .siteNotWorkingWebsiteIsBroken: return "m_mac_site-not-working_website-is-broken" - - // Privacy Stats - case .privacyStatsCouldNotLoadDatabase: return "privacy_stats_could_not_load_database" } } diff --git a/DuckDuckGo/Statistics/NewTabPagePixel.swift b/DuckDuckGo/Statistics/NewTabPagePixel.swift new file mode 100644 index 0000000000..9c7e7873ba --- /dev/null +++ b/DuckDuckGo/Statistics/NewTabPagePixel.swift @@ -0,0 +1,97 @@ +// +// NewTabPagePixel.swift +// +// Copyright © 2024 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import PixelKit + +/** + * This enum keeps pixels related to HTML New Tab Page. + * + * > Related links: + * [Privacy Triage](https://app.asana.com/0/69071770703008/1208146890364172/f) + * [Detailed Pixels description](https://app.asana.com/0/1201621708115095/1207983904350396/f) + */ +enum NewTabPagePixel: PixelKitEventV2 { + + /** + * Event Trigger: "Show Less" button is clicked in Privacy Stats table on the New Tab Page, to collapse the table. + * + * > Note: This isn't the section collapse setting (like for Favorites or Next Steps), but the sub-setting + * to control whether the view should contain 5 most frequently blocked top companies or all top companies. + * + * Anomaly Investigation: + * - This pixel is fired from `NewTabPagePrivacyStatsModel` in response to a message sent by the user script. + * - In case of anomalies, check if the subscription between the user script and the model isn't causing the pixel + * to be fired more than once per interaction. + */ + case blockedTrackingAttemptsShowLess + + /** + * Event Trigger: "Show More" button is clicked in Privacy Stats table on the New Tab Page, to expand the table. + * + * > Note: This isn't the section collapse setting (like for Favorites or Next Steps), but the sub-setting + * to control whether the view should contain 5 most frequently blocked top companies or all top companies. + * + * Anomaly Investigation: + * - This pixel is fired from `NewTabPagePrivacyStatsModel` in response to a message sent by the user script. + * - In case of anomalies, check if the subscription between the user script and the model isn't causing the pixel + * to be fired more than once per interaction. + */ + case blockedTrackingAttemptsShowMore + + // MARK: - Debug + + /** + * Event Trigger: Privacy Stats database fails to be initialized. Firing this pixel is followed by an app crash with a `fatalError`. + * This pixel can be fired when there's no space on disk, when database migration fails or when database was tampered with. + * This is a debug (health) pixel. + * + * Anomaly Investigation: + * - If this spikes in production it may mean we've released a new PriacyStats database model version + * and didn't handle migration correctly in which case we need a hotfix. + * - Otherwise it may happen occasionally for users with not space left on device. + */ + case privacyStatsCouldNotLoadDatabase + + /** + * Event Trigger: Privacy Stats reports a database error when fetching, storing or clearing data, + * as outlined by `PrivacyStatsError`. This is a debug (health) pixel. + * + * Anomaly Investigation: + * - The errors here are all Core Data errors. The error code identifies the specific enum case of `PrivacyStatsError`. + * - Check `PrivacyStats` for places where the error is thrown. + */ + case privacyStatsDatabaseError + + var name: String { + switch self { + case .blockedTrackingAttemptsShowLess: return "m_mac_new-tab-page_blocked-tracking-attempts_show-less" + case .blockedTrackingAttemptsShowMore: return "m_mac_new-tab-page_blocked-tracking-attempts_show-more" + case .privacyStatsCouldNotLoadDatabase: return "new-tab-page_privacy-stats_could-not-load-database" + case .privacyStatsDatabaseError: return "new-tab-page_privacy-stats_database_error" + } + } + + var parameters: [String: String]? { + nil + } + + var error: (any Error)? { + nil + } +} diff --git a/LocalPackages/NewTabPage/Sources/NewTabPage/NextStepsCards/NewTabPageNextStepsCardsClient.swift b/LocalPackages/NewTabPage/Sources/NewTabPage/NextStepsCards/NewTabPageNextStepsCardsClient.swift index de9467d5b2..46b11553bc 100644 --- a/LocalPackages/NewTabPage/Sources/NewTabPage/NextStepsCards/NewTabPageNextStepsCardsClient.swift +++ b/LocalPackages/NewTabPage/Sources/NewTabPage/NextStepsCards/NewTabPageNextStepsCardsClient.swift @@ -57,7 +57,9 @@ public final class NewTabPageNextStepsCardsClient: NewTabPageScriptClient { willDisplayCardsPublisher .sink { cards in - model.willDisplayCards(cards) + Task { @MainActor in + model.willDisplayCards(cards) + } } .store(in: &cancellables) } diff --git a/LocalPackages/NewTabPage/Sources/NewTabPage/NextStepsCards/NewTabPageNextStepsCardsProviding.swift b/LocalPackages/NewTabPage/Sources/NewTabPage/NextStepsCards/NewTabPageNextStepsCardsProviding.swift index 48322a7640..a6843ef2ba 100644 --- a/LocalPackages/NewTabPage/Sources/NewTabPage/NextStepsCards/NewTabPageNextStepsCardsProviding.swift +++ b/LocalPackages/NewTabPage/Sources/NewTabPage/NextStepsCards/NewTabPageNextStepsCardsProviding.swift @@ -34,5 +34,6 @@ public protocol NewTabPageNextStepsCardsProviding: AnyObject { @MainActor func dismiss(_ card: NewTabPageNextStepsCardsClient.CardID) + @MainActor func willDisplayCards(_ cards: [NewTabPageNextStepsCardsClient.CardID]) } diff --git a/LocalPackages/NewTabPage/Sources/NewTabPage/PrivacyStats/NewTabPagePrivacyStatsClient.swift b/LocalPackages/NewTabPage/Sources/NewTabPage/PrivacyStats/NewTabPagePrivacyStatsClient.swift index c7a906d922..f28582afc5 100644 --- a/LocalPackages/NewTabPage/Sources/NewTabPage/PrivacyStats/NewTabPagePrivacyStatsClient.swift +++ b/LocalPackages/NewTabPage/Sources/NewTabPage/PrivacyStats/NewTabPagePrivacyStatsClient.swift @@ -34,6 +34,8 @@ public final class NewTabPagePrivacyStatsClient: NewTabPageScriptClient { case onConfigUpdate = "stats_onConfigUpdate" case onDataUpdate = "stats_onDataUpdate" case setConfig = "stats_setConfig" + case showLess = "stats_showLess" + case showMore = "stats_showMore" } public init(model: NewTabPagePrivacyStatsModel) { @@ -60,7 +62,9 @@ public final class NewTabPagePrivacyStatsClient: NewTabPageScriptClient { userScript.registerMessageHandlers([ MessageName.getConfig.rawValue: { [weak self] in try await self?.getConfig(params: $0, original: $1) }, MessageName.getData.rawValue: { [weak self] in try await self?.getData(params: $0, original: $1) }, - MessageName.setConfig.rawValue: { [weak self] in try await self?.setConfig(params: $0, original: $1) } + MessageName.setConfig.rawValue: { [weak self] in try await self?.setConfig(params: $0, original: $1) }, + MessageName.showLess.rawValue: { [weak self] in try await self?.showLess(params: $0, original: $1) }, + MessageName.showMore.rawValue: { [weak self] in try await self?.showMore(params: $0, original: $1) } ]) } @@ -94,6 +98,18 @@ public final class NewTabPagePrivacyStatsClient: NewTabPageScriptClient { private func getData(params: Any, original: WKScriptMessage) async throws -> Encodable? { return await model.calculatePrivacyStats() } + + @MainActor + private func showLess(params: Any, original: WKScriptMessage) async throws -> Encodable? { + model.showLess() + return nil + } + + @MainActor + private func showMore(params: Any, original: WKScriptMessage) async throws -> Encodable? { + model.showMore() + return nil + } } extension NewTabPagePrivacyStatsClient { diff --git a/LocalPackages/NewTabPage/Sources/NewTabPage/PrivacyStats/NewTabPagePrivacyStatsModel.swift b/LocalPackages/NewTabPage/Sources/NewTabPage/PrivacyStats/NewTabPagePrivacyStatsModel.swift index 06101bfd1c..d2aee1d6f5 100644 --- a/LocalPackages/NewTabPage/Sources/NewTabPage/PrivacyStats/NewTabPagePrivacyStatsModel.swift +++ b/LocalPackages/NewTabPage/Sources/NewTabPage/PrivacyStats/NewTabPagePrivacyStatsModel.swift @@ -17,6 +17,7 @@ // import Combine +import Common import Foundation import os.log import Persistence @@ -51,6 +52,10 @@ final class UserDefaultsNewTabPagePrivacyStatsSettingsPersistor: NewTabPagePriva } } +public enum NewTabPagePrivacyStatsEvent: Equatable { + case showLess, showMore +} + public final class NewTabPagePrivacyStatsModel { let privacyStats: PrivacyStatsCollecting @@ -65,6 +70,7 @@ public final class NewTabPagePrivacyStatsModel { private let settingsPersistor: NewTabPagePrivacyStatsSettingsPersistor private var topCompanies: Set = [] private let trackerDataProvider: PrivacyStatsTrackerDataProviding + private let eventMapping: EventMapping? private let statsUpdateSubject = PassthroughSubject() private var cancellables: Set = [] @@ -72,12 +78,14 @@ public final class NewTabPagePrivacyStatsModel { public convenience init( privacyStats: PrivacyStatsCollecting, trackerDataProvider: PrivacyStatsTrackerDataProviding, + eventMapping: EventMapping? = nil, keyValueStore: KeyValueStoring = UserDefaults.standard, getLegacyIsViewExpandedSetting: @autoclosure () -> Bool? ) { self.init( privacyStats: privacyStats, trackerDataProvider: trackerDataProvider, + eventMapping: eventMapping, settingsPersistor: UserDefaultsNewTabPagePrivacyStatsSettingsPersistor(keyValueStore, getLegacySetting: getLegacyIsViewExpandedSetting()) ) } @@ -85,10 +93,12 @@ public final class NewTabPagePrivacyStatsModel { init( privacyStats: PrivacyStatsCollecting, trackerDataProvider: PrivacyStatsTrackerDataProviding, + eventMapping: EventMapping?, settingsPersistor: NewTabPagePrivacyStatsSettingsPersistor ) { self.privacyStats = privacyStats self.trackerDataProvider = trackerDataProvider + self.eventMapping = eventMapping self.settingsPersistor = settingsPersistor isViewExpanded = settingsPersistor.isViewExpanded @@ -111,6 +121,14 @@ public final class NewTabPagePrivacyStatsModel { refreshTopCompanies() } + func showLess() { + eventMapping?.fire(.showLess) + } + + func showMore() { + eventMapping?.fire(.showMore) + } + func calculatePrivacyStats() async -> NewTabPagePrivacyStatsClient.PrivacyStatsData { let stats = await privacyStats.fetchPrivacyStats() diff --git a/LocalPackages/NewTabPage/Tests/NewTabPageTests/Mocks/CapturingNewTabPagePrivacyStatsEventHandler.swift b/LocalPackages/NewTabPage/Tests/NewTabPageTests/Mocks/CapturingNewTabPagePrivacyStatsEventHandler.swift new file mode 100644 index 0000000000..4a04042862 --- /dev/null +++ b/LocalPackages/NewTabPage/Tests/NewTabPageTests/Mocks/CapturingNewTabPagePrivacyStatsEventHandler.swift @@ -0,0 +1,43 @@ +// +// CapturingNewTabPagePrivacyStatsEventHandler.swift +// +// Copyright © 2024 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Combine +import Common +import NewTabPage + +final class CapturingNewTabPagePrivacyStatsEventHandler: EventMapping { + var events: [NewTabPagePrivacyStatsEvent] = [] + + init() { + var localEvents = PassthroughSubject() + super.init { event, _, _, _ in + localEvents.send(event) + } + + cancellable = localEvents + .sink { [weak self] value in + self?.events.append(value) + } + } + + override init(mapping: @escaping EventMapping.Mapping) { + fatalError("Use init()") + } + + private var cancellable: AnyCancellable? +} diff --git a/LocalPackages/NewTabPage/Tests/NewTabPageTests/NewTabPageNextStepsCardsClientTests.swift b/LocalPackages/NewTabPage/Tests/NewTabPageTests/NewTabPageNextStepsCardsClientTests.swift index 2d8160d72d..82acec3fc9 100644 --- a/LocalPackages/NewTabPage/Tests/NewTabPageTests/NewTabPageNextStepsCardsClientTests.swift +++ b/LocalPackages/NewTabPage/Tests/NewTabPageTests/NewTabPageNextStepsCardsClientTests.swift @@ -112,38 +112,51 @@ final class NewTabPageNextStepsCardsClientTests: XCTestCase { func testThatWillDisplayCardsPublisherIsSentAfterGetDataAndGetConfigAreCalled() async throws { model.cards = [.addAppToDockMac, .duckplayer] - try await handleMessageIgnoringResponse(named: .getData) - try await handleMessageIgnoringResponse(named: .getConfig) + + try await performAndWaitForWillDisplayCards { + try await handleMessageIgnoringResponse(named: .getData) + try await handleMessageIgnoringResponse(named: .getConfig) + } XCTAssertEqual(model.willDisplayCardsCalls, [[.addAppToDockMac, .duckplayer]]) } func testThatWillDisplayCardsPublisherIsNotSentBeforeGetConfigIsCalled() async throws { model.cards = [.addAppToDockMac, .duckplayer] - try await handleMessageIgnoringResponse(named: .getData) - try await handleMessageIgnoringResponse(named: .getData) - try await handleMessageIgnoringResponse(named: .getData) - try await handleMessageIgnoringResponse(named: .getData) - try await handleMessageIgnoringResponse(named: .getData) + + try await performAndWaitForWillDisplayCards(count: 0, timeout: 0.1) { + try await handleMessageIgnoringResponse(named: .getData) + try await handleMessageIgnoringResponse(named: .getData) + try await handleMessageIgnoringResponse(named: .getData) + try await handleMessageIgnoringResponse(named: .getData) + try await handleMessageIgnoringResponse(named: .getData) + } XCTAssertEqual(model.willDisplayCardsCalls, []) - try await handleMessageIgnoringResponse(named: .getConfig) + try await performAndWaitForWillDisplayCards { + try await handleMessageIgnoringResponse(named: .getConfig) + } XCTAssertEqual(model.willDisplayCardsCalls, [[.addAppToDockMac, .duckplayer]]) } func testThatWillDisplayCardsPublisherIsNotSentBeforeGetDataIsCalled() async throws { model.cards = [.addAppToDockMac, .duckplayer] - try await handleMessageIgnoringResponse(named: .getConfig) - try await handleMessageIgnoringResponse(named: .getConfig) - try await handleMessageIgnoringResponse(named: .getConfig) - try await handleMessageIgnoringResponse(named: .getConfig) - try await handleMessageIgnoringResponse(named: .getConfig) + + try await performAndWaitForWillDisplayCards(count: 0, timeout: 0.1) { + try await handleMessageIgnoringResponse(named: .getConfig) + try await handleMessageIgnoringResponse(named: .getConfig) + try await handleMessageIgnoringResponse(named: .getConfig) + try await handleMessageIgnoringResponse(named: .getConfig) + try await handleMessageIgnoringResponse(named: .getConfig) + } XCTAssertEqual(model.willDisplayCardsCalls, []) - try await handleMessageIgnoringResponse(named: .getData) + try await performAndWaitForWillDisplayCards { + try await handleMessageIgnoringResponse(named: .getData) + } XCTAssertEqual(model.willDisplayCardsCalls, [[.addAppToDockMac, .duckplayer]]) } @@ -153,11 +166,10 @@ final class NewTabPageNextStepsCardsClientTests: XCTestCase { model.isViewExpanded = true try await triggerInitialCardsEventAndResetMockState() - let expectation = self.expectation(description: "willDisplayCards") - model.willDisplayCardsImpl = { _ in expectation.fulfill() } + try await performAndWaitForWillDisplayCards { + model.cards = [.addAppToDockMac, .duckplayer, .bringStuff] + } - model.cards = [.addAppToDockMac, .duckplayer, .bringStuff] - await fulfillment(of: [expectation], timeout: 0.1) XCTAssertEqual(model.willDisplayCardsCalls, [[.addAppToDockMac, .duckplayer, .bringStuff]]) } @@ -166,14 +178,12 @@ final class NewTabPageNextStepsCardsClientTests: XCTestCase { model.isViewExpanded = false try await triggerInitialCardsEventAndResetMockState() - let expectation = self.expectation(description: "willDisplayCards") - expectation.expectedFulfillmentCount = 3 - model.willDisplayCardsImpl = { _ in expectation.fulfill() } + try await performAndWaitForWillDisplayCards(count: 3) { + model.cards = [.addAppToDockMac, .duckplayer, .bringStuff] + model.cards = [.duckplayer, .addAppToDockMac, .bringStuff] + model.cards = [.addAppToDockMac, .emailProtection, .duckplayer] + } - model.cards = [.addAppToDockMac, .duckplayer, .bringStuff] - model.cards = [.duckplayer, .addAppToDockMac, .bringStuff] - model.cards = [.addAppToDockMac, .emailProtection, .duckplayer] - await fulfillment(of: [expectation], timeout: 0.1) XCTAssertEqual(model.willDisplayCardsCalls, [ [.addAppToDockMac, .duckplayer], [.duckplayer, .addAppToDockMac], @@ -186,14 +196,12 @@ final class NewTabPageNextStepsCardsClientTests: XCTestCase { model.isViewExpanded = false try await triggerInitialCardsEventAndResetMockState() - let expectation = self.expectation(description: "willDisplayCards") - expectation.expectedFulfillmentCount = 2 - model.willDisplayCardsImpl = { _ in expectation.fulfill() } + try await performAndWaitForWillDisplayCards(count: 2) { + model.cards = [.addAppToDockMac, .duckplayer, .bringStuff] + model.cards = [] + model.cards = [.addAppToDockMac, .emailProtection, .duckplayer] + } - model.cards = [.addAppToDockMac, .duckplayer, .bringStuff] - model.cards = [] - model.cards = [.addAppToDockMac, .emailProtection, .duckplayer] - await fulfillment(of: [expectation], timeout: 0.1) XCTAssertEqual(model.willDisplayCardsCalls, [ [.addAppToDockMac, .duckplayer], [.addAppToDockMac, .emailProtection] @@ -205,11 +213,10 @@ final class NewTabPageNextStepsCardsClientTests: XCTestCase { model.isViewExpanded = false try await triggerInitialCardsEventAndResetMockState() - let expectation = self.expectation(description: "willDisplayCards") - model.willDisplayCardsImpl = { _ in expectation.fulfill() } + try await performAndWaitForWillDisplayCards { + model.isViewExpanded = true + } - model.isViewExpanded = true - await fulfillment(of: [expectation], timeout: 0.1) XCTAssertEqual(model.willDisplayCardsCalls, [[.emailProtection, .bringStuff, .defaultApp]]) } @@ -218,12 +225,10 @@ final class NewTabPageNextStepsCardsClientTests: XCTestCase { model.isViewExpanded = false try await triggerInitialCardsEventAndResetMockState() - let expectation = self.expectation(description: "willDisplayCards") - expectation.isInverted = true - model.willDisplayCardsImpl = { _ in expectation.fulfill() } + try await performAndWaitForWillDisplayCards(count: 0, timeout: 0.5) { + model.isViewExpanded = true + } - model.isViewExpanded = true - await fulfillment(of: [expectation], timeout: 0.1) XCTAssertEqual(model.willDisplayCardsCalls, []) } @@ -232,23 +237,41 @@ final class NewTabPageNextStepsCardsClientTests: XCTestCase { model.isViewExpanded = true try await triggerInitialCardsEventAndResetMockState() - let expectation = self.expectation(description: "willDisplayCards") - expectation.isInverted = true - model.willDisplayCardsImpl = { _ in expectation.fulfill() } + try await performAndWaitForWillDisplayCards(count: 0, timeout: 0.5) { + model.isViewExpanded = false + } - model.isViewExpanded = false - await fulfillment(of: [expectation], timeout: 0.1) XCTAssertEqual(model.willDisplayCardsCalls, []) } // MARK: - Helper functions func triggerInitialCardsEventAndResetMockState() async throws { - try await handleMessageIgnoringResponse(named: .getConfig) - try await handleMessageIgnoringResponse(named: .getData) + try await performAndWaitForWillDisplayCards { + try await handleMessageIgnoringResponse(named: .getConfig) + try await handleMessageIgnoringResponse(named: .getData) + } model.willDisplayCardsCalls = [] } + func performAndWaitForWillDisplayCards(count expectedCount: Int = 1, timeout: TimeInterval = 0.1, _ block: () async throws -> Void) async throws { + let originalImpl = model.willDisplayCardsImpl + + let expectation = self.expectation(description: "willDisplayCards_waitForWillDisplayCards") + if expectedCount == 0 { + expectation.isInverted = true + } else { + expectation.expectedFulfillmentCount = expectedCount + } + model.willDisplayCardsImpl = { _ in expectation.fulfill() } + + try await block() + + await fulfillment(of: [expectation], timeout: timeout) + + model.willDisplayCardsImpl = originalImpl + } + func handleMessage(named methodName: NewTabPageNextStepsCardsClient.MessageName, parameters: Any = [], file: StaticString = #file, line: UInt = #line) async throws -> Response { let handler = try XCTUnwrap(userScript.handler(forMethodNamed: methodName.rawValue), file: file, line: line) let response = try await handler(NewTabPageTestsHelper.asJSON(parameters), .init()) diff --git a/LocalPackages/NewTabPage/Tests/NewTabPageTests/NewTabPagePrivacyStatsClientTests.swift b/LocalPackages/NewTabPage/Tests/NewTabPageTests/NewTabPagePrivacyStatsClientTests.swift index 992a7548ec..3202f76922 100644 --- a/LocalPackages/NewTabPage/Tests/NewTabPageTests/NewTabPagePrivacyStatsClientTests.swift +++ b/LocalPackages/NewTabPage/Tests/NewTabPageTests/NewTabPagePrivacyStatsClientTests.swift @@ -29,6 +29,7 @@ final class NewTabPagePrivacyStatsClientTests: XCTestCase { var privacyStats: CapturingPrivacyStats! var trackerDataProvider: MockPrivacyStatsTrackerDataProvider! + var eventMapping: CapturingNewTabPagePrivacyStatsEventHandler! var settingsPersistor: UserDefaultsNewTabPagePrivacyStatsSettingsPersistor! var userScript: NewTabPageUserScript! @@ -38,11 +39,13 @@ final class NewTabPagePrivacyStatsClientTests: XCTestCase { privacyStats = CapturingPrivacyStats() trackerDataProvider = MockPrivacyStatsTrackerDataProvider() + eventMapping = CapturingNewTabPagePrivacyStatsEventHandler() settingsPersistor = UserDefaultsNewTabPagePrivacyStatsSettingsPersistor(MockKeyValueStore(), getLegacySetting: nil) model = NewTabPagePrivacyStatsModel( privacyStats: privacyStats, trackerDataProvider: trackerDataProvider, + eventMapping: eventMapping, settingsPersistor: settingsPersistor ) @@ -99,6 +102,7 @@ final class NewTabPagePrivacyStatsClientTests: XCTestCase { model = NewTabPagePrivacyStatsModel( privacyStats: privacyStats, trackerDataProvider: trackerDataProvider, + eventMapping: eventMapping, settingsPersistor: settingsPersistor ) privacyStats.privacyStats = ["A": 1, "B": 2, "C": 3, "D": 4, "E": 1500, "F": 100, "G": 900] @@ -123,6 +127,20 @@ final class NewTabPagePrivacyStatsClientTests: XCTestCase { XCTAssertEqual(data, .init(totalCount: 0, trackerCompanies: [])) } + // MARK: - showLess + + func testThatShowLessIsPassedToTheModelAndToTheEventMapping() async throws { + try await handleMessageExpectingNilResponse(named: .showLess) + XCTAssertEqual(eventMapping.events, [.showLess]) + } + + // MARK: - showMore + + func testThatShowMoreIsPassedToTheModelAndToTheEventMapping() async throws { + try await handleMessageExpectingNilResponse(named: .showMore) + XCTAssertEqual(eventMapping.events, [.showMore]) + } + // MARK: - Helper functions func handleMessage(named methodName: NewTabPagePrivacyStatsClient.MessageName, parameters: Any = [], file: StaticString = #file, line: UInt = #line) async throws -> Response { diff --git a/LocalPackages/NewTabPage/Tests/NewTabPageTests/NewTabPagePrivacyStatsModelTests.swift b/LocalPackages/NewTabPage/Tests/NewTabPageTests/NewTabPagePrivacyStatsModelTests.swift index 3f1b450d2f..fc4d46e4db 100644 --- a/LocalPackages/NewTabPage/Tests/NewTabPageTests/NewTabPagePrivacyStatsModelTests.swift +++ b/LocalPackages/NewTabPage/Tests/NewTabPageTests/NewTabPagePrivacyStatsModelTests.swift @@ -81,6 +81,7 @@ final class NewTabPagePrivacyStatsModelTests: XCTestCase { model = NewTabPagePrivacyStatsModel( privacyStats: privacyStats, trackerDataProvider: trackerDataProvider, + eventMapping: nil, settingsPersistor: settingsPersistor ) } @@ -106,6 +107,7 @@ final class NewTabPagePrivacyStatsModelTests: XCTestCase { model = NewTabPagePrivacyStatsModel( privacyStats: privacyStats, trackerDataProvider: trackerDataProvider, + eventMapping: nil, settingsPersistor: settingsPersistor ) @@ -135,6 +137,7 @@ final class NewTabPagePrivacyStatsModelTests: XCTestCase { model = NewTabPagePrivacyStatsModel( privacyStats: privacyStats, trackerDataProvider: trackerDataProvider, + eventMapping: nil, settingsPersistor: settingsPersistor ) diff --git a/UnitTests/NewTabPage/NewTabPageNextStepsCardsProviderTests.swift b/UnitTests/NewTabPage/NewTabPageNextStepsCardsProviderTests.swift new file mode 100644 index 0000000000..4b9f30a79a --- /dev/null +++ b/UnitTests/NewTabPage/NewTabPageNextStepsCardsProviderTests.swift @@ -0,0 +1,121 @@ +// +// NewTabPageNextStepsCardsProviderTests.swift +// +// Copyright © 2024 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import BrowserServicesKit +import Combine +import NewTabPage +import XCTest +@testable import DuckDuckGo_Privacy_Browser + +final class NewTabPageNextStepsCardsProviderTests: XCTestCase { + var provider: NewTabPageNextStepsCardsProvider! + + @MainActor + override func setUp() async throws { + let privacyConfigManager = MockPrivacyConfigurationManager() + let config = MockPrivacyConfiguration() + privacyConfigManager.privacyConfig = config + + let continueSetUpModel = HomePage.Models.ContinueSetUpModel( + defaultBrowserProvider: CapturingDefaultBrowserProvider(), + dockCustomizer: DockCustomizerMock(), + dataImportProvider: CapturingDataImportProvider(), + tabOpener: TabCollectionViewModelTabOpener(tabCollectionViewModel: TabCollectionViewModel()), + emailManager: EmailManager(storage: MockEmailStorage()), + duckPlayerPreferences: DuckPlayerPreferencesPersistorMock(), + privacyConfigurationManager: privacyConfigManager + ) + + provider = NewTabPageNextStepsCardsProvider( + continueSetUpModel: continueSetUpModel, + appearancePreferences: AppearancePreferences(persistor: MockAppearancePreferencesPersistor()) + ) + } + + func testWhenCardsViewIsNotOutdatedThenCardsAreReportedByModel() { + provider.appearancePreferences.isContinueSetUpCardsViewOutdated = false + provider.continueSetUpModel.featuresMatrix = [[.defaultBrowser, .dock, .emailProtection]] + + XCTAssertEqual(provider.cards, [.defaultApp, .addAppToDockMac, .emailProtection]) + } + + func testWhenCardsViewIsOutdatedThenCardsAreEmpty() { + provider.appearancePreferences.isContinueSetUpCardsViewOutdated = true + provider.continueSetUpModel.featuresMatrix = [[.defaultBrowser, .dock, .emailProtection]] + + XCTAssertEqual(provider.cards, []) + } + + func testWhenCardsViewIsNotOutdatedThenCardsAreEmitted() { + provider.appearancePreferences.isContinueSetUpCardsViewOutdated = false + provider.continueSetUpModel.featuresMatrix = [[.defaultBrowser]] + + var cardsEvents = [[NewTabPageNextStepsCardsClient.CardID]]() + + let cancellable = provider.cardsPublisher + .sink { cards in + cardsEvents.append(cards) + } + + provider.continueSetUpModel.featuresMatrix = [[.dock]] + provider.continueSetUpModel.featuresMatrix = [[.dock, .duckplayer]] + provider.continueSetUpModel.featuresMatrix = [[.defaultBrowser]] + + cancellable.cancel() + XCTAssertEqual(cardsEvents, [[.addAppToDockMac], [.addAppToDockMac, .duckplayer], [.defaultApp]]) + } + + func testWhenCardsViewIsOutdatedThenEmptyCardsAreEmitted() { + provider.appearancePreferences.isContinueSetUpCardsViewOutdated = true + provider.continueSetUpModel.featuresMatrix = [[.defaultBrowser]] + + var cardsEvents = [[NewTabPageNextStepsCardsClient.CardID]]() + + let cancellable = provider.cardsPublisher + .sink { cards in + cardsEvents.append(cards) + } + + provider.continueSetUpModel.featuresMatrix = [[.dock]] + provider.continueSetUpModel.featuresMatrix = [[.duckplayer]] + provider.continueSetUpModel.featuresMatrix = [[.defaultBrowser]] + + cancellable.cancel() + XCTAssertEqual(cardsEvents, [[], [], []]) + } + + func testWhenCardsViewBecomesOutdatedThenCardsStopBeingEmitted() { + provider.appearancePreferences.isContinueSetUpCardsViewOutdated = false + provider.continueSetUpModel.featuresMatrix = [[.defaultBrowser]] + + var cardsEvents = [[NewTabPageNextStepsCardsClient.CardID]]() + + let cancellable = provider.cardsPublisher + .sink { cards in + cardsEvents.append(cards) + } + + provider.continueSetUpModel.featuresMatrix = [[.dock]] + provider.continueSetUpModel.featuresMatrix = [[.dock, .duckplayer]] + provider.appearancePreferences.isContinueSetUpCardsViewOutdated = true + provider.continueSetUpModel.featuresMatrix = [[.defaultBrowser]] + + cancellable.cancel() + XCTAssertEqual(cardsEvents, [[.addAppToDockMac], [.addAppToDockMac, .duckplayer], [], []]) + } +} From b393d48fa7424fbfbe6cd6e7dfc8b080deafa2da Mon Sep 17 00:00:00 2001 From: Dominik Kapusta Date: Wed, 11 Dec 2024 21:18:20 +0100 Subject: [PATCH 03/10] Look up lowercased URLs in lowercased items dict (#3658) Task/Issue URL: https://app.asana.com/0/1201037661562251/1208943052282180/f Description: This change fixes looking up bookmarks in the lowercased items dictionary by also lowercasing the URL in question. --- DuckDuckGo/Bookmarks/Model/BookmarkManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DuckDuckGo/Bookmarks/Model/BookmarkManager.swift b/DuckDuckGo/Bookmarks/Model/BookmarkManager.swift index e451829b0b..5cc49ffc78 100644 --- a/DuckDuckGo/Bookmarks/Model/BookmarkManager.swift +++ b/DuckDuckGo/Bookmarks/Model/BookmarkManager.swift @@ -187,7 +187,7 @@ final class LocalBookmarkManager: BookmarkManager { } for variant in url.bookmarkButtonUrlVariants() { - let variantString = variant.absoluteString + let variantString = variant.absoluteString.lowercased() if let bookmark = list.lowercasedItemsDict[variantString]?.first { return bookmark } From c9ca138bcccb4e36f947f8189daea336b36e2a64 Mon Sep 17 00:00:00 2001 From: Anka Date: Thu, 12 Dec 2024 05:18:36 +0000 Subject: [PATCH 04/10] Bump version to 1.118.0 (327) --- Configuration/BuildNumber.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Configuration/BuildNumber.xcconfig b/Configuration/BuildNumber.xcconfig index 7bd3b6a8f1..6000f1fbc5 100644 --- a/Configuration/BuildNumber.xcconfig +++ b/Configuration/BuildNumber.xcconfig @@ -1 +1 @@ -CURRENT_PROJECT_VERSION = 326 +CURRENT_PROJECT_VERSION = 327 From f79b2022e51eef7060408da75333c3347b888d69 Mon Sep 17 00:00:00 2001 From: Dominik Kapusta Date: Thu, 12 Dec 2024 10:06:44 +0100 Subject: [PATCH 05/10] Replace NewTabPage tests folder reference with an Xcode file group (#3662) Task/Issue URL: https://app.asana.com/0/1201037661562251/1208963146868222/f Description: This is to maintain compatibility with old Xcode versions to run UI tests. --- DuckDuckGo.xcodeproj/project.pbxproj | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 673129133f..cf58d27928 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 70; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -1188,6 +1188,8 @@ 3776582D27F71652009A6B35 /* WebsiteBreakageReportTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3776582C27F71652009A6B35 /* WebsiteBreakageReportTests.swift */; }; 3776582F27F82E62009A6B35 /* AutofillPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3776582E27F82E62009A6B35 /* AutofillPreferences.swift */; }; 3776583127F8325B009A6B35 /* AutofillPreferencesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3776583027F8325B009A6B35 /* AutofillPreferencesTests.swift */; }; + 377D7BC12D0AC7E000ADFD06 /* NewTabPageNextStepsCardsProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377D7BC02D0AC7E000ADFD06 /* NewTabPageNextStepsCardsProviderTests.swift */; }; + 377D7BC22D0AC7E000ADFD06 /* NewTabPageNextStepsCardsProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377D7BC02D0AC7E000ADFD06 /* NewTabPageNextStepsCardsProviderTests.swift */; }; 377D801C2AB47FBB002AF251 /* FavoritesDisplayModeSyncHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377D801B2AB47FBB002AF251 /* FavoritesDisplayModeSyncHandler.swift */; }; 377D801F2AB48191002AF251 /* FavoritesDisplayModeSyncHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377D801B2AB47FBB002AF251 /* FavoritesDisplayModeSyncHandler.swift */; }; 378205F62837CBA800D1D4AA /* SavedStateMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 378205F52837CBA800D1D4AA /* SavedStateMock.swift */; }; @@ -3693,6 +3695,7 @@ 3776582C27F71652009A6B35 /* WebsiteBreakageReportTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebsiteBreakageReportTests.swift; sourceTree = ""; }; 3776582E27F82E62009A6B35 /* AutofillPreferences.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutofillPreferences.swift; sourceTree = ""; }; 3776583027F8325B009A6B35 /* AutofillPreferencesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutofillPreferencesTests.swift; sourceTree = ""; }; + 377D7BC02D0AC7E000ADFD06 /* NewTabPageNextStepsCardsProviderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewTabPageNextStepsCardsProviderTests.swift; sourceTree = ""; }; 377D801B2AB47FBB002AF251 /* FavoritesDisplayModeSyncHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoritesDisplayModeSyncHandler.swift; sourceTree = ""; }; 377E54382937B7C400780A0A /* DuckDuckGoAppStoreCI.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DuckDuckGoAppStoreCI.entitlements; sourceTree = ""; }; 378205F52837CBA800D1D4AA /* SavedStateMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SavedStateMock.swift; sourceTree = ""; }; @@ -5000,10 +5003,6 @@ FD23FD2C2886A81D007F6985 /* AutoconsentManagement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoconsentManagement.swift; sourceTree = ""; }; /* End PBXFileReference section */ -/* Begin PBXFileSystemSynchronizedRootGroup section */ - 3792D51A2D09C72200FC15D6 /* NewTabPage */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = NewTabPage; sourceTree = ""; }; -/* End PBXFileSystemSynchronizedRootGroup section */ - /* Begin PBXFrameworksBuildPhase section */ 3706FCA6293F65D500E42796 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; @@ -5876,6 +5875,14 @@ path = WebsiteBreakageReport; sourceTree = ""; }; + 377D7BC32D0AC7F100ADFD06 /* NewTabPage */ = { + isa = PBXGroup; + children = ( + 377D7BC02D0AC7E000ADFD06 /* NewTabPageNextStepsCardsProviderTests.swift */, + ); + path = NewTabPage; + sourceTree = ""; + }; 377D801A2AB47FA1002AF251 /* SettingSyncHandlers */ = { isa = PBXGroup; children = ( @@ -8039,7 +8046,7 @@ 1D3B1AB7293405F5006F4388 /* PasswordManagers */, B6106BA126A7BE430013B453 /* Permissions */, CD34F0BE2C886462006826BE /* MaliciousSiteProtection */, - 3792D51A2D09C72200FC15D6 /* NewTabPage */, + 377D7BC32D0AC7F100ADFD06 /* NewTabPage */, 37D2377E287EFECD00BCE03B /* PinnedTabs */, 4B0511EE262CAEB300F6079C /* Preferences */, 31E163BB293A577200963C10 /* PrivacyReferenceTests */, @@ -9980,9 +9987,6 @@ B6AEB5552BA3042300781A09 /* PBXTargetDependency */, 37079A93294236F20031BB3C /* PBXTargetDependency */, ); - fileSystemSynchronizedGroups = ( - 3792D51A2D09C72200FC15D6 /* NewTabPage */, - ); name = "Unit Tests App Store"; packageProductDependencies = ( 3706FDD6293F661700E42796 /* OHHTTPStubs */, @@ -10470,9 +10474,6 @@ B6E6BA1D2BA2E049008AA7E1 /* PBXTargetDependency */, B6CAC23D2B8F0EC6006CD402 /* PBXTargetDependency */, ); - fileSystemSynchronizedGroups = ( - 3792D51A2D09C72200FC15D6 /* NewTabPage */, - ); name = "Unit Tests"; packageProductDependencies = ( B6DA44162616C13800DD1EC2 /* OHHTTPStubs */, @@ -12400,6 +12401,7 @@ B6619F042B17123200CD9186 /* DataImportViewModelTests.swift in Sources */, 1D8C2FE62B70F4C4005E4BBD /* TabSnapshotExtensionTests.swift in Sources */, 3706FE40293F661700E42796 /* BWResponseTests.swift in Sources */, + 377D7BC12D0AC7E000ADFD06 /* NewTabPageNextStepsCardsProviderTests.swift in Sources */, 3706FE41293F661700E42796 /* DownloadListCoordinatorTests.swift in Sources */, 986189E72A7CFB3E001B4519 /* LocalBookmarkStoreSavingTests.swift in Sources */, 3706FE42293F661700E42796 /* BWMessageIdGeneratorTests.swift in Sources */, @@ -13959,6 +13961,7 @@ 1D77921A28FDC79800BE0210 /* FaviconStoringMock.swift in Sources */, 1D1C36E629FB019C001FA40C /* HistoryTabExtensionTests.swift in Sources */, 1D9FDEBD2B9B5F0F0040B78C /* CookiePopupProtectionPreferencesTests.swift in Sources */, + 377D7BC22D0AC7E000ADFD06 /* NewTabPageNextStepsCardsProviderTests.swift in Sources */, 7B09CBA92BA4BE8100CF245B /* NetworkProtectionPixelEventTests.swift in Sources */, B6DA441E2616C84600DD1EC2 /* PixelStoreMock.swift in Sources */, 4B434690285ED7A100177407 /* BookmarksBarViewModelTests.swift in Sources */, From 2c39b16f939b1a8ac9058ccbb952ec8923653a15 Mon Sep 17 00:00:00 2001 From: Michal Smaga Date: Thu, 12 Dec 2024 14:14:27 +0100 Subject: [PATCH 06/10] Add 'locale' to report broken site params (#3661) Task/Issue URL: https://app.asana.com/0/414709148257752/1208827075841585/f **Description**: Add the "locale" param ID to the list of properties submitted in the Privacy Dashboard site breakage form. **Steps to test this PR**: To force report broken site form to be shown every time you can change https://github.com/duckduckgo/BrowserServicesKit/blob/b7f7ba99f7c77b576679eee426ddd80320dc74d8/Sources/PrivacyDashboard/ToggleReportingManager.swift#L104 to always return `true` 1. Open some website. 2. Wait until it completes loading. 3. Open Privacy Dashboard 4. Disable the protections 5. When the report broken site prompt is shown select "See what's sent" 6. Ensure the "Primary language and country of your device" string is shown **Definition of Done**: * [ ] Does this PR satisfy our [Definition of Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)? --- ###### Internal references: [Pull Request Review Checklist](https://app.asana.com/0/1202500774821704/1203764234894239/f) [Software Engineering Expectations](https://app.asana.com/0/59792373528535/199064865822552) [Technical Design Template](https://app.asana.com/0/59792373528535/184709971311943) [Pull Request Documentation](https://app.asana.com/0/1202500774821704/1204012835277482/f) --- DuckDuckGo.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/swiftpm/Package.resolved | 6 +++--- LocalPackages/DataBrokerProtection/Package.swift | 2 +- LocalPackages/FeatureFlags/Package.swift | 2 +- LocalPackages/NetworkProtectionMac/Package.swift | 2 +- LocalPackages/NewTabPage/Package.swift | 2 +- LocalPackages/SubscriptionUI/Package.swift | 2 +- LocalPackages/WebKitExtensions/Package.swift | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 7c016b4d53..1024d7bf6a 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -15225,7 +15225,7 @@ repositoryURL = "https://github.com/duckduckgo/BrowserServicesKit"; requirement = { kind = exactVersion; - version = 219.0.0; + version = "219.0.0-1"; }; }; 9FF521422BAA8FF300B9819B /* XCRemoteSwiftPackageReference "lottie-spm" */ = { diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index c4973281c3..93d855804a 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -32,8 +32,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/duckduckgo/BrowserServicesKit", "state" : { - "revision" : "20df9e22d5a69acfc25204fb0228a9d6f79b721f", - "version" : "219.0.0" + "revision" : "155b47e287dfc9d5edb25b10da0bac8e638d08b7", + "version" : "219.0.0-1" } }, { @@ -75,7 +75,7 @@ { "identity" : "lottie-spm", "kind" : "remoteSourceControl", - "location" : "https://github.com/airbnb/lottie-spm", + "location" : "https://github.com/airbnb/lottie-spm.git", "state" : { "revision" : "1d29eccc24cc8b75bff9f6804155112c0ffc9605", "version" : "4.4.3" diff --git a/LocalPackages/DataBrokerProtection/Package.swift b/LocalPackages/DataBrokerProtection/Package.swift index 813b7f606f..6c3dc6bd8a 100644 --- a/LocalPackages/DataBrokerProtection/Package.swift +++ b/LocalPackages/DataBrokerProtection/Package.swift @@ -29,7 +29,7 @@ let package = Package( targets: ["DataBrokerProtection"]) ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "219.0.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "219.0.0-1"), .package(path: "../SwiftUIExtensions"), .package(path: "../AppKitExtensions"), .package(path: "../XPCHelper"), diff --git a/LocalPackages/FeatureFlags/Package.swift b/LocalPackages/FeatureFlags/Package.swift index 2b57bc171b..a5a35dfa62 100644 --- a/LocalPackages/FeatureFlags/Package.swift +++ b/LocalPackages/FeatureFlags/Package.swift @@ -32,7 +32,7 @@ let package = Package( targets: ["FeatureFlags"]), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "219.0.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "219.0.0-1"), ], targets: [ // Targets are the basic building blocks of a package, defining a module or a test suite. diff --git a/LocalPackages/NetworkProtectionMac/Package.swift b/LocalPackages/NetworkProtectionMac/Package.swift index 9ab57f1d6f..6c1b3b7f9b 100644 --- a/LocalPackages/NetworkProtectionMac/Package.swift +++ b/LocalPackages/NetworkProtectionMac/Package.swift @@ -32,7 +32,7 @@ let package = Package( .library(name: "VPNAppLauncher", targets: ["VPNAppLauncher"]), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "219.0.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "219.0.0-1"), .package(url: "https://github.com/airbnb/lottie-spm", exact: "4.4.3"), .package(path: "../AppLauncher"), .package(path: "../UDSHelper"), diff --git a/LocalPackages/NewTabPage/Package.swift b/LocalPackages/NewTabPage/Package.swift index 02924a48b4..3d71acd348 100644 --- a/LocalPackages/NewTabPage/Package.swift +++ b/LocalPackages/NewTabPage/Package.swift @@ -32,7 +32,7 @@ let package = Package( targets: ["NewTabPage"]), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "219.0.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "219.0.0-1"), .package(path: "../WebKitExtensions"), .package(path: "../Utilities"), ], diff --git a/LocalPackages/SubscriptionUI/Package.swift b/LocalPackages/SubscriptionUI/Package.swift index e64dd47a92..93e6c195f5 100644 --- a/LocalPackages/SubscriptionUI/Package.swift +++ b/LocalPackages/SubscriptionUI/Package.swift @@ -12,7 +12,7 @@ let package = Package( targets: ["SubscriptionUI"]), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "219.0.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "219.0.0-1"), .package(path: "../SwiftUIExtensions"), .package(path: "../FeatureFlags") ], diff --git a/LocalPackages/WebKitExtensions/Package.swift b/LocalPackages/WebKitExtensions/Package.swift index bd31727089..d78c05fe7c 100644 --- a/LocalPackages/WebKitExtensions/Package.swift +++ b/LocalPackages/WebKitExtensions/Package.swift @@ -32,7 +32,7 @@ let package = Package( ), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "219.0.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "219.0.0-1"), .package(path: "../AppKitExtensions") ], targets: [ From 880e0650c9f8c74018f8ca38ad1791c5a9127ba0 Mon Sep 17 00:00:00 2001 From: Michal Smaga Date: Thu, 12 Dec 2024 14:37:41 +0100 Subject: [PATCH 07/10] Update BSK to latest (#3663) Task/Issue URL: https://app.asana.com/0/414235014887631/1208827075841585/f Description: Add 'locale' to report broken site params was merged in to https://github.com/duckduckgo/macos-browser/tree/release/1.118.0 in a BSK hotfix release. This PR updates BSK to latest to introduce this change on main. --- DuckDuckGo.xcodeproj/project.pbxproj | 2 +- .../project.xcworkspace/xcshareddata/swiftpm/Package.resolved | 4 ++-- LocalPackages/DataBrokerProtection/Package.swift | 2 +- LocalPackages/FeatureFlags/Package.swift | 2 +- LocalPackages/NetworkProtectionMac/Package.swift | 2 +- LocalPackages/NewTabPage/Package.swift | 2 +- LocalPackages/SubscriptionUI/Package.swift | 2 +- LocalPackages/WebKitExtensions/Package.swift | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index cf58d27928..55204f53b3 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -15269,7 +15269,7 @@ repositoryURL = "https://github.com/duckduckgo/BrowserServicesKit"; requirement = { kind = exactVersion; - version = 221.1.0; + version = 221.2.0; }; }; 9FF521422BAA8FF300B9819B /* XCRemoteSwiftPackageReference "lottie-spm" */ = { diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index c6ef277727..1a510042d1 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -32,8 +32,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/duckduckgo/BrowserServicesKit", "state" : { - "revision" : "e8654e1a51bd20fa8fa234a4155a9aec37411ed1", - "version" : "221.1.0" + "revision" : "08c3dca42c5f943d45136823f264ba14bbcc0eb9", + "version" : "221.2.0" } }, { diff --git a/LocalPackages/DataBrokerProtection/Package.swift b/LocalPackages/DataBrokerProtection/Package.swift index 7d8adea3d8..352ee30868 100644 --- a/LocalPackages/DataBrokerProtection/Package.swift +++ b/LocalPackages/DataBrokerProtection/Package.swift @@ -29,7 +29,7 @@ let package = Package( targets: ["DataBrokerProtection"]) ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.1.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.2.0"), .package(path: "../SwiftUIExtensions"), .package(path: "../AppKitExtensions"), .package(path: "../XPCHelper"), diff --git a/LocalPackages/FeatureFlags/Package.swift b/LocalPackages/FeatureFlags/Package.swift index 000bb3497b..8ffaa70712 100644 --- a/LocalPackages/FeatureFlags/Package.swift +++ b/LocalPackages/FeatureFlags/Package.swift @@ -32,7 +32,7 @@ let package = Package( targets: ["FeatureFlags"]), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.1.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.2.0"), ], targets: [ // Targets are the basic building blocks of a package, defining a module or a test suite. diff --git a/LocalPackages/NetworkProtectionMac/Package.swift b/LocalPackages/NetworkProtectionMac/Package.swift index 67e3ae8726..7dafb31ba2 100644 --- a/LocalPackages/NetworkProtectionMac/Package.swift +++ b/LocalPackages/NetworkProtectionMac/Package.swift @@ -32,7 +32,7 @@ let package = Package( .library(name: "VPNAppLauncher", targets: ["VPNAppLauncher"]), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.1.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.2.0"), .package(url: "https://github.com/airbnb/lottie-spm", exact: "4.4.3"), .package(path: "../AppLauncher"), .package(path: "../UDSHelper"), diff --git a/LocalPackages/NewTabPage/Package.swift b/LocalPackages/NewTabPage/Package.swift index 9a0ffd2954..ccfbf1910f 100644 --- a/LocalPackages/NewTabPage/Package.swift +++ b/LocalPackages/NewTabPage/Package.swift @@ -32,7 +32,7 @@ let package = Package( targets: ["NewTabPage"]), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.1.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.2.0"), .package(path: "../WebKitExtensions"), .package(path: "../Utilities"), ], diff --git a/LocalPackages/SubscriptionUI/Package.swift b/LocalPackages/SubscriptionUI/Package.swift index b2ca03fa7b..59d5f9b844 100644 --- a/LocalPackages/SubscriptionUI/Package.swift +++ b/LocalPackages/SubscriptionUI/Package.swift @@ -12,7 +12,7 @@ let package = Package( targets: ["SubscriptionUI"]), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.1.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.2.0"), .package(path: "../SwiftUIExtensions"), .package(path: "../FeatureFlags") ], diff --git a/LocalPackages/WebKitExtensions/Package.swift b/LocalPackages/WebKitExtensions/Package.swift index b73bc0b6b9..4f0397c114 100644 --- a/LocalPackages/WebKitExtensions/Package.swift +++ b/LocalPackages/WebKitExtensions/Package.swift @@ -32,7 +32,7 @@ let package = Package( ), ], dependencies: [ - .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.1.0"), + .package(url: "https://github.com/duckduckgo/BrowserServicesKit", exact: "221.2.0"), .package(path: "../AppKitExtensions") ], targets: [ From bd4493f8228d8cee26e67bf52813fca104974b61 Mon Sep 17 00:00:00 2001 From: Michal Smaga Date: Thu, 12 Dec 2024 16:18:58 +0100 Subject: [PATCH 08/10] Update Privacy Pro translations (#3656) Task/Issue URL: https://app.asana.com/0/0/1208750072186506/f CC: @SabrinaTardio **Description**: Update Privacy Pro and VPN related translations. **Optional E2E tests**: - [ ] Run PIR E2E tests Check this to run the Personal Information Removal end to end tests. If updating CCF, or any PIR related code, tick this. **Steps to test this PR**: Change preferred language for the app and verify completeness for: - Privacy Pro settings when not signed in - Privacy Pro settings when signed in - VPN settings and popover views **Definition of Done**: * [ ] Does this PR satisfy our [Definition of Done](https://app.asana.com/0/1202500774821704/1207634633537039/f)? --- ###### Internal references: [Pull Request Review Checklist](https://app.asana.com/0/1202500774821704/1203764234894239/f) [Software Engineering Expectations](https://app.asana.com/0/59792373528535/199064865822552) [Technical Design Template](https://app.asana.com/0/59792373528535/184709971311943) [Pull Request Documentation](https://app.asana.com/0/1202500774821704/1204012835277482/f) --------- Co-authored-by: Sam Symons --- DuckDuckGo.xcodeproj/project.pbxproj | 36 +- .../Common/Localizables/UserText+DBP.swift | 12 +- .../UserText+NetworkProtection+Shared.swift | 58 + .../UserText+NetworkProtection.swift | 489 +- DuckDuckGo/Common/Localizables/UserText.swift | 20 +- DuckDuckGo/Localizable.xcstrings | 17946 +++++++++++----- ...etworkProtectionNavBarPopoverManager.swift | 6 +- .../DefaultVPNLocationFormatter.swift | 8 +- .../Localizable.xcstrings | 726 + DuckDuckGoDBPBackgroundAgent/UserText.swift | 4 +- DuckDuckGoVPN/Localizable.xcstrings | 726 + .../NetworkProtectionMac/Package.swift | 5 +- .../UserText+NetworkProtectionUI.swift | 124 +- .../Resources/Localizable.xcstrings | 3724 ++++ .../ReportSiteIssuesView.swift | 17 +- .../SiteTroubleshootingView.swift | 4 +- .../TipViews/Model/VPNAutoconnectTip.swift | 6 +- .../Model/VPNDomainExclusionsTip.swift | 4 +- .../TipViews/Model/VPNGeoswitchingTip.swift | 4 +- LocalPackages/SubscriptionUI/Package.swift | 3 +- .../DebugMenu/DebugPurchaseView.swift | 8 +- .../PreferencesSubscriptionModel.swift | 13 +- .../Resources/Localizable.xcstrings | 4376 ++++ .../Sources/SubscriptionUI/UserText.swift | 187 +- scripts/loc_export.sh | 6 +- 25 files changed, 22983 insertions(+), 5529 deletions(-) create mode 100644 DuckDuckGo/Common/Localizables/UserText+NetworkProtection+Shared.swift create mode 100644 DuckDuckGo/NetworkProtection/NetworkExtensionTargets/NetworkExtensionAndNotificationTargets/Localizable.xcstrings create mode 100644 DuckDuckGoVPN/Localizable.xcstrings create mode 100644 LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Resources/Localizable.xcstrings create mode 100644 LocalPackages/SubscriptionUI/Sources/SubscriptionUI/Resources/Localizable.xcstrings diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 1024d7bf6a..a58ac9ca2a 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -218,6 +218,15 @@ 1EA7B8D52B7E078C000330A4 /* Subscription in Frameworks */ = {isa = PBXBuildFile; productRef = 1EA7B8D42B7E078C000330A4 /* Subscription */; }; 1EB028332C91C754005343F6 /* Common in Frameworks */ = {isa = PBXBuildFile; productRef = 1EB028322C91C754005343F6 /* Common */; }; 1EB028352C91C75A005343F6 /* Common in Frameworks */ = {isa = PBXBuildFile; productRef = 1EB028342C91C75A005343F6 /* Common */; }; + 1EC711502D033D200009EB5C /* UserText+NetworkProtection+Shared.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EC7114F2D033D200009EB5C /* UserText+NetworkProtection+Shared.swift */; }; + 1EC711512D033D200009EB5C /* UserText+NetworkProtection+Shared.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EC7114F2D033D200009EB5C /* UserText+NetworkProtection+Shared.swift */; }; + 1EC711522D033D280009EB5C /* UserText+NetworkProtection+Shared.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EC7114F2D033D200009EB5C /* UserText+NetworkProtection+Shared.swift */; }; + 1EC711532D033D280009EB5C /* UserText+NetworkProtection+Shared.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EC7114F2D033D200009EB5C /* UserText+NetworkProtection+Shared.swift */; }; + 1EC711552D03421B0009EB5C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 1EC711542D03421B0009EB5C /* Localizable.xcstrings */; }; + 1EC711562D03421B0009EB5C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 1EC711542D03421B0009EB5C /* Localizable.xcstrings */; }; + 1EC711582D035BC30009EB5C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 1EC711572D035BC30009EB5C /* Localizable.xcstrings */; }; + 1EC711592D035BC30009EB5C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 1EC711572D035BC30009EB5C /* Localizable.xcstrings */; }; + 1EC7115A2D035BC30009EB5C /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 1EC711572D035BC30009EB5C /* Localizable.xcstrings */; }; 1ED910D52B63BFB300936947 /* IdentityTheftRestorationPagesUserScript.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ED910D42B63BFB300936947 /* IdentityTheftRestorationPagesUserScript.swift */; }; 1ED910D62B63BFB300936947 /* IdentityTheftRestorationPagesUserScript.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ED910D42B63BFB300936947 /* IdentityTheftRestorationPagesUserScript.swift */; }; 1EEB2D7A2C986A40000D908B /* SubscriptionPagesUseSubscriptionFeatureTestsForStripe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EEB2D792C986A40000D908B /* SubscriptionPagesUseSubscriptionFeatureTestsForStripe.swift */; }; @@ -1857,8 +1866,6 @@ 7BA7CC542AD11FCE0042E5CE /* Bundle+VPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D605E2A0B29FA00BCD287 /* Bundle+VPN.swift */; }; 7BA7CC552AD11FFB0042E5CE /* NetworkProtectionOptionKeyExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D605F2A0B29FA00BCD287 /* NetworkProtectionOptionKeyExtension.swift */; }; 7BA7CC562AD11FFB0042E5CE /* NetworkProtectionOptionKeyExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D605F2A0B29FA00BCD287 /* NetworkProtectionOptionKeyExtension.swift */; }; - 7BA7CC582AD1203A0042E5CE /* UserText+NetworkProtection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D60D22A0C84F700BCD287 /* UserText+NetworkProtection.swift */; }; - 7BA7CC592AD1203B0042E5CE /* UserText+NetworkProtection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D60D22A0C84F700BCD287 /* UserText+NetworkProtection.swift */; }; 7BA7CC5C2AD120C30042E5CE /* EventMapping+NetworkProtectionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D60722A0B29FA00BCD287 /* EventMapping+NetworkProtectionError.swift */; }; 7BA7CC5D2AD120C30042E5CE /* EventMapping+NetworkProtectionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4D60722A0B29FA00BCD287 /* EventMapping+NetworkProtectionError.swift */; }; 7BA7CC5F2AD1210C0042E5CE /* Networking in Frameworks */ = {isa = PBXBuildFile; productRef = 7BA7CC5E2AD1210C0042E5CE /* Networking */; }; @@ -3528,6 +3535,9 @@ 1E7E2E8F29029A2A00C01B54 /* ContentBlockingRulesUpdateObserver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentBlockingRulesUpdateObserver.swift; sourceTree = ""; }; 1E7E2E932902AC0E00C01B54 /* PrivacyDashboardPermissionHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyDashboardPermissionHandler.swift; sourceTree = ""; }; 1E862A882A9FC01200F84D4B /* SubscriptionUI */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = SubscriptionUI; sourceTree = ""; }; + 1EC7114F2D033D200009EB5C /* UserText+NetworkProtection+Shared.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserText+NetworkProtection+Shared.swift"; sourceTree = ""; }; + 1EC711542D03421B0009EB5C /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; + 1EC711572D035BC30009EB5C /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; 1ED910D42B63BFB300936947 /* IdentityTheftRestorationPagesUserScript.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdentityTheftRestorationPagesUserScript.swift; sourceTree = ""; }; 1EEB2D792C986A40000D908B /* SubscriptionPagesUseSubscriptionFeatureTestsForStripe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionPagesUseSubscriptionFeatureTestsForStripe.swift; sourceTree = ""; }; 31031EB62CC94C6C00684340 /* AIChatRemoteSettingsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AIChatRemoteSettingsTests.swift; sourceTree = ""; }; @@ -6368,6 +6378,7 @@ isa = PBXGroup; children = ( 4B4D607C2A0B29FA00BCD287 /* UserText+NetworkProtectionExtensions.swift */, + 1EC711572D035BC30009EB5C /* Localizable.xcstrings */, ); path = NetworkExtensionAndNotificationTargets; sourceTree = ""; @@ -7157,6 +7168,7 @@ EE34245D2BA0853900173B1B /* VPNUninstaller.swift */, 7BA7CC112AD11DC80042E5CE /* TunnelControllerIPCService.swift */, 7BA7CC172AD11DC80042E5CE /* UserText.swift */, + 1EC711542D03421B0009EB5C /* Localizable.xcstrings */, 7BA7CC122AD11DC80042E5CE /* Assets.xcassets */, 7BA7CC162AD11DC80042E5CE /* DuckDuckGoVPN.entitlements */, 7BA7CC182AD11DC80042E5CE /* DuckDuckGoVPNDebug.entitlements */, @@ -8262,6 +8274,7 @@ children = ( AA80EC53256BE3BC007083E7 /* UserText.swift */, 4B4D60D22A0C84F700BCD287 /* UserText+NetworkProtection.swift */, + 1EC7114F2D033D200009EB5C /* UserText+NetworkProtection+Shared.swift */, 31A83FB42BE28D7D00F74E67 /* UserText+DBP.swift */, ); path = Localizables; @@ -10464,6 +10477,7 @@ B6E6B9EF2BA1FD90008AA7E1 /* Sources */, B6E6B9F02BA1FD90008AA7E1 /* Frameworks */, B6AEB5532BA3029B00781A09 /* Cleanup entitlements */, + 1E666CE92D09883A0021A580 /* Resources */, ); buildRules = ( ); @@ -10623,6 +10637,13 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 1E666CE92D09883A0021A580 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 3706FCB1293F65D500E42796 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -10736,6 +10757,7 @@ files = ( BDE981DA2BBD10D600645880 /* vpn-light-mode.json in Resources */, 7BA7CC482AD11E5C0042E5CE /* Assets.xcassets in Resources */, + 1EC711552D03421B0009EB5C /* Localizable.xcstrings in Resources */, BDE981D92BBD10D600645880 /* vpn-dark-mode.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -10746,6 +10768,7 @@ files = ( BDADBDCD2BD2BC5700421B9B /* vpn-light-mode.json in Resources */, 7BA7CC472AD11E5C0042E5CE /* Assets.xcassets in Resources */, + 1EC711562D03421B0009EB5C /* Localizable.xcstrings in Resources */, BDADBDCC2BD2BC4D00421B9B /* vpn-dark-mode.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -10754,6 +10777,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 1EC711582D035BC30009EB5C /* Localizable.xcstrings in Resources */, 4B4BEC482A11B61F001D9AC5 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -10769,6 +10793,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 1EC7115A2D035BC30009EB5C /* Localizable.xcstrings in Resources */, 1D85BCCA2BA982FC0065BA04 /* InfoPlist.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -10777,6 +10802,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 1EC711592D035BC30009EB5C /* Localizable.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -11320,6 +11346,7 @@ F1D43AEF2B98D8DF00BAB743 /* MainMenuActions+VanillaBrowser.swift in Sources */, 56BA1E8B2BB1CB5B001CF69F /* CertificateTrustEvaluator.swift in Sources */, B6E1491129A5C30A00AAFBE8 /* FBProtectionTabExtension.swift in Sources */, + 1EC711502D033D200009EB5C /* UserText+NetworkProtection+Shared.swift in Sources */, 3706FAC4293F65D500E42796 /* PrintingUserScript.swift in Sources */, 1D01A3D92B88DF8B00FE8150 /* PreferencesSyncView.swift in Sources */, 9D9AE86C2AA76D1B0026E7DC /* LoginItemsManager.swift in Sources */, @@ -12636,7 +12663,6 @@ B6F92BA22A691580002ABA6B /* UserDefaultsWrapper.swift in Sources */, 7BA7CC3A2AD11E2D0042E5CE /* DuckDuckGoVPNAppDelegate.swift in Sources */, 7BAF9E4C2A8A3CCA002D3B6E /* UserDefaults+NetworkProtectionShared.swift in Sources */, - 7BA7CC592AD1203B0042E5CE /* UserText+NetworkProtection.swift in Sources */, 7BD7B0032C19D3830039D20A /* VPNIPCResources.swift in Sources */, 7B22D86F2CCFD7B7006A76E1 /* TipKitController.swift in Sources */, F1DA51942BF6081E00CF29FA /* AttributionPixelHandler.swift in Sources */, @@ -12669,6 +12695,7 @@ 4BF0E5072AD2551A00FFEC9E /* NetworkProtectionPixelEvent.swift in Sources */, F1DA518A2BF607D200CF29FA /* SubscriptionAttributionPixelHandler.swift in Sources */, 7BA7CC442AD11E490042E5CE /* UserText.swift in Sources */, + 1EC711522D033D280009EB5C /* UserText+NetworkProtection+Shared.swift in Sources */, 7BDBAD222CBFF97E000379B7 /* TipKitDebugOptionsUIActionHandling.swift in Sources */, 4BF0E5142AD25A2600FFEC9E /* DuckDuckGoUserAgent.swift in Sources */, F1FDC93C2BF51F41006B1435 /* VPNSettings+Environment.swift in Sources */, @@ -12695,7 +12722,6 @@ 4B0EF7292B5780EB009D6481 /* VPNAppEventsHandler.swift in Sources */, 4BF0E5082AD2551A00FFEC9E /* NetworkProtectionPixelEvent.swift in Sources */, 02FDA6602C764E220024CD8B /* VPNPrivacyConfigurationManager.swift in Sources */, - 7BA7CC582AD1203A0042E5CE /* UserText+NetworkProtection.swift in Sources */, 7BA7CC4B2AD11EC60042E5CE /* NetworkProtectionControllerErrorStore.swift in Sources */, EE3424612BA0853900173B1B /* VPNUninstaller.swift in Sources */, 7B4D8A242BDA857300852966 /* VPNOperationErrorRecorder.swift in Sources */, @@ -12717,6 +12743,7 @@ F1DA518B2BF607D200CF29FA /* SubscriptionAttributionPixelHandler.swift in Sources */, 7BA7CC3D2AD11E380042E5CE /* TunnelControllerIPCService.swift in Sources */, 4BA7C4DA2B3F639800AFE511 /* NetworkProtectionTunnelController.swift in Sources */, + 1EC711532D033D280009EB5C /* UserText+NetworkProtection+Shared.swift in Sources */, 7BDBAD232CBFF97E000379B7 /* TipKitDebugOptionsUIActionHandling.swift in Sources */, F1FDC93D2BF51F41006B1435 /* VPNSettings+Environment.swift in Sources */, 7BA7CC432AD11E480042E5CE /* UserText.swift in Sources */, @@ -12913,6 +12940,7 @@ 1D4B03D72CA4432000224E99 /* BookmarkUrlExtension.swift in Sources */, 85D0327B2B8E3D090041D1FB /* HistoryCoordinatorExtension.swift in Sources */, AA80EC54256BE3BC007083E7 /* UserText.swift in Sources */, + 1EC711512D033D200009EB5C /* UserText+NetworkProtection+Shared.swift in Sources */, B61EF3EC266F91E700B4D78F /* WKWebView+Download.swift in Sources */, 311B262728E73E0A00FD181A /* TabShadowConfig.swift in Sources */, BB7B5F982C4ED73800BA4AF8 /* BookmarksSearchAndSortMetrics.swift in Sources */, diff --git a/DuckDuckGo/Common/Localizables/UserText+DBP.swift b/DuckDuckGo/Common/Localizables/UserText+DBP.swift index 19ed7535b0..6886b52b56 100644 --- a/DuckDuckGo/Common/Localizables/UserText+DBP.swift +++ b/DuckDuckGo/Common/Localizables/UserText+DBP.swift @@ -21,11 +21,11 @@ import Common // MARK: - DBP Error pages extension UserText { - static let dbpErrorPageBadPathTitle = NotLocalizedString("dbp.errorpage.bad.path.title", value: "Move DuckDuckGo App to Applications", comment: "Title for Personal Information Removal bad path error screen") - static let dbpErrorPageBadPathMessage = NotLocalizedString("dbp.errorpage.bad.path.message", value: "To use Personal Information Removal, the DuckDuckGo app needs to be in the Applications folder on your Mac. You can move the app yourself and restart the browser, or we can do it for you.", comment: "Message for Personal Information Removal bad path error screen") - static let dbpErrorPageBadPathCTA = NotLocalizedString("dbp.errorpage.bad.path.cta", value: "Move App for Me...", comment: "Call to action for moving the app to the Applications folder") + static let dbpErrorPageBadPathTitle = NSLocalizedString("dbp.errorpage.bad.path.title", value: "Move DuckDuckGo App to Applications", comment: "Title for Personal Information Removal bad path error screen") + static let dbpErrorPageBadPathMessage = NSLocalizedString("dbp.errorpage.bad.path.message", value: "To use Personal Information Removal, the DuckDuckGo app needs to be in the Applications folder on your Mac. You can move the app yourself and restart the browser, or we can do it for you.", comment: "Message for Personal Information Removal bad path error screen") + static let dbpErrorPageBadPathCTA = NSLocalizedString("dbp.errorpage.bad.path.cta", value: "Move App for Me...", comment: "Call to action for moving the app to the Applications folder") - static let dbpErrorPageNoPermissionTitle = NotLocalizedString("dbp.errorpage.no.permission.title", value: "Change System Setting", comment: "Title for error screen when there is no permission") - static let dbpErrorPageNoPermissionMessage = NotLocalizedString("dbp.errorpage.no.permission.message", value: "Open System Settings and allow DuckDuckGo Personal Information Removal to run in the background.", comment: "Message for error screen when there is no permission") - static let dbpErrorPageNoPermissionCTA = NotLocalizedString("dbp.errorpage.no.permission.cta", value: "Open System Settings...", comment: "Call to action for opening system settings") + static let dbpErrorPageNoPermissionTitle = NSLocalizedString("dbp.errorpage.no.permission.title", value: "Change System Setting", comment: "Title for error screen when there is no permission") + static let dbpErrorPageNoPermissionMessage = NSLocalizedString("dbp.errorpage.no.permission.message", value: "Open System Settings and allow DuckDuckGo Personal Information Removal to run in the background.", comment: "Message for error screen when there is no permission") + static let dbpErrorPageNoPermissionCTA = NSLocalizedString("dbp.errorpage.no.permission.cta", value: "Open System Settings...", comment: "Call to action for opening system settings") } diff --git a/DuckDuckGo/Common/Localizables/UserText+NetworkProtection+Shared.swift b/DuckDuckGo/Common/Localizables/UserText+NetworkProtection+Shared.swift new file mode 100644 index 0000000000..05773ebf86 --- /dev/null +++ b/DuckDuckGo/Common/Localizables/UserText+NetworkProtection+Shared.swift @@ -0,0 +1,58 @@ +// +// UserText+NetworkProtection+Shared.swift +// +// Copyright © 2024 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +/// +/// Copy related to VPN used by both main app targets and both VPN targets +/// +extension UserText { + + // MARK: Location formatter + + static let locationFormatterNearestLocation = NSLocalizedString("network.protection.vpn.location.formatter.nearest.location", value: "Nearest Location", comment: "Nearest available location setting description") + + static let locationFormatterNearestLocationDescriptor = NSLocalizedString("network.protection.vpn.location.formatter.nearest.location.descriptor", value: "(Nearest)", comment: "Description added after the nearest location in the VPN status view") + + // "network.protection.vpn.location.subtitle.formatted.city.and.country" - Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States + static func locationFormatterLocationFormattedCityAndCountry(city: String, country: String) -> String { + return "\(city), \(country)" + } + + // MARK: - + + static let networkProtectionTunnelName = NSLocalizedString("network.protection.tunnel.name", value: "DuckDuckGo VPN", comment: "The name of the NetP VPN that will be visible in the system to the user") + + // MARK: - System Extension Installation Messages + + // Dynamically selected based on macOS version, not directly convertible to static string + static var networkProtectionSystemSettings: String { + if #available(macOS 13.0, *) { + return networkProtectionSystemSettingsModern + } else { + return networkProtectionSystemSettingsLegacy + } + } + + private static let networkProtectionSystemSettingsLegacy = NSLocalizedString("network.protection.configuration.system-settings.legacy", value: "Go to Security & Privacy in System Preferences to allow DuckDuckGo VPN to activate", comment: "Text for a label in the VPN popover, displayed after attempting to enable the VPN for the first time while using macOS 12 and below") + private static let networkProtectionSystemSettingsModern = NSLocalizedString("network.protection.configuration.system-settings.modern", value: "Go to Privacy & Security in System Settings to allow DuckDuckGo VPN to activate", comment: "Text for a label in the VPN popover, displayed after attempting to enable the VPN for the first time while using macOS 13 and above") + + static let networkProtectionUnknownActivationError = NSLocalizedString("network.protection.system.extension.unknown.activation.error", value: "There was an unexpected error. Please try again.", comment: "Message shown to users when they try to enable NetP and there is an unexpected activation error.") + + static let networkProtectionPleaseReboot = NSLocalizedString("network.protection.system.extension.please.reboot", value: "VPN update available. Restart your Mac to reconnect.", comment: "Message shown to users when they try to enable NetP and they need to reboot the computer to complete the installation") +} diff --git a/DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift b/DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift index 9aa4698efb..6f2234b65d 100644 --- a/DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift +++ b/DuckDuckGo/Common/Localizables/UserText+NetworkProtection.swift @@ -18,298 +18,259 @@ import Foundation +/// +/// Copy related to VPN used only in both main app targets +/// extension UserText { - - // "network.protection.tunnel.name" - The name of the NetP VPN that will be visible in the system to the user - static let networkProtectionTunnelName = "DuckDuckGo VPN" - // "network.protection" - Menu item for opening the VPN - static let networkProtection = "VPN" + static let networkProtection = NSLocalizedString("network.protection", value: "VPN", comment: "Menu item for opening the VPN") // MARK: - Navigation Bar - // "network.protection.status.button.tooltip" - The tooltip for NetP's nav bar button - static let networkProtectionButtonTooltip = "VPN" + + static let networkProtectionButtonTooltip = NSLocalizedString("network.protection.status.button.tooltip", value: "VPN", comment: "The tooltip for NetP's nav bar button") // MARK: - Invite Code - // "network.protection.invite.dialog.title" - Title for the VPN invite dialog - static let networkProtectionInviteDialogTitle = "Enter your invite code" - // "network.protection.invite.dialog.message" - Message for the VPN invite dialog - static let networkProtectionInviteDialogMessage = "Enter your invite code to get started." - // "network.protection.invite.field.prompt" - Prompt for the VPN invite code text field - static let networkProtectionInviteFieldPrompt = "Code" - // "network.protection.invite.success.title" - Title for the VPN invite success view - static let networkProtectionInviteSuccessTitle = "Success! You’re in." - // "network.protection.invite.success.title" - Message for the VPN invite success view - static let networkProtectionInviteSuccessMessage = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere." + + static let networkProtectionInviteDialogTitle = NSLocalizedString("network.protection.invite.dialog.title", value: "Enter your invite code", comment: "Title for the VPN invite dialog") + + static let networkProtectionInviteDialogMessage = NSLocalizedString("network.protection.invite.dialog.message", value: "Enter your invite code to get started.", comment: "Message for the VPN invite dialog") + + static let networkProtectionInviteFieldPrompt = NSLocalizedString("network.protection.invite.field.prompt", value: "Code", comment: "Prompt for the VPN invite code text field") + + static let networkProtectionInviteSuccessTitle = NSLocalizedString("network.protection.invite.success.title", value: "Success! You’re in.", comment: "Title for the VPN invite success view") + + static let networkProtectionInviteSuccessMessage = NSLocalizedString("network.protection.invite.success.title", value: "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere.", comment: "Message for the VPN invite success view") // MARK: - Navigation Bar Status View - // "network.protection.navbar.status.view.send.feedback" - Menu item for 'Send Feedback' in the VPN status view that's shown in the navigation bar - static let networkProtectionNavBarStatusViewSendFeedback = "Send Feedback…" - // "network.protection.status.menu.vpn.settings" - The status menu 'VPN Settings' menu item - static let networkProtectionNavBarStatusMenuVPNSettings = "VPN Settings…" - // "network.protection.status.menu.faq" - The status menu 'FAQ' menu item - static let networkProtectionNavBarStatusMenuFAQ = "FAQs and Support…" - - // MARK: - System Extension Installation Messages - // "network.protection.configuration.system-settings.legacy" - Text for a label in the VPN popover, displayed after attempting to enable the VPN for the first time while using macOS 12 and below - private static let networkProtectionSystemSettingsLegacy = "Go to Security & Privacy in System Preferences to allow DuckDuckGo VPN to activate" - // "network.protection.configuration.system-settings.modern" - Text for a label in the VPN popover, displayed after attempting to enable the VPN for the first time while using macOS 13 and above - private static let networkProtectionSystemSettingsModern = "Go to Privacy & Security in System Settings to allow DuckDuckGo VPN to activate" - - // Dynamically selected based on macOS version, not directly convertible to static string - static var networkProtectionSystemSettings: String { - if #available(macOS 13.0, *) { - return networkProtectionSystemSettingsModern - } else { - return networkProtectionSystemSettingsLegacy - } - } - // "network.protection.system.extension.unknown.activation.error" - Message shown to users when they try to enable NetP and there is an unexpected activation error. - static let networkProtectionUnknownActivationError = "There was an unexpected error. Please try again." - // "network.protection.system.extension.please.reboot" - Message shown to users when they try to enable NetP and they need to reboot the computer to complete the installation - static let networkProtectionPleaseReboot = "VPN update available. Restart your Mac to reconnect." + static let networkProtectionNavBarStatusViewSendFeedback = NSLocalizedString("network.protection.navbar.status.view.send.feedback", value: "Send Feedback…", comment: "Menu item for 'Send Feedback' in the VPN status view that's shown in the navigation bar") + + static let networkProtectionNavBarStatusViewVPNSettings = NSLocalizedString("network.protection.navbar.status.view.vpn.settings", value: "VPN Settings…", comment: "The status menu 'VPN Settings' menu item") + + static let networkProtectionNavBarStatusViewFAQ = NSLocalizedString("network.protection.navbar.status.view.faq", value: "FAQs and Support…", comment: "The status menu 'FAQ' menu item") } extension UserText { // MARK: - Feedback Form - // "feedback-form.title" - Title for each screen of the feedback form - static let feedbackFormTitle = "Help Improve Privacy Pro" - // "general.feedback-form.category.select-feature" - Title for the feature selection state of the general feedback form - static let generalFeedbackFormCategorySelect = "Select a category" - // "general.feedback-form.category.ppro" - Description for the feedback form when the issue is related to subscription and payments - static let generalFeedbackFormCategoryPPro = "Subscription and Payments" - // "general.feedback-form.category.vpn" - Description for the feedback form when the issue is related to VPN - static let generalFeedbackFormCategoryVPN = "VPN" - // "general.feedback-form.category.pir" - Description for the feedback form when the issue is related to Personal Info Removal (PIR) - static let generalFeedbackFormCategoryPIR = "Personal Information Removal" - // "general.feedback-form.category.itr" - Description for the feedback form when the issue is related to Identity Theft Restoration (ITR) - static let generalFeedbackFormCategoryITR = "Identity Theft Restoration" - // "ppro.feedback-form.category.select-category" - Title for the category selection state of the feedback form - static let pproFeedbackFormCategorySelect = "Select a category" - // "ppro.feedback-form.category.otp" - Description for the feedback form when there is an issue with the one-time password - static let pproFeedbackFormCategoryOTP = "Issue with one-time password" - // "ppro.feedback-form.category.something-else" - Description for the feedback form when the user has an issue not categorized in other options - static let pproFeedbackFormCategoryOther = "Something else" - // "vpn.feedback-form.title" - Title for each screen of the VPN feedback form - static let vpnFeedbackFormTitle = "Help Improve the DuckDuckGo VPN" - // "vpn.feedback-form.category.select-category" - Title for the category selection state of the VPN feedback form - static let vpnFeedbackFormCategorySelect = "Select a category" - // "vpn.feedback-form.category.unable-to-install" - Title for the 'unable to install' category of the VPN feedback form - static let vpnFeedbackFormCategoryUnableToInstall = "Unable to install VPN" - // "vpn.feedback-form.category.fails-to-connect" - Title for the 'VPN fails to connect' category of the VPN feedback form - static let vpnFeedbackFormCategoryFailsToConnect = "VPN fails to connect" - // "vpn.feedback-form.category.too-slow" - Title for the 'VPN is too slow' category of the VPN feedback form - static let vpnFeedbackFormCategoryTooSlow = "VPN connection is too slow" - // "vpn.feedback-form.category.issues-with-apps" - Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form - static let vpnFeedbackFormCategoryIssuesWithApps = "VPN causes issues with other apps or websites" - // "vpn.feedback-form.category.local-device-connectivity" - Title for the local device connectivity category of the VPN feedback form - static let vpnFeedbackFormCategoryLocalDeviceConnectivity = "VPN won't let me connect to local device" - // "vpn.feedback-form.category.browser-crash-or-freeze" - Title for the browser crash/freeze category of the VPN feedback form - static let vpnFeedbackFormCategoryBrowserCrashOrFreeze = "VPN causes browser to crash or freeze" - // "vpn.feedback-form.category.feature-request" - Title for the 'VPN feature request' category of the VPN feedback form - static let vpnFeedbackFormCategoryFeatureRequest = "VPN feature request" - // "vpn.feedback-form.category.other" - Title for the 'other VPN feedback' category of the VPN feedback form - static let vpnFeedbackFormCategoryOther = "Other VPN feedback" - // "pir.feedback-form.category.select-category" - Title for the category selection state of the PIR feedback form - static let pirFeedbackFormCategorySelect = "Select a category" - // "pir.feedback-form.category.no-info-on-specific-site" - Description for the feedback form when the scan didn't find user's info on a specific site - static let pirFeedbackFormCategoryNothingOnSpecificSite = "The scan didn't find my info on a specific site" - // "pir.feedback-form.category.not-me" - Description for the feedback form when the scan found records that don’t belong to the user - static let pirFeedbackFormCategoryNotMe = "The scan found records which aren't me" - // "pir.feedback-form.category.scan-stuck" - Description for the feedback form when the scan process is stuck - static let pirFeedbackFormCategoryScanStuck = "The scan for records is stuck" - // "pir.feedback-form.category.removal-stuck" - Description for the feedback form when the removal process is stuck - static let pirFeedbackFormCategoryRemovalStuck = "The removal process is stuck" - // "itr.feedback-form.category.select-category" - Title for the category selection state of the ITR feedback form - static let itrFeedbackFormCategorySelect = "Select a category" - // "itr.feedback-form.category.access-code" - Description for the feedback form when there is an issue with the access code - static let itrFeedbackFormCategoryAccessCode = "Issue with access code" - // "itr.feedback-form.category.contact-advisor" - Description for the feedback form when the user is unable to contact an advisor - static let itrFeedbackFormCategoryCantContactAdvisor = "Unable to contact advisor" - // "itr.feedback-form.category.unhelpful" - Description for the feedback form when the call to an advisor was unhelpful - static let itrFeedbackFormCategoryUnhelpful = "Call to Advisor was unhelpful" - // "itr.feedback-form.category.something-else" - Description for the feedback form when the user has an issue not categorized in other options - static let itrFeedbackFormCategorySomethingElse = "Something else" - - // "ppro.feedback-form.text-1" - Text for the body of the PPro feedback form - static let pproFeedbackFormText1 = "Found an issue not covered in our [help center](duck://)? We definitely want to know about it.\n\nTell us what's going on:" - // "ppro.feedback-form.text-2" - Text for the body of the PPro feedback form - static let pproFeedbackFormText2 = "In addition to the details entered into this form, your app issue report will contain:" - // "ppro.feedback-form.text-3" - Bullet text for the body of the PPro feedback form - static let pproFeedbackFormText3 = "• Whether specific DuckDuckGo features are enabled" - // "ppro.feedback-form.text-4" - Bullet text for the body of the PPro feedback form - static let pproFeedbackFormText4 = "• Aggregate DuckDuckGo app diagnostics" - // "ppro.feedback-form.text-5" - Text for the body of the PPro feedback form - static let pproFeedbackFormText5 = "By clicking \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features." - // "ppro.feedback-form.disclaimer" - Text for the disclaimer of the PPro feedback form - static let pproFeedbackFormDisclaimer = "Reports are anonymous and sent to DuckDuckGo to help improve our service" - - // "ppro.feedback-form.email.label" - Label for the email field of the PPro feedback form - static let pproFeedbackFormEmailLabel = "Provide an email if you’d like us to contact you about this issue (we may not be able to respond to all issues):" - // "ppro.feedback-form.email.placeholder" - Placeholder for the email field of the PPro feedback form - static let pproFeedbackFormEmailPlaceholder = "Email (optional)" - - // "ppro.feedback-form.sending-confirmation.title" - Title for the feedback sent view title of the feedback form - static let pproFeedbackFormSendingConfirmationTitle = "Thank you!" - // "ppro.feedback-form.sending-confirmation.description" - Title for the feedback sent view description of the feedback form - static let pproFeedbackFormSendingConfirmationDescription = "Your Feedback will help us improve Privacy Pro." - // "ppro.feedback-form.sending-confirmation.error" - Title for the feedback sending error text of the feedback form - static let pproFeedbackFormSendingConfirmationError = "We couldn't send your feedback right now, please try again." - - // "ppro.feedback-form.button.done" - Title for the Done button of the PPro feedback form - static let pproFeedbackFormButtonDone = "Done" - // "ppro.feedback-form.button.cancel" - Title for the Cancel button of the PPro feedback form - static let pproFeedbackFormButtonCancel = "Cancel" - // "ppro.feedback-form.button.submit" - Title for the Submit button of the PPro feedback form - static let pproFeedbackFormButtonSubmit = "Submit" - // "ppro.feedback-form.button.submitting" - Title for the Submitting state of the PPro feedback form - static let pproFeedbackFormButtonSubmitting = "Submitting…" - - // "ppro.feedback-form.general-feedback.placeholder" - Placeholder for the General Feedback step in the Privacy Pro feedback form - static let pproFeedbackFormGeneralFeedbackPlaceholder = "Please give us your feedback:" - // "ppro.feedback-form.request-feature.placeholder" - Placeholder for the Feature Request step in the Privacy Pro feedback form - static let pproFeedbackFormRequestFeaturePlaceholder = "What feature would you like to see?" - - // "pir.feedback-form.category.other" - Description for the feedback form when the user has an issue not categorized in other options - static let pirFeedbackFormCategoryOther = "Something else" - // "vpn.feedback-form.text-1" - Text for the body of the VPN feedback form - static let vpnFeedbackFormText1 = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:" - // "vpn.feedback-form.text-2" - Text for the body of the VPN feedback form - static let vpnFeedbackFormText2 = "In addition to the details entered into this form, your app issue report will contain:" - // "vpn.feedback-form.text-3" - Bullet text for the body of the VPN feedback form - static let vpnFeedbackFormText3 = "• Whether specific DuckDuckGo features are enabled" - // "vpn.feedback-form.text-4" - Bullet text for the body of the VPN feedback form - static let vpnFeedbackFormText4 = "• Aggregate DuckDuckGo app diagnostics" - // "vpn.feedback-form.text-5" - Text for the body of the VPN feedback form - static let vpnFeedbackFormText5 = "By clicking \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features." - - // "vpn.feedback-form.sending-confirmation.title" - Title for the feedback sent view title of the VPN feedback form - static let vpnFeedbackFormSendingConfirmationTitle = "Thank you!" - // "vpn.feedback-form.sending-confirmation.description" - Title for the feedback sent view description of the VPN feedback form - static let vpnFeedbackFormSendingConfirmationDescription = "Your feedback will help us improve the DuckDuckGo VPN." - // "vpn.feedback-form.sending-confirmation.error" - Title for the feedback sending error text of the VPN feedback form - static let vpnFeedbackFormSendingConfirmationError = "We couldn't send your feedback right now, please try again." - - // "vpn.feedback-form.button.done" - Title for the Done button of the VPN feedback form - static let vpnFeedbackFormButtonDone = "Done" - // "vpn.feedback-form.button.cancel" - Title for the Cancel button of the VPN feedback form - static let vpnFeedbackFormButtonCancel = "Cancel" - // "vpn.feedback-form.button.submit" - Title for the Submit button of the VPN feedback form - static let vpnFeedbackFormButtonSubmit = "Submit" - // "vpn.feedback-form.button.submitting" - Title for the Submitting state of the VPN feedback form - static let vpnFeedbackFormButtonSubmitting = "Submitting…" + + static let feedbackFormTitle = NSLocalizedString("feedback-form.title", value: "Help Improve Privacy Pro", comment: "Title for each screen of the feedback form") + + static let generalFeedbackFormCategorySelect = NSLocalizedString("general.feedback-form.category.select-feature", value: "Select a category", comment: "Title for the feature selection state of the general feedback form") + + static let generalFeedbackFormCategoryPPro = NSLocalizedString("general.feedback-form.category.ppro", value: "Subscription and Payments", comment: "Description for the feedback form when the issue is related to subscription and payments") + + static let generalFeedbackFormCategoryVPN = NSLocalizedString("general.feedback-form.category.vpn", value: "VPN", comment: "Description for the feedback form when the issue is related to VPN") + + static let generalFeedbackFormCategoryPIR = NSLocalizedString("general.feedback-form.category.pir", value: "Personal Information Removal", comment: "Description for the feedback form when the issue is related to Personal Info Removal (PIR)") + + static let generalFeedbackFormCategoryITR = NSLocalizedString("general.feedback-form.category.itr", value: "Identity Theft Restoration", comment: "Description for the feedback form when the issue is related to Identity Theft Restoration (ITR)") + + static let pproFeedbackFormCategorySelect = NSLocalizedString("ppro.feedback-form.category.select-category", value: "Select a category", comment: "Title for the category selection state of the feedback form") + + static let pproFeedbackFormCategoryOTP = NSLocalizedString("ppro.feedback-form.category.otp", value: "Issue with one-time password", comment: "Description for the feedback form when there is an issue with the one-time password") + + static let pproFeedbackFormCategoryOther = NSLocalizedString("ppro.feedback-form.category.something-else", value: "Something else", comment: "Description for the feedback form when the user has an issue not categorized in other options") + + static let vpnFeedbackFormTitle = NSLocalizedString("vpn.feedback-form.title", value: "Help Improve the DuckDuckGo VPN", comment: "Title for each screen of the VPN feedback form") + + static let vpnFeedbackFormCategorySelect = NSLocalizedString("vpn.feedback-form.category.select-category", value: "Select a category", comment: "Title for the category selection state of the VPN feedback form") + + static let vpnFeedbackFormCategoryUnableToInstall = NSLocalizedString("vpn.feedback-form.category.unable-to-install", value: "Unable to install VPN", comment: "Title for the 'unable to install' category of the VPN feedback form") + + static let vpnFeedbackFormCategoryFailsToConnect = NSLocalizedString("vpn.feedback-form.category.fails-to-connect", value: "VPN fails to connect", comment: "Title for the 'VPN fails to connect' category of the VPN feedback form") + + static let vpnFeedbackFormCategoryTooSlow = NSLocalizedString("vpn.feedback-form.category.too-slow", value: "VPN connection is too slow", comment: "Title for the 'VPN is too slow' category of the VPN feedback form") + + static let vpnFeedbackFormCategoryIssuesWithApps = NSLocalizedString("vpn.feedback-form.category.issues-with-apps", value: "VPN causes issues with other apps or websites", comment: "Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form") + + static let vpnFeedbackFormCategoryLocalDeviceConnectivity = NSLocalizedString("vpn.feedback-form.category.local-device-connectivity", value: "VPN won't let me connect to local device", comment: "Title for the local device connectivity category of the VPN feedback form") + + static let vpnFeedbackFormCategoryBrowserCrashOrFreeze = NSLocalizedString("vpn.feedback-form.category.browser-crash-or-freeze", value: "VPN causes browser to crash or freeze", comment: "Title for the browser crash/freeze category of the VPN feedback form") + + static let vpnFeedbackFormCategoryFeatureRequest = NSLocalizedString("vpn.feedback-form.category.feature-request", value: "VPN feature request", comment: "Title for the 'VPN feature request' category of the VPN feedback form") + + static let vpnFeedbackFormCategoryOther = NSLocalizedString("vpn.feedback-form.category.other", value: "Other VPN feedback", comment: "Title for the 'other VPN feedback' category of the VPN feedback form") + + static let pirFeedbackFormCategorySelect = NSLocalizedString("pir.feedback-form.category.select-category", value: "Select a category", comment: "Title for the category selection state of the PIR feedback form") + + static let pirFeedbackFormCategoryNothingOnSpecificSite = NSLocalizedString("pir.feedback-form.category.no-info-on-specific-site", value: "The scan didn't find my info on a specific site", comment: "Description for the feedback form when the scan didn't find user's info on a specific site") + + static let pirFeedbackFormCategoryNotMe = NSLocalizedString("pir.feedback-form.category.not-me", value: "The scan found records which aren't me", comment: "Description for the feedback form when the scan found records that don’t belong to the user") + + static let pirFeedbackFormCategoryScanStuck = NSLocalizedString("pir.feedback-form.category.scan-stuck", value: "The scan for records is stuck", comment: "Description for the feedback form when the scan process is stuck") + + static let pirFeedbackFormCategoryRemovalStuck = NSLocalizedString("pir.feedback-form.category.removal-stuck", value: "The removal process is stuck", comment: "Description for the feedback form when the removal process is stuck") + + static let itrFeedbackFormCategorySelect = NSLocalizedString("itr.feedback-form.category.select-category", value: "Select a category", comment: "Title for the category selection state of the ITR feedback form") + + static let itrFeedbackFormCategoryAccessCode = NSLocalizedString("itr.feedback-form.category.access-code", value: "Issue with access code", comment: "Description for the feedback form when there is an issue with the access code") + + static let itrFeedbackFormCategoryCantContactAdvisor = NSLocalizedString("itr.feedback-form.category.contact-advisor", value: "Unable to contact advisor", comment: "Description for the feedback form when the user is unable to contact an advisor") + + static let itrFeedbackFormCategoryUnhelpful = NSLocalizedString("itr.feedback-form.category.unhelpful", value: "Call to Advisor was unhelpful", comment: "Description for the feedback form when the call to an advisor was unhelpful") + + static let itrFeedbackFormCategorySomethingElse = NSLocalizedString("itr.feedback-form.category.something-else", value: "Something else", comment: "Description for the feedback form when the user has an issue not categorized in other options") + + static let pproFeedbackFormText1 = NSLocalizedString("ppro.feedback-form.text-1", value: "Found an issue not covered in our [help center](duck://)? We definitely want to know about it.\n\nTell us what's going on:", comment: "Text for the body of the PPro feedback form") + + static let pproFeedbackFormText2 = NSLocalizedString("ppro.feedback-form.text-2", value: "In addition to the details entered into this form, your app issue report will contain:", comment: "Text for the body of the PPro feedback form") + + static let pproFeedbackFormText3 = NSLocalizedString("ppro.feedback-form.text-3", value: "• Whether specific DuckDuckGo features are enabled", comment: "Bullet text for the body of the PPro feedback form") + + static let pproFeedbackFormText4 = NSLocalizedString("ppro.feedback-form.text-4", value: "• Aggregate DuckDuckGo app diagnostics", comment: "Bullet text for the body of the PPro feedback form") + + static let pproFeedbackFormText5 = NSLocalizedString("ppro.feedback-form.text-5", value: "By clicking \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features.", comment: "Text for the body of the PPro feedback form") + + static let pproFeedbackFormDisclaimer = NSLocalizedString("ppro.feedback-form.disclaimer", value: "Reports are anonymous and sent to DuckDuckGo to help improve our service", comment: "Text for the disclaimer of the PPro feedback form") + + static let pproFeedbackFormEmailLabel = NSLocalizedString("ppro.feedback-form.email.label", value: "Provide an email if you’d like us to contact you about this issue (we may not be able to respond to all issues):", comment: "Label for the email field of the PPro feedback form") + + static let pproFeedbackFormEmailPlaceholder = NSLocalizedString("ppro.feedback-form.email.placeholder", value: "Email (optional)", comment: "Placeholder for the email field of the PPro feedback form") + + static let pproFeedbackFormSendingConfirmationTitle = NSLocalizedString("ppro.feedback-form.sending-confirmation.title", value: "Thank you!", comment: "Title for the feedback sent view title of the feedback form") + + static let pproFeedbackFormSendingConfirmationDescription = NSLocalizedString("ppro.feedback-form.sending-confirmation.description", value: "Your Feedback will help us improve Privacy Pro.", comment: "Title for the feedback sent view description of the feedback form") + + static let pproFeedbackFormSendingConfirmationError = NSLocalizedString("ppro.feedback-form.sending-confirmation.error", value: "We couldn't send your feedback right now, please try again.", comment: "Title for the feedback sending error text of the feedback form") + + static let pproFeedbackFormButtonDone = NSLocalizedString("ppro.feedback-form.button.done", value: "Done", comment: "Title for the Done button of the PPro feedback form") + + static let pproFeedbackFormButtonCancel = NSLocalizedString("ppro.feedback-form.button.cancel", value: "Cancel", comment: "Title for the Cancel button of the PPro feedback form") + + static let pproFeedbackFormButtonSubmit = NSLocalizedString("ppro.feedback-form.button.submit", value: "Submit", comment: "Title for the Submit button of the PPro feedback form") + + static let pproFeedbackFormButtonSubmitting = NSLocalizedString("ppro.feedback-form.button.submitting", value: "Submitting…", comment: "Title for the Submitting state of the PPro feedback form") + + static let pproFeedbackFormGeneralFeedbackPlaceholder = NSLocalizedString("ppro.feedback-form.general-feedback.placeholder", value: "Please give us your feedback:", comment: "Placeholder for the General Feedback step in the Privacy Pro feedback form") + + static let pproFeedbackFormRequestFeaturePlaceholder = NSLocalizedString("ppro.feedback-form.request-feature.placeholder", value: "What feature would you like to see?", comment: "Placeholder for the Feature Request step in the Privacy Pro feedback form") + + static let pirFeedbackFormCategoryOther = NSLocalizedString("pir.feedback-form.category.other", value: "Something else", comment: "Description for the feedback form when the user has an issue not categorized in other options") + + static let vpnFeedbackFormText1 = NSLocalizedString("vpn.feedback-form.text-1", value: "Please describe what's happening, what you expected to happen, and the steps that led to the issue:", comment: "Text for the body of the VPN feedback form") + + static let vpnFeedbackFormText2 = NSLocalizedString("vpn.feedback-form.text-2", value: "In addition to the details entered into this form, your app issue report will contain:", comment: "Text for the body of the VPN feedback form") + + static let vpnFeedbackFormText3 = NSLocalizedString("vpn.feedback-form.text-3", value: "• Whether specific DuckDuckGo features are enabled", comment: "Bullet text for the body of the VPN feedback form") + + static let vpnFeedbackFormText4 = NSLocalizedString("vpn.feedback-form.text-4", value: "• Aggregate DuckDuckGo app diagnostics", comment: "Bullet text for the body of the VPN feedback form") + + static let vpnFeedbackFormText5 = NSLocalizedString("vpn.feedback-form.text-5", value: "By clicking \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features.", comment: "Text for the body of the VPN feedback form") + + static let vpnFeedbackFormSendingConfirmationTitle = NSLocalizedString("vpn.feedback-form.sending-confirmation.title", value: "Thank you!", comment: "Title for the feedback sent view title of the VPN feedback form") + + static let vpnFeedbackFormSendingConfirmationDescription = NSLocalizedString("vpn.feedback-form.sending-confirmation.description", value: "Your feedback will help us improve the DuckDuckGo VPN.", comment: "Title for the feedback sent view description of the VPN feedback form") + + static let vpnFeedbackFormSendingConfirmationError = NSLocalizedString("vpn.feedback-form.sending-confirmation.error", value: "We couldn't send your feedback right now, please try again.", comment: "Title for the feedback sending error text of the VPN feedback form") + + static let vpnFeedbackFormButtonDone = NSLocalizedString("vpn.feedback-form.button.done", value: "Done", comment: "Title for the Done button of the VPN feedback form") + + static let vpnFeedbackFormButtonCancel = NSLocalizedString("vpn.feedback-form.button.cancel", value: "Cancel", comment: "Title for the Cancel button of the VPN feedback form") + + static let vpnFeedbackFormButtonSubmit = NSLocalizedString("vpn.feedback-form.button.submit", value: "Submit", comment: "Title for the Submit button of the VPN feedback form") + + static let vpnFeedbackFormButtonSubmitting = NSLocalizedString("vpn.feedback-form.button.submitting", value: "Submitting…", comment: "Title for the Submitting state of the VPN feedback form") // MARK: - Setting Titles - // "vpn.location.title" - Location section title in VPN settings - static let vpnLocationTitle = "Location" - // "vpn.excluded.sites.title" - Excluded Sites title in VPN settings - static let vpnExcludedSitesTitle = "Excluded Websites" - // "vpn.general.title" - General section title in VPN settings - static let vpnGeneralTitle = "General" - // "vpn.shortcuts.settings.title" - Shortcuts section title in VPN settings - static let vpnShortcutsSettingsTitle = "Shortcuts" - // "vpn.notifications.settings.title" - Notifications section title in VPN settings - static let vpnNotificationsSettingsTitle = "Notifications" - // "vpn.advanced.settings.title" - VPN Advanced section title in VPN settings - static let vpnAdvancedSettingsTitle = "Advanced" - // "vpn.notifications.connection.drops.or.status.changes.title" - Title of the VPN notification option - static let vpnNotificationsConnectionDropsOrStatusChangesTitle = "VPN connection drops or status changes" + + static let vpnLocationTitle = NSLocalizedString("vpn.location.title", value: "Location", comment: "Location section title in VPN settings") + + static let vpnExcludedSitesTitle = NSLocalizedString("vpn.excluded.sites.title", value: "Excluded Websites", comment: "Excluded Sites title in VPN settings") + + static let vpnGeneralTitle = NSLocalizedString("vpn.general.title", value: "General", comment: "General section title in VPN settings") + + static let vpnShortcutsSettingsTitle = NSLocalizedString("vpn.shortcuts.settings.title", value: "Shortcuts", comment: "Shortcuts section title in VPN settings") + + static let vpnNotificationsSettingsTitle = NSLocalizedString("vpn.notifications.settings.title", value: "Notifications", comment: "Notifications section title in VPN settings") + + static let vpnAdvancedSettingsTitle = NSLocalizedString("vpn.advanced.settings.title", value: "Advanced", comment: "VPN Advanced section title in VPN settings") + + static let vpnNotificationsConnectionDropsOrStatusChangesTitle = NSLocalizedString("vpn.notifications.connection.drops.or.status.changes.title", value: "VPN connection drops or status changes", comment: "Title of the VPN notification option") // MARK: - Location - // "vpn.location.change.button.title" - Title of the VPN location preference change button - static let vpnLocationChangeButtonTitle = "Change..." - // "vpn.location.list.title" - Title of the VPN location list screen - static let vpnLocationListTitle = "VPN Location" - // "vpn.location.recommended.section.title" - Title of the VPN location list recommended section - static let vpnLocationRecommendedSectionTitle = "Recommended" - // "vpn.location.custom.section.title" - Title of the VPN location list custom section - static let vpnLocationCustomSectionTitle = "Custom" - // "vpn.location.submit.button.title" - Title of the VPN location list submit button - static let vpnLocationSubmitButtonTitle = "Submit" - // "vpn.location.custom.section.title" - Title of the VPN location list cancel button (Note: seems like a duplicate key with a different purpose, please check) - static let vpnLocationCancelButtonTitle = "Cancel" - // "vpn.location.description.nearest" - Nearest city setting description - static let vpnLocationNearest = "Nearest" - // "vpn.location.description.nearest.available" - Nearest available location setting description - static let vpnLocationNearestAvailable = "Nearest Location" - // "vpn.location.nearest.available.title" - Subtitle underneath the nearest available vpn location preference text. - static let vpnLocationNearestAvailableSubtitle = "Automatically connect to the nearest server we can find." - - // "network.protection.vpn.location.country.item.formatted.cities.count" - Subtitle of countries item when there are multiple cities, example : + + static let vpnLocationChangeButtonTitle = NSLocalizedString("vpn.location.change.button.title", value: "Change...", comment: "Title of the VPN location preference change button") + + static let vpnLocationListTitle = NSLocalizedString("vpn.location.list.title", value: "VPN Location", comment: "Title of the VPN location list screen") + + static let vpnLocationRecommendedSectionTitle = NSLocalizedString("vpn.location.recommended.section.title", value: "Recommended", comment: "Title of the VPN location list recommended section") + + static let vpnLocationCustomSectionTitle = NSLocalizedString("vpn.location.custom.section.title", value: "Custom", comment: "Title of the VPN location list custom section") + + static let vpnLocationSubmitButtonTitle = NSLocalizedString("vpn.location.submit.button.title", value: "Submit", comment: "Title of the VPN location list submit button") + + static let vpnLocationCancelButtonTitle = NSLocalizedString("vpn.location.custom.section.title", value: "Cancel", comment: "Title of the VPN location list cancel button (Note: seems like a duplicate key with a different purpose, please check)") + + static let vpnLocationNearest = NSLocalizedString("vpn.location.description.nearest", value: "Nearest", comment: "Nearest city setting description") + + static let vpnLocationNearestAvailable = NSLocalizedString("vpn.location.description.nearest.available", value: "Nearest Location", comment: "Nearest available location setting description") + + static let vpnLocationNearestAvailableSubtitle = NSLocalizedString("vpn.location.nearest.available.title", value: "Automatically connect to the nearest server we can find.", comment: "Subtitle underneath the nearest available vpn location preference text.") + static func vpnLocationCountryItemFormattedCitiesCount(_ count: Int) -> String { - let message = "%d cities" + let message = NSLocalizedString("network.protection.vpn.location.country.item.formatted.cities.count", value: "%d cities", comment: "Subtitle of countries item when there are multiple cities, example: '5 cities'") return String(format: message, count) } // MARK: - Excluded Domains - // "vpn.setting.excluded.domains.description" - Excluded Sites description - static let vpnExcludedDomainsDescription = "Excluded websites will bypass the VPN." - // "vpn.setting.excluded.domains.manage.button.title" - Excluded Sites management button title - static let vpnExcludedDomainsManageButtonTitle = "Manage Excluded Websites…" - // "vpn.excluded.domains.add.domain" - Add Domain button for the excluded sites view - static let vpnExcludedDomainsAddDomain = "Add Website" - // "vpn.excluded.domains.title" - Title for the excluded sites view - static let vpnExcludedDomainsTitle = "Excluded Websites" + + static let vpnExcludedDomainsDescription = NSLocalizedString("vpn.setting.excluded.domains.description", value: "Excluded websites will bypass the VPN.", comment: "Excluded Sites description") + + static let vpnExcludedDomainsManageButtonTitle = NSLocalizedString("vpn.setting.excluded.domains.manage.button.title", value: "Manage Excluded Websites…", comment: "Excluded Sites management button title") + + static let vpnExcludedDomainsAddDomain = NSLocalizedString("vpn.excluded.domains.add.domain", value: "Add Website", comment: "Add Domain button for the excluded sites view") + + static let vpnExcludedDomainsTitle = NSLocalizedString("vpn.excluded.domains.title", value: "Excluded Websites", comment: "Title for the excluded sites view") // MARK: - Add Excluded Domain - // "vpn.setting.add.excluded.domain.title" - Add excluded domain title - static let vpnAddExcludedDomainTitle = "Exclude Website From VPN" - // "vpn.setting.add.excluded.domain.action.button.title" - Add excluded domain button title - static let vpnAddExcludedDomainActionButtonTitle = "Exclude Website" - // "vpn.setting.add.excluded.domain.cancel.button.title" - Add excluded domain cancel button title - static let vpnAddExcludedDomainCancelButtonTitle = "Cancel" + + static let vpnAddExcludedDomainTitle = NSLocalizedString("vpn.setting.add.excluded.domain.title", value: "Exclude Website From VPN", comment: "Add excluded domain title") + + static let vpnAddExcludedDomainActionButtonTitle = NSLocalizedString("vpn.setting.add.excluded.domain.action.button.title", value: "Exclude Website", comment: "Add excluded domain button title") + + static let vpnAddExcludedDomainCancelButtonTitle = NSLocalizedString("vpn.setting.add.excluded.domain.cancel.button.title", value: "Cancel", comment: "Add excluded domain cancel button title") // MARK: - DNS - // "vpn.dns.server.title" - Title of the DNS Server section - static let vpnDnsServerTitle = "DNS Server" - // "vpn.dns.server.picker.default.title" - Title of the default DNS server option - static let vpnDnsServerPickerDefaultTitle = "DuckDuckGo (Recommended)" - // "vpn.dns.server.picker.custom.title" = Title of the custom DNS server option - static let vpnDnsServerPickerCustomTitle = "Custom" - // "vpn.dns.server.picker.custom.button.title" = Button title of the custom DNS server option - static let vpnDnsServerPickerCustomButtonTitle = "Change…" - // "vpn.setting.description.secure.dns" - Secure DNS description - static let vpnSecureDNSSettingDescription = "DuckDuckGo routes DNS queries through our DNS servers so your internet provider can't see what websites you visit." - - // "vpn.dns.server.sheet.title" - Title of the DNS Server sheet - static let vpnDnsServerSheetTitle = "Custom DNS Server" - // "vpn.dns.server.ipv4.description" - Description of the IPv4 text field - static let vpnDnsServerIPv4Description = "IPv4 Address:" - // "vpn.dns.server.disclaimer" - Disclaimer for the custom DNS server option - static let vpnDnsServerIPv4Disclaimer = "Using a custom DNS server can impact browsing speeds and expose your activity to third parties if the server isn't secure or reliable." - // "vpn.dns.server.apply.button.title" - Title for the Apply custom DNS server button - static let vpnDnsServerApplyButtonTitle = "Apply" + + static let vpnDnsServerTitle = NSLocalizedString("vpn.dns.server.title", value: "DNS Server", comment: "Title of the DNS Server section") + + static let vpnDnsServerPickerDefaultTitle = NSLocalizedString("vpn.dns.server.picker.default.title", value: "DuckDuckGo (Recommended)", comment: "Title of the default DNS server option") + + static let vpnDnsServerPickerCustomTitle = NSLocalizedString("vpn.dns.server.picker.custom.title", value: "Custom", comment: "Title of the custom DNS server option") + + static let vpnDnsServerPickerCustomButtonTitle = NSLocalizedString("vpn.dns.server.picker.custom.button.title", value: "Change…", comment: "Button title of the custom DNS server option") + + static let vpnSecureDNSSettingDescription = NSLocalizedString("vpn.setting.description.secure.dns", value: "DuckDuckGo routes DNS queries through our DNS servers so your internet provider can't see what websites you visit.", comment: "Secure DNS description") + + static let vpnDnsServerSheetTitle = NSLocalizedString("vpn.dns.server.sheet.title", value: "Custom DNS Server", comment: "Title of the DNS Server sheet") + + static let vpnDnsServerIPv4Description = NSLocalizedString("vpn.dns.server.ipv4.description", value: "IPv4 Address:", comment: "Description of the IPv4 text field") + + static let vpnDnsServerIPv4Disclaimer = NSLocalizedString("vpn.dns.server.disclaimer", value: "Using a custom DNS server can impact browsing speeds and expose your activity to third parties if the server isn't secure or reliable.", comment: "Disclaimer for the custom DNS server option") + + static let vpnDnsServerApplyButtonTitle = NSLocalizedString("vpn.dns.server.apply.button.title", value: "Apply", comment: "Title for the Apply custom DNS server button") // MARK: - Settings - // "vpn.setting.title.connect.on.login" - Connect on Login setting title - static let vpnConnectOnLoginSettingTitle = "Connect to VPN when logging in to your computer" - // "vpn.setting.title.show.in.menu.bar" - Display VPN status in the menu bar - static let vpnShowInMenuBarSettingTitle = "Show VPN in menu bar" - // "vpn.setting.title.show.in.browser.toolbar" - Display VPN status in the browser toolbar - static let vpnShowInBrowserToolbarSettingTitle = "Show VPN in browser toolbar" - // "vpn.setting.description.always.on" - Always ON setting description - static let vpnAlwaysOnSettingDescription = "Automatically restores the VPN connection after interruption. For your security, this setting cannot be disabled." - // "vpn.setting.title.exclude.local.networks" - Exclude Local Networks setting title - static let vpnExcludeLocalNetworksSettingTitle = "Exclude local networks" - // "vpn.setting.description.exclude.local.networks" - Exclude Local Networks setting description - static let vpnExcludeLocalNetworksSettingDescription = "Bypass the VPN for local network connections, like to a printer." - // "vpn.button.title.uninstall.vpn" - Uninstall VPN button title - static let openVPNButtonTitle = "Open VPN…" - static let uninstallVPNButtonTitle = "Uninstall DuckDuckGo VPN…" + + static let vpnConnectOnLoginSettingTitle = NSLocalizedString("vpn.setting.title.connect.on.login", value: "Connect to VPN when logging in to your computer", comment: "Connect on Login setting title") + + static let vpnShowInMenuBarSettingTitle = NSLocalizedString("vpn.setting.title.show.in.menu.bar", value: "Show VPN in menu bar", comment: "Display VPN status in the menu bar") + + static let vpnShowInBrowserToolbarSettingTitle = NSLocalizedString("vpn.setting.title.show.in.browser.toolbar", value: "Show VPN in browser toolbar", comment: "Display VPN status in the browser toolbar") + + static let vpnAlwaysOnSettingDescription = NSLocalizedString("vpn.setting.description.always.on", value: "Automatically restores the VPN connection after interruption. For your security, this setting cannot be disabled.", comment: "Always ON setting description") + + static let vpnExcludeLocalNetworksSettingTitle = NSLocalizedString("vpn.setting.title.exclude.local.networks", value: "Exclude local networks", comment: "Exclude Local Networks setting title") + + static let vpnExcludeLocalNetworksSettingDescription = NSLocalizedString("vpn.setting.description.exclude.local.networks", value: "Bypass the VPN for local network connections, like to a printer.", comment: "Exclude Local Networks setting description") + + static let openVPNButtonTitle = NSLocalizedString("vpn.button.title.open.vpn", value: "Open VPN…", comment: "Uninstall VPN button title") + + static let uninstallVPNButtonTitle = NSLocalizedString("vpn.button.title.uninstall.vpn", value: "Uninstall DuckDuckGo VPN…", comment: "Open VPN button title") // MARK: - VPN Settings Alerts - // "vpn.uninstall.alert.title" - Alert title when the user selects to uninstall our VPN - static let uninstallVPNAlertTitle = "Are you sure you want to uninstall the VPN?" - // "vpn.uninstall.alert.informative.text" - Informative text for the alert that comes up when the user decides to uninstall our VPN - static let uninstallVPNInformativeText = "Uninstalling the DuckDuckGo VPN will disconnect the VPN and remove it from your device." - - // MARK: - VPN Screen - // "network.protection.vpn.location.nearest" - Description of the location type in the VPN status view - static let netPVPNLocationNearest = "(Nearest)" - - // "network.protection.vpn.location.subtitle.formatted.city.and.country" - Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States - static func netPVPNSettingsLocationSubtitleFormattedCityAndCountry(city: String, country: String) -> String { - return "\(city), \(country)" - } + + static let uninstallVPNAlertTitle = NSLocalizedString("vpn.uninstall.alert.title", value: "Are you sure you want to uninstall the VPN?", comment: "Alert title when the user selects to uninstall our VPN") + + static let uninstallVPNInformativeText = NSLocalizedString("vpn.uninstall.alert.informative.text", value: "Uninstalling the DuckDuckGo VPN will disconnect the VPN and remove it from your device.", comment: "Informative text for the alert that comes up when the user decides to uninstall our VPN") } diff --git a/DuckDuckGo/Common/Localizables/UserText.swift b/DuckDuckGo/Common/Localizables/UserText.swift index 6d08fbb4a6..066fe050bf 100644 --- a/DuckDuckGo/Common/Localizables/UserText.swift +++ b/DuckDuckGo/Common/Localizables/UserText.swift @@ -1353,31 +1353,23 @@ struct UserText { static let buttonTitle = NSLocalizedString("site.not.working.button.title", value: "Let Us Know", comment: "Button title that appears on a dialog asking users about possible breakage of a site") } + // MARK: - Privacy Pro + // Key: "subscription.menu.item" // Comment: "Title for Subscription item in the options menu" static let subscriptionOptionsMenuItem = "Privacy Pro" static let identityTheftRestorationOptionsMenuItem = "Identity Theft Restoration" - // Key: "subscription.settings.menu.item" - // Comment: "Title for Subscription Settings item in the options menu" - static let subscriptionSettingsOptionsMenuItem = "Subscription Settings" + static let subscriptionSettingsOptionsMenuItem = NSLocalizedString("subscription.settings.menu.item", value:"Subscription Settings", comment: "Title for Subscription Settings item in the options menu") // Key: "preferences.subscription" // Comment: "Show subscription preferences" static let subscription = "Privacy Pro" - // Key: "subscription.progress.view.purchasing.subscription" - // Comment: "Progress view title when starting the purchase" - static let purchasingSubscriptionTitle = "Purchase in progress..." - - // Key: "subscription.progress.view.restoring.subscription" - // Comment: "Progress view title when restoring past subscription purchase" - static let restoringSubscriptionTitle = "Restoring subscription..." - - // Key: "subscription.progress.view.completing.purchase" - // Comment: "Progress view title when completing the purchase" - static let completingPurchaseTitle = "Completing purchase..." + static let purchasingSubscriptionTitle = NSLocalizedString("subscription.progress.view.purchasing.subscription", value:"Purchase in progress...", comment: "Progress view title when starting the purchase") + static let restoringSubscriptionTitle = NSLocalizedString("subscription.progress.view.restoring.subscription", value:"Restoring subscription...", comment: "Progress view title when restoring past subscription purchase") + static let completingPurchaseTitle = NSLocalizedString("subscription.progress.view.completing.purchase", value:"Completing purchase...", comment: "Progress view title when completing the purchase") // Mark: Sync Promo static let syncPromoBookmarksTitle = NSLocalizedString("sync.promo.bookmarks.title", value:"Sync & Back Up Your Bookmarks", comment: "Title for the Sync Promotion banner") diff --git a/DuckDuckGo/Localizable.xcstrings b/DuckDuckGo/Localizable.xcstrings index f90ccc2115..9e4b0de985 100644 --- a/DuckDuckGo/Localizable.xcstrings +++ b/DuckDuckGo/Localizable.xcstrings @@ -8332,8 +8332,8 @@ "localizations" : { "de" : { "stringUnit" : { - "state" : "needs_review", - "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.3.0, v2024.3.2, v2024.4.0, v2024.4.1. Please update to a newer version by following these steps:" + "state" : "translated", + "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.10.0, v2024.10.1, v2024.10.2. Please downgrade to an older version by following these steps:" } }, "en" : { @@ -8344,44 +8344,44 @@ }, "es" : { "stringUnit" : { - "state" : "needs_review", - "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.3.0, v2024.3.2, v2024.4.0, v2024.4.1. Please update to a newer version by following these steps:" + "state" : "translated", + "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.10.0, v2024.10.1, v2024.10.2. Please downgrade to an older version by following these steps:" } }, "fr" : { "stringUnit" : { - "state" : "needs_review", - "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.3.0, v2024.3.2, v2024.4.0, v2024.4.1. Please update to a newer version by following these steps:" + "state" : "translated", + "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.10.0, v2024.10.1, v2024.10.2. Please downgrade to an older version by following these steps:" } }, "it" : { "stringUnit" : { - "state" : "needs_review", - "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.3.0, v2024.3.2, v2024.4.0, v2024.4.1. Please update to a newer version by following these steps:" + "state" : "translated", + "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.10.0, v2024.10.1, v2024.10.2. Please downgrade to an older version by following these steps:" } }, "nl" : { "stringUnit" : { - "state" : "needs_review", - "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.3.0, v2024.3.2, v2024.4.0, v2024.4.1. Please update to a newer version by following these steps:" + "state" : "translated", + "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.10.0, v2024.10.1, v2024.10.2. Please downgrade to an older version by following these steps:" } }, "pl" : { "stringUnit" : { - "state" : "needs_review", - "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.3.0, v2024.3.2, v2024.4.0, v2024.4.1. Please update to a newer version by following these steps:" + "state" : "translated", + "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.10.0, v2024.10.1, v2024.10.2. Please downgrade to an older version by following these steps:" } }, "pt" : { "stringUnit" : { - "state" : "needs_review", - "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.3.0, v2024.3.2, v2024.4.0, v2024.4.1. Please update to a newer version by following these steps:" + "state" : "translated", + "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.10.0, v2024.10.1, v2024.10.2. Please downgrade to an older version by following these steps:" } }, "ru" : { "stringUnit" : { - "state" : "needs_review", - "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.3.0, v2024.3.2, v2024.4.0, v2024.4.1. Please update to a newer version by following these steps:" + "state" : "translated", + "value" : "The following Bitwarden versions are incompatible with DuckDuckGo: v2024.10.0, v2024.10.1, v2024.10.2. Please downgrade to an older version by following these steps:" } } } @@ -8392,8 +8392,8 @@ "localizations" : { "de" : { "stringUnit" : { - "state" : "needs_review", - "value" : "Download v2024.4.3" + "state" : "translated", + "value" : "Download v2024.9.0" } }, "en" : { @@ -8404,44 +8404,44 @@ }, "es" : { "stringUnit" : { - "state" : "needs_review", - "value" : "Download v2024.4.3" + "state" : "translated", + "value" : "Download v2024.9.0" } }, "fr" : { "stringUnit" : { - "state" : "needs_review", - "value" : "Download v2024.4.3" + "state" : "translated", + "value" : "Download v2024.9.0" } }, "it" : { "stringUnit" : { - "state" : "needs_review", - "value" : "Download v2024.4.3" + "state" : "translated", + "value" : "Download v2024.9.0" } }, "nl" : { "stringUnit" : { - "state" : "needs_review", - "value" : "Download v2024.4.3" + "state" : "translated", + "value" : "Download v2024.9.0" } }, "pl" : { "stringUnit" : { - "state" : "needs_review", - "value" : "Download v2024.4.3" + "state" : "translated", + "value" : "Download v2024.9.0" } }, "pt" : { "stringUnit" : { - "state" : "needs_review", - "value" : "Download v2024.4.3" + "state" : "translated", + "value" : "Download v2024.9.0" } }, "ru" : { "stringUnit" : { - "state" : "needs_review", - "value" : "Download v2024.4.3" + "state" : "translated", + "value" : "Download v2024.9.0" } } } @@ -10248,7 +10248,7 @@ "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cancella" + "value" : "Elimina" } }, "nl" : { @@ -17607,6 +17607,366 @@ } } }, + "dbp.errorpage.bad.path.cta" : { + "comment" : "Call to action for moving the app to the Applications folder", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "App für mich verschieben ..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Move App for Me..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mover la aplicación..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Déplacer l'application pour moi…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sposta l'app per me..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "App voor mij verplaatsen..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przenieś aplikację za mnie..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mover a aplicação por mim..." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Перенести приложение..." + } + } + } + }, + "dbp.errorpage.bad.path.message" : { + "comment" : "Message for Personal Information Removal bad path error screen", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Um die Funktion „Personal Information Removal“ nutzen zu können, muss sich die DuckDuckGo-App im Ordner „Programme“ auf deinem Mac befinden. Du kannst die App selbst verschieben und den Browser neu starten, oder wir können das für dich tun." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "To use Personal Information Removal, the DuckDuckGo app needs to be in the Applications folder on your Mac. You can move the app yourself and restart the browser, or we can do it for you." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Para usar Personal Information Removal, la aplicación DuckDuckGo debe estar en la carpeta Aplicaciones de tu Mac. Puedes mover la aplicación y reiniciar el navegador, o podemos hacerlo por ti." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour pouvoir utiliser Personal Information Removal, l'application DuckDuckGo doit se trouver dans le dossier Applications de votre Mac. Vous pouvez déplacer l'application vous-même et redémarrer le navigateur, ou nous pouvons le faire pour vous." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Per usare la funzione di Personal Information Removal, l'app DuckDuckGo deve essere nella cartella Applicazioni del tuo Mac. Puoi spostare l'app autonomamente e riavviare il browser, oppure possiamo farlo noi." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Om Personal Information Removal te gebruiken, moet de DuckDuckGo-app in de map 'Apps' op je Mac staan. Je kunt de app zelf verplaatsen en de browser opnieuw opstarten, of wij kunnen het voor je doen." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aby umożliwić korzystanie z funkcji Personal Information Removal, aplikacja DuckDuckGo musi się znajdować w folderze Aplikacje na Twoim Macu. Możesz przenieść aplikację samodzielnie i ponownie uruchomić przeglądarkę lub możemy to zrobić za Ciebie." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Para utilizar a Personal Information Removal, a aplicação DuckDuckGo precisa de estar na pasta Aplicações do teu Mac. Podes mover a aplicação tu mesmo e reiniciar o navegador, ou podemos fazê-lo por ti." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Для использования функции удаления личной информации (Personal Information Removal) необходимо поместить приложение DuckDuckGo в папку «Программы» на Mac. Можно самостоятельно перенести приложение и перезапустить браузер либо поручить это действие нам." + } + } + } + }, + "dbp.errorpage.bad.path.title" : { + "comment" : "Title for Personal Information Removal bad path error screen", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo-App in den Ordner „Programme“ verschieben" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Move DuckDuckGo App to Applications" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mover la aplicación DuckDuckGo a Aplicaciones" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Déplacer l'application DuckDuckGo vers Applications" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sposta l'app DuckDuckGo in Applicazioni" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verplaats de DuckDuckGo-app naar Applicaties" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przenieś aplikację DuckDuckGo do folderu Aplikacje" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mover a aplicação DuckDuckGo para a pasta de Aplicações" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Перенесите DuckDuckGo в «Программы»" + } + } + } + }, + "dbp.errorpage.no.permission.cta" : { + "comment" : "Call to action for opening system settings", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Öffne die Systemeinstellungen ..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Open System Settings..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir Configuración del Sistema..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir les paramètres système..." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apri le impostazioni di sistema..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Systeeminstellingen openen ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz ustawienia systemowe..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir Definições do sistema…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Открыть системные настройки..." + } + } + } + }, + "dbp.errorpage.no.permission.message" : { + "comment" : "Message for error screen when there is no permission", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Öffne die Systemeinstellungen und erlaube DuckDuckGo Personal Information Removal, im Hintergrund zu laufen." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Open System Settings and allow DuckDuckGo Personal Information Removal to run in the background." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abre la configuración del sistema y permite que DuckDuckGo Personal Information Removal se ejecute en segundo plano." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrez les paramètres système et autorisez DuckDuckGo Personal Information Removal à s'exécuter en arrière-plan." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apri le impostazioni di sistema e consenti a DuckDuckGo Personal Information Removal di funzionare in background." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open de systeeminstellingen en sta toe dat DuckDuckGo Personal Information Removal op de achtergrond draait." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz ustawienia systemowe i zezwól funkcji DuckDuckGo Personal Information Removal na działanie w tle." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abre as definições do sistema e permite que o Personal Information Removal do DuckDuckGo seja executada em segundo plano." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Откройте «Системные настройки» и разрешите функции Personal Information Removal от DuckDuckGo работать в фоновом режиме." + } + } + } + }, + "dbp.errorpage.no.permission.title" : { + "comment" : "Title for error screen when there is no permission", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Systemeinstellung ändern" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Change System Setting" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cambia la configuración del sistema" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier le paramètre système" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cambia le impostazioni di sistema" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Systeeminstelling wijzigen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zmień ustawienie systemowe" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Alterar as definições do sistema" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Изменить системные настройки" + } + } + } + }, "default.browser.prompt.button" : { "comment" : "represents a prompt message asking the user to make DuckDuckGo their default browser.", "extractionState" : "extracted_with_value", @@ -19456,11 +19816,59 @@ "comment" : "Call to action for the OS specific downloads issue", "extractionState" : "extracted_with_value", "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Einstellungen öffnen" + } + }, "en" : { "stringUnit" : { "state" : "new", "value" : "Open Settings" } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir configuración" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir les paramètres" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apri Impostazioni" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open Instellingen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz ustawienia" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir Definições" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Открыть Настройки" + } } } }, @@ -19468,11 +19876,59 @@ "comment" : "Call to action for the OS specific downloads issue", "extractionState" : "extracted_with_value", "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wie man Updates durchführt" + } + }, "en" : { "stringUnit" : { "state" : "new", "value" : "How To Update" } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cómo actualizar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comment faire une mise à jour" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Come aggiornare" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Een update uitvoeren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jak zaktualizować" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Como atualizar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Как выполнить обновление" + } } } }, @@ -19480,11 +19936,59 @@ "comment" : "This error message will appear in an error banner when users cannot download files on macOS 14.7.1 or 15.0.1", "extractionState" : "extracted_with_value", "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Der Download ist aufgrund eines bekannten Problems unter macOS 14.7.1 und 15.0.1 fehlgeschlagen. Aktualisiere auf macOS 15.1 und versuche erneut, die Datei herunterzuladen." + } + }, "en" : { "stringUnit" : { "state" : "new", "value" : "The download failed because of a known issue on macOS 14.7.1 and 15.0.1. Update to macOS 15.1 and try downloading again." } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La descarga ha fallado debido a un problema conocido en macOS 14.7.1 y 15.0.1. Pásate a macOS 15.1 e intenta descargarlo de nuevo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le téléchargement a échoué en raison d'un problème connu sur macOS 14.7.1 et 15.0.1. Passez à macOS 15.1 et réessayez de télécharger." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il download non è riuscito a causa di un problema noto su macOS 14.7.1 e 15.0.1. Aggiorna a macOS 15.1 e prova a effettuare di nuovo il download." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "De download is mislukt door een bekend probleem in macOS 14.7.1 en 15.0.1. Werk je systeem bij naar macOS 15.1 en probeer de bestanden opnieuw te downloaden." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pobieranie nie powiodło się z powodu znanego błędu w systemach macOS 14.7.1 i 15.0.1. Zaktualizuj do macOS 15.1 i spróbuj pobrać ponownie." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A transferência falhou devido a um problema conhecido no macOS 14.7.1 e 15.0.1. Atualiza para o macOS 15.1 e tenta transferir novamente." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Вследствие известной проблемы с macOS версий 14.7.1 и 15.0.1. возник сбой при загрузке. Обновите macOS до версии 15.1 и повторите попытку." + } } } }, @@ -23396,6 +23900,66 @@ } } }, + "feedback-form.title" : { + "comment" : "Title for each screen of the feedback form", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hilf mit, Privacy Pro zu verbessern" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Help Improve Privacy Pro" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ayudar a mejorar Privacy Pro" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aidez-nous à améliorer Privacy Pro" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aiuta a migliorare Privacy Pro" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Help Privacy Pro te verbeteren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pomóż ulepszyć Privacy Pro" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajuda a melhorar o Privacy Pro" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Помогите нам улучшить Privacy Pro" + } + } + } + }, "feedback.bug.description" : { "comment" : "Label in the feedback form that users can submit to say that a website is not working properly in DuckDuckGo", "extractionState" : "extracted_with_value", @@ -25916,6 +26480,306 @@ } } }, + "general.feedback-form.category.itr" : { + "comment" : "Description for the feedback form when the issue is related to Identity Theft Restoration (ITR)", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Identity Theft Restoration" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + } + } + }, + "general.feedback-form.category.pir" : { + "comment" : "Description for the feedback form when the issue is related to Personal Info Removal (PIR)", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Personal Information Removal" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + } + } + }, + "general.feedback-form.category.ppro" : { + "comment" : "Description for the feedback form when the issue is related to subscription and payments", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement und Zahlungen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Subscription and Payments" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suscripción y pagos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement et paiements" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abbonamento e pagamenti" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnementen en betalingen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subskrypcja i płatności" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subscrição e Pagamentos" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подписки и платежи" + } + } + } + }, + "general.feedback-form.category.select-feature" : { + "comment" : "Title for the feature selection state of the general feedback form", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "EINE KATEGORIE AUSWÄHLEN" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Select a category" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "SELECCIONA UNA CATEGORÍA" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "SÉLECTIONNER UNE CATÉGORIE" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "SELEZIONA UNA CATEGORIA" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "SELECTEER EEN CATEGORIE" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "WYBIERZ KATEGORIĘ" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "SELECIONA UMA CATEGORIA" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "ВЫБЕРИТЕ КАТЕГОРИЮ" + } + } + } + }, + "general.feedback-form.category.vpn" : { + "comment" : "Description for the feedback form when the issue is related to VPN", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "VPN" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + } + } + }, "generic.delete.button" : { "comment" : "Label of a button that allows the user to delete an item", "extractionState" : "extracted_with_value", @@ -32467,6 +33331,306 @@ } } }, + "itr.feedback-form.category.access-code" : { + "comment" : "Description for the feedback form when there is an issue with the access code", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Problem mit dem Zugangscode" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Issue with access code" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Incidencia con código de acceso" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Problème avec le code d'accès" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Problema con il codice di accesso" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Probleem met toegangscode" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Problem z kodem dostępu" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Problema com o código de acesso" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Проблема с кодом доступа" + } + } + } + }, + "itr.feedback-form.category.contact-advisor" : { + "comment" : "Description for the feedback form when the user is unable to contact an advisor", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Berater kann nicht kontaktiert werden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Unable to contact advisor" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se puede contactar con el asesor" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible de contacter le conseiller" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossibile contattare il consulente" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kan geen contact opnemen met de adviseur" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie można skontaktować się z doradcą" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não é possível contactar o consultor" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Невозможно связаться с консультантом" + } + } + } + }, + "itr.feedback-form.category.select-category" : { + "comment" : "Title for the category selection state of the ITR feedback form", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "EINE KATEGORIE AUSWÄHLEN" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Select a category" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "SELECCIONA UNA CATEGORÍA" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "SÉLECTIONNER UNE CATÉGORIE" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "SELEZIONA UNA CATEGORIA" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "SELECTEER EEN CATEGORIE" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "WYBIERZ KATEGORIĘ" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "SELECIONA UMA CATEGORIA" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "ВЫБЕРИТЕ КАТЕГОРИЮ" + } + } + } + }, + "itr.feedback-form.category.something-else" : { + "comment" : "Description for the feedback form when the user has an issue not categorized in other options", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Etwas anderes" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Something else" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otro problema" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autre chose" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Qualcos'altro" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Iets anders" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Coś innego" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Outra coisa" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Что-то другое" + } + } + } + }, + "itr.feedback-form.category.unhelpful" : { + "comment" : "Description for the feedback form when the call to an advisor was unhelpful", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anruf beim Berater war nicht hilfreich" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Call to Advisor was unhelpful" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Llamar al asesor no ha ayudado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'échange avec le conseiller n'a pas été utile" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chiamata al consulente inutile" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Telefoontje naar adviseur hielp niet" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Połączenie z doradcą nie pomogło" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A chamada para o consultor não foi útil" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Мало толку от звонка консультанту" + } + } + } + }, "JavaScript Console" : { "comment" : "Main Menu View-Developer item", "localizations" : { @@ -33730,7 +34894,7 @@ "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cancella" + "value" : "Elimina" } }, "nl" : { @@ -36664,22184 +37828,24812 @@ } } }, - "Never Show" : { - "comment" : "Preference for never showing the bookmarks bar on new tab", + "network.protection" : { + "comment" : "Menu item for opening the VPN", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Niemals anzeigen" + "value" : "VPN" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "VPN" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "No mostrar nunca" + "value" : "VPN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ne jamais afficher" + "value" : "VPN" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Non mostrare mai" + "value" : "VPN" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nooit tonen" + "value" : "VPN" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nigdy nie pokazuj" + "value" : "VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nunca mostrar" + "value" : "VPN" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Не показывать" + "value" : "VPN" } } } }, - "never.for.this.site" : { - "comment" : "Never ask to save login credentials for this site button", + "network.protection.configuration.system-settings.legacy" : { + "comment" : "Text for a label in the VPN popover, displayed after attempting to enable the VPN for the first time while using macOS 12 and below", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Für diese Website niemals fragen" + "value" : "Gehe in den Systemeinstellungen zu „Sicherheit und Datenschutz“, um die Aktivierung von DuckDuckGo VPN zuzulassen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Never Ask for This Site" + "value" : "Go to Security & Privacy in System Preferences to allow DuckDuckGo VPN to activate" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "No preguntar nunca para esta página" + "value" : "Ve a Seguridad y Privacidad en las Preferencias del Sistema para permitir que la VPN de DuckDuckGo se active" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ne jamais demander pour ce site" + "value" : "Accédez à Sécurité et confidentialité dans les Préférences système pour autoriser l'activation du VPN DuckDuckGo" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Non chiedere mai per questo sito" + "value" : "Vai a Sicurezza e privacy in Preferenze di sistema per consentire l'attivazione della VPN di DuckDuckGo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nooit vragen voor deze site" + "value" : "Ga naar 'Beveiliging en privacy' in Systeemvoorkeuren om DuckDuckGo VPN te activeren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nigdy nie pytaj o tę witrynę" + "value" : "Przejdź do obszaru Prywatność i bezpieczeństwo w ustawieniach systemowych, aby zezwolić na aktywację DuckDuckGo VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nunca pedir para este site" + "value" : "Acede a Segurança & Privacidade nas Preferências do Sistema para autorizar a ativação da VPN DuckDuckGo VPN" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Больше не спрашивать на этом сайте" + "value" : "Чтобы разрешить активацию DuckDuckGo VPN, откройте раздел «Безопасность и конфиденциальность» в настройках системы." } } } }, - "new.burner.window.menu.item" : { - "comment" : "Menu item title", + "network.protection.configuration.system-settings.modern" : { + "comment" : "Text for a label in the VPN popover, displayed after attempting to enable the VPN for the first time while using macOS 13 and above", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neues Fire Window" + "value" : "Gehe in den Systemeinstellungen zu „Datenschutz und Sicherheit“, um die Aktivierung von DuckDuckGo VPN zuzulassen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "New Fire Window" + "value" : "Go to Privacy & Security in System Settings to allow DuckDuckGo VPN to activate" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Nueva Fire Window" + "value" : "Ve a Privacidad y Seguridad en los Ajustes del Sistema para permitir que la VPN de DuckDuckGo se active" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nouvelle Fire Window" + "value" : "Accédez à Confidentialité et sécurité dans les Paramètres système pour autoriser l'activation du VPN DuckDuckGo" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nuova Fire Window" + "value" : "Vai a Privacy e sicurezza in Impostazioni di sistema per consentire l'attivazione della VPN di DuckDuckGo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nieuw Fire Window" + "value" : "Ga naar 'Beveiliging en privacy' in Systeemvoorkeuren om DuckDuckGo VPN te activeren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nowe okno Fire Window" + "value" : "Przejdź do sekcji Prywatność i bezpieczeństwo w Ustawieniach systemowych, aby umożliwić aktywację DuckDuckGo VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nova Fire Window" + "value" : "Acede a Privacidade e Segurança nas Definições do Sistema para autorizar a ativação da VPN DuckDuckGo" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Новое окно Fire Window" + "value" : "Чтобы разрешить активацию DuckDuckGo VPN, откройте раздел «Конфиденциальность и безопасность» в настройках системы." } } } }, - "new.window.menu.item" : { - "comment" : "Menu item title", + "network.protection.invite.dialog.message" : { + "comment" : "Message for the VPN invite dialog", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neues Fenster" + "value" : "Gib deinen Einladungscode ein, um loszulegen." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "New Window" + "value" : "Enter your invite code to get started." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ventana nueva" + "value" : "Introduce tu código de invitación para empezar." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nouvelle fenêtre" + "value" : "Saisissez votre code d'invitation pour commencer." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nuova finestra" + "value" : "Inserisci il tuo codice invito per iniziare." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nieuw venster" + "value" : "Voer je uitnodigingscode in om te beginnen." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nowe okno" + "value" : "Wprowadź swój kod zaproszenia, aby rozpocząć." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nova janela" + "value" : "Introduz o código de convite para começares." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Новое окно" + "value" : "Для начала введите пригласительный код." } } } }, - "newTab.bottom.popover.title" : { - "comment" : "Title of the popover that appears when pressing the bottom right button", + "network.protection.invite.dialog.title" : { + "comment" : "Title for the VPN invite dialog", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neue Tab-Seite" + "value" : "Gib deinen Einladungscode ein" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "New Tab Page" + "value" : "Enter your invite code" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Página de nueva pestaña" + "value" : "Introduce tu código de invitación" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nouvelle page d'onglet" + "value" : "Saisissez votre code d'invitation" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Pagina Nuova scheda" + "value" : "Inserisci il tuo codice di invito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nieuwe tabbladpagina" + "value" : "Voer je uitnodigingscode in" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Strona nowej karty" + "value" : "Wprowadź swój kod zaproszenia" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nova página de separador" + "value" : "Introduz o teu código de convite" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Страница новой вкладки" + "value" : "Введите код приглашения" } } } }, - "newTab.favorites.section.title" : { - "comment" : "Title of the Favorites section in the home page", + "network.protection.invite.field.prompt" : { + "comment" : "Prompt for the VPN invite code text field", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Favoriten" + "value" : "Code" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Favorites" + "value" : "Code" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Favoritos" + "value" : "Código" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Favoris" + "value" : "Code" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Preferiti" + "value" : "Codice" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Favorieten" + "value" : "Code" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ulubione" + "value" : "Kod" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Favoritos" + "value" : "Código" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Избранное" + "value" : "Код" } } } }, - "newTab.menu.item.show.continue.setup" : { - "comment" : "Title of the menu item in the home page to show/hide continue setup section", + "network.protection.invite.success.title" : { + "comment" : "Message for the VPN invite success view\nTitle for the VPN invite success view", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nächste Schritte anzeigen" + "value" : "Das VPN von DuckDuckGo sichert den gesamten Internetverkehr deines Geräts, jederzeit und überall." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show Next Steps" + "value" : "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar pasos siguientes" + "value" : "La VPN de DuckDuckGo protege todo el tráfico de Internet de tu dispositivo en cualquier momento y en cualquier lugar." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher les étapes suivantes" + "value" : "Le VPN de DuckDuckGo sécurise tout le trafic Internet de votre appareil à tout moment et où que vous soyez." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra i passaggi successivi" + "value" : "La VPN di DuckDuckGo protegge tutto il traffico Internet del tuo dispositivo in qualsiasi momento e luogo." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Volgende stappen weergeven" + "value" : "De VPN van DuckDuckGo beveiligt al het internetverkeer van je apparaat, altijd en overal." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż dalsze kroki" + "value" : "VPN DuckDuckGo zabezpiecza cały ruch internetowy urządzenia, w wybranym momencie i w dowolnej lokalizacji." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar passos seguintes" + "value" : "A VPN DuckDuckGo protege todo o tráfego de Internet do teu dispositivo a qualquer momento e em qualquer lugar." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать дальнейшие шаги" + "value" : "VPN от DuckDuckGo защищает весь интернет-трафик вашего устройства в любое время и в любом месте." } } } }, - "newTab.menu.item.show.favorite" : { - "comment" : "Title of the menu item in the home page to show/hide favorite section", + "network.protection.navbar.status.view.faq" : { + "comment" : "The status menu 'FAQ' menu item", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Favoriten anzeigen" + "value" : "F&A und Support …" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show Favorites" + "value" : "FAQs and Support…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar favoritos" + "value" : "Preguntas frecuentes y asistencia..." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher les favoris" + "value" : "FAQ et assistance…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra Preferiti" + "value" : "Domande frequenti e assistenza..." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Favorieten weergeven" + "value" : "Veelgestelde vragen en ondersteuning ..." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż ulubione" + "value" : "Często zadawane pytania i pomoc techniczna..." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar favoritos" + "value" : "Perguntas Frequentes e Apoio Técnico…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показывать избранное" + "value" : "Часто задаваемые вопросы и поддержка…" } } } }, - "newTab.menu.item.show.recent.activity" : { - "comment" : "Title of the menu item in the home page to show/hide recent activity section", + "network.protection.navbar.status.view.send.feedback" : { + "comment" : "Menu item for 'Send Feedback' in the VPN status view that's shown in the navigation bar", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Aktuelle Aktivität anzeigen" + "value" : "Rückmeldung senden …" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show Recent Activity" + "value" : "Send Feedback…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar actividad reciente" + "value" : "Enviar comentarios…" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher l'activité récente" + "value" : "Envoyer des commentaires…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra attività recente" + "value" : "Invia feedback…" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Recente activiteit weergeven" + "value" : "Feedback verzenden ..." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż ostatnią aktywność" + "value" : "Wyślij opinię..." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar atividade recente" + "value" : "Enviar feedback…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать недавнюю активность" + "value" : "Отправить отзыв…" } } } }, - "newTab.menu.item.show.search.bar" : { - "comment" : "Title of the menu item in the home page to show/hide search box (search field)", + "network.protection.navbar.status.view.vpn.settings" : { + "comment" : "The status menu 'VPN Settings' menu item", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Suchfeld anzeigen" + "value" : "VPN-Einstellungen …" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show Search Box" + "value" : "VPN Settings…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar el cuadro de búsqueda" + "value" : "Configuración de VPN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher la boîte de recherche" + "value" : "Réglages VPN…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra la casella di ricerca" + "value" : "Impostazioni VPN…" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Zoekvak weergeven" + "value" : "VPN-instellingen …" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż pole wyszukiwania" + "value" : "Ustawienia VPN..." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar caixa de pesquisa" + "value" : "Definições da VPN…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показывать поле поиска" + "value" : "Настройки VPN..." } } } }, - "newTab.recent.activity.section.title" : { - "comment" : "Title of the RecentActivity section in the home page", + "network.protection.status.button.tooltip" : { + "comment" : "The tooltip for NetP's nav bar button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Aktuelle Aktivitäten" + "value" : "VPN" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Recent Activity" + "value" : "VPN" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Actividad reciente" + "value" : "VPN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Activité récente" + "value" : "VPN" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Attività recente" + "value" : "VPN" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Recente activiteit" + "value" : "VPN" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ostatnia aktywność" + "value" : "VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Atividade recente" + "value" : "VPN" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Недавняя активность" + "value" : "VPN" } } } }, - "newTab.search.bar.section.title" : { - "comment" : "Setting to show or hide the search box (search field) in the home page", + "network.protection.system.extension.please.reboot" : { + "comment" : "Message shown to users when they try to enable NetP and they need to reboot the computer to complete the installation", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Suchfeld" + "value" : "VPN-Update verfügbar. Starte deinen Mac neu, um die Verbindung wiederherzustellen." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Search Box" + "value" : "VPN update available. Restart your Mac to reconnect." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Cuadro de búsqueda" + "value" : "Actualización de VPN disponible. Reinicia tu Mac para volver a conectarte." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Champ de recherche" + "value" : "Une mise à jour du VPN est disponible. Redémarrez votre Mac pour vous reconnecter." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Casella di ricerca" + "value" : "Aggiornamento VPN disponibile. Riavvia il Mac per riconnetterti." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Zoekveld" + "value" : "VPN-update beschikbaar. Herstart je Mac om opnieuw verbinding te maken." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pole wyszukiwania" + "value" : "Dostępna jest aktualizacja VPN. Zrestartuj komputer Mac, aby ponownie nawiązać połączenie." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Caixa de pesquisa" + "value" : "Atualização de VPN disponível. Reinicia o teu Mac para reiniciar a ligação." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Поле поиска" + "value" : "Доступно обновление VPN. Перезагрузите компьютер, чтобы восстановить подключение." } } } }, - "newTab.setup.default.browser.action" : { - "comment" : "Action title on the action menu of the Default Browser card", + "network.protection.system.extension.unknown.activation.error" : { + "comment" : "Message shown to users when they try to enable NetP and there is an unexpected activation error.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Standardbrowser erstellen" + "value" : "Es ist ein unerwarteter Fehler aufgetreten. Bitte versuche es noch einmal." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Make Default Browser" + "value" : "There was an unexpected error. Please try again." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Convertir en navegador predeterminado" + "value" : "Se ha producido un error inesperado. Inténtalo de nuevo." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Définir comme navigateur par défaut" + "value" : "Une erreur inattendue s'est produite. Veuillez réessayer." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Rendi il browser predefinito" + "value" : "Si è verificato un errore imprevisto. Riprova." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Instellen als standaardbrowser" + "value" : "Er is een onverwachte fout opgetreden. Probeer het opnieuw." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ustaw jako domyślną przeglądarkę" + "value" : "Wystąpił nieoczekiwany błąd. Spróbuj ponownie." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Tornar navegador predefinido" + "value" : "Ocorreu um erro inesperado. Tenta novamente." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Назначить браузером по умолчанию" + "value" : "Произошла непредвиденная ошибка. Повторите попытку." } } } }, - "newTab.setup.default.browser.summary" : { - "comment" : "Summary of the Default Browser card", + "network.protection.tunnel.name" : { + "comment" : "The name of the NetP VPN that will be visible in the system to the user", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Wir blockieren automatisch Tracker, während du browst. Das ist Datenschutz, vereinfacht." + "value" : "DuckDuckGo-VPN" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "We automatically block trackers as you browse. It's privacy, simplified." + "value" : "DuckDuckGo VPN" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Bloqueamos automáticamente los rastreadores mientras navegas. Es tan solo privacidad simplificada." + "value" : "DuckDuckGo VPN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nous bloquons automatiquement les traqueurs lorsque vous naviguez. C'est la confidentialité, simplifiée." + "value" : "VPN DuckDuckGo" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Blocchiamo automaticamente i sistemi di tracciamento mentre navighi. La privacy, semplificata." + "value" : "VPN DuckDuckGo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "We blokkeren automatisch trackers wanneer je surft. Dat is privacy, vereenvoudigd." + "value" : "DuckDuckGo VPN" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Podczas przeglądania automatycznie blokujemy mechanizmy śledzące. To prywatność – jeszcze prostsza." + "value" : "DuckDuckGo VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Bloqueamos automaticamente os rastreadores enquanto navegas. É privacidade, simplificada." + "value" : "VPN do DuckDuckGo" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Пока вы ходите по сайтам, мы автоматически блокируем трекеры. Максимум защиты, минимум усилий." + "value" : "DuckDuckGo VPN" } } } }, - "newTab.setup.default.browser.title" : { - "comment" : "Title of the Default Browser card of the Set Up section in the home page", + "network.protection.vpn.location.country.item.formatted.cities.count" : { + "comment" : "Subtitle of countries item when there are multiple cities, example: '5 cities'", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Standardmäßig auf Datenschutz einstellen" + "value" : "%d Städte" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Default to Privacy" + "value" : "%d cities" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Predeterminado a Privacidad" + "value" : "%d ciudades" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "La confidentialité par défaut" + "value" : "%d cities" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "La privacy prima di tutto" + "value" : "%d città" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Standaard ingesteld op Privacy" + "value" : "%d steden" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Domyślnie ustaw prywatność" + "value" : "Miasta: %d" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Predefinir a privacidade" + "value" : "%d cidades" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Конфиденциальность по умолчанию" + "value" : "Городов: %d" } } } }, - "newTab.setup.dock.action" : { - "comment" : "Action title on the action menu of the 'Add App to the Dock' card", + "network.protection.vpn.location.formatter.nearest.location" : { + "comment" : "Nearest available location setting description", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Im Dock behalten" + "value" : "Nächstgelegener Standort" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Keep In Dock" + "value" : "Nearest Location" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mantener en Dock" + "value" : "Ubicación más cercana" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Garder dans le Dock" + "value" : "Emplacement le plus proche" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Resta nel dock" + "value" : "Posizione più vicina" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "In het Dock houden" + "value" : "Dichtstbijzijnde locatie" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Trzymaj w Docku" + "value" : "Najbliższa lokalizacja" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Manter na Dock" + "value" : "Localização Mais Próxima" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Ярлык для док-панели" + "value" : "Ближайшее место" } } } }, - "newTab.setup.dock.confirmation" : { - "comment" : "Confirmation title after user clicks on 'Add to Dock' card", + "network.protection.vpn.location.formatter.nearest.location.descriptor" : { + "comment" : "Description added after the nearest location in the VPN status view", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zum Dock hinzugefügt!" + "value" : "(Nächstgelegen)" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Added to Dock!" + "value" : "(Nearest)" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¡Añadido al Dock!" + "value" : "(Más cercano)" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ajouté au Dock !" + "value" : "(La plus proche)" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiunto al dock!" + "value" : "(Più vicino)" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Toegevoegd aan Dock!" + "value" : "(Dichtstbijzijnde)" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dodano do Docka!" + "value" : "(Najbliższa)" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Adicionado à Dock!" + "value" : "(Mais próxima)" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Ярлык добавлен на док-панель." + "value" : "(Ближайшее)" } } } }, - "newTab.setup.dock.summary" : { - "comment" : "Summary of the 'Add App to the Dock' card", - "extractionState" : "extracted_with_value", + "Never Show" : { + "comment" : "Preference for never showing the bookmarks bar on new tab", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Du kannst DuckDuckGo schneller erreichen, indem du es zu deinem Dock hinzufügst." - } - }, - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "Get to DuckDuckGo faster by adding it to your Dock." + "value" : "Niemals anzeigen" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Accede a DuckDuckGo más rápido añadiéndolo a tu Dock." + "value" : "No mostrar nunca" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Accédez plus rapidement à DuckDuckGo en l'ajoutant à votre Dock." + "value" : "Ne jamais afficher" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Accedi più velocemente a DuckDuckGo aggiungendolo al tuo dock." + "value" : "Non mostrare mai" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Ga sneller naar DuckDuckGo door het aan je Dock toe te voegen." + "value" : "Nooit tonen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Uzyskuj szybszy dostęp do przeglądarki DuckDuckGo dzięki jej dodaniu do Docka." + "value" : "Nigdy nie pokazuj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Acede ao DuckDuckGo mais rapidamente adicionando-o à tua Dock." + "value" : "Nunca mostrar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Добавьте DuckDuckGo на док-панель для быстрого запуска." + "value" : "Не показывать" } } } }, - "newTab.setup.dock.title" : { - "comment" : "Title of the new tab page card for adding application to the Dock", + "never.for.this.site" : { + "comment" : "Never ask to save login credentials for this site button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "In deinem Dock behalten" + "value" : "Für diese Website niemals fragen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Keep in Your Dock" + "value" : "Never Ask for This Site" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mantener en tu Dock" + "value" : "No preguntar nunca para esta página" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Garder dans votre Dock" + "value" : "Ne jamais demander pour ce site" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Tieni nel tuo dock" + "value" : "Non chiedere mai per questo sito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bewaar in je dock" + "value" : "Nooit vragen voor deze site" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Trzymaj w Docku" + "value" : "Nigdy nie pytaj o tę witrynę" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Manter na tua Dock" + "value" : "Nunca pedir para este site" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Ярлык для док-панели" + "value" : "Больше не спрашивать на этом сайте" } } } }, - "newTab.setup.duck.player.action" : { - "comment" : "Action title on the action menu of the Duck Player card of the Set Up section in the home page", + "new.burner.window.menu.item" : { + "comment" : "Menu item title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Player testen" + "value" : "Neues Fire Window" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Try Duck Player" + "value" : "New Fire Window" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Prueba Duck Player" + "value" : "Nueva Fire Window" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Essayer Duck Player" + "value" : "Nouvelle Fire Window" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Prova Duck Player" + "value" : "Nuova Fire Window" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Probeer Duck Player" + "value" : "Nieuw Fire Window" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wypróbuj Duck Player" + "value" : "Nowe okno Fire Window" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Experimente o Duck Player" + "value" : "Nova Fire Window" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Попробовать Duck Player" + "value" : "Новое окно Fire Window" } } } }, - "newTab.setup.duck.player.summary" : { - "comment" : "Summary of the Duck Player card of the Set Up section in the home page", + "new.window.menu.item" : { + "comment" : "Menu item title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Genieße ein sauberes Seherlebnis ohne personalisierte Werbung." + "value" : "Neues Fenster" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Enjoy a clean viewing experience without personalized ads." + "value" : "New Window" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Disfruta de una experiencia de visualización limpia sin anuncios personalizados." + "value" : "Ventana nueva" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Profitez d'une expérience de visionnage épurée, sans publicités personnalisées." + "value" : "Nouvelle fenêtre" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Usufruisci di un'esperienza di visione lineare, senza annunci personalizzati." + "value" : "Nuova finestra" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Beleef ongeëvenaard kijkplezier zonder gepersonaliseerde advertenties." + "value" : "Nieuw venster" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Korzystaj z czystego środowiska oglądania bez spersonalizowanych reklam." + "value" : "Nowe okno" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Desfruta de uma experiência de visualização limpa sem anúncios personalizados." + "value" : "Nova janela" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "«Чистый» просмотр без персонализированной рекламы." + "value" : "Новое окно" } } } }, - "newTab.setup.duck.player.title" : { - "comment" : "Title of the Duck Player card of the Set Up section in the home page", + "newTab.bottom.popover.title" : { + "comment" : "Title of the popover that appears when pressing the bottom right button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "YouTube aufräumen" + "value" : "Neue Tab-Seite" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Clean Up YouTube" + "value" : "New Tab Page" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Limpiar YouTube" + "value" : "Página de nueva pestaña" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Place nette sur YouTube" + "value" : "Nouvelle page d'onglet" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ripulisci YouTube" + "value" : "Pagina Nuova scheda" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "YouTube opruimen" + "value" : "Nieuwe tabbladpagina" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Oczyść YouTube" + "value" : "Strona nowej karty" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Limpar YouTube" + "value" : "Nova página de separador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "YouTube в очищенном варианте" + "value" : "Страница новой вкладки" } } } }, - "newTab.setup.email.protection.action" : { - "comment" : "Action title on the action menu of the Email Protection card of the Set Up section in the home page", + "newTab.favorites.section.title" : { + "comment" : "Title of the Favorites section in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Hol dir eine Duck Address" + "value" : "Favoriten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Get a Duck Address" + "value" : "Favorites" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Consigue una Duck Address" + "value" : "Favoritos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Se procurer une Duck Address" + "value" : "Favoris" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ottieni un Duck Address" + "value" : "Preferiti" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Een Duck Address aanmaken" + "value" : "Favorieten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Uzyskaj Duck Address" + "value" : "Ulubione" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Obtém um Duck Address" + "value" : "Favoritos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Создать адрес Duck Address" + "value" : "Избранное" } } } }, - "newTab.setup.email.protection.summary" : { - "comment" : "Summary of the Email Protection card of the Set Up section in the home page", + "newTab.menu.item.show.continue.setup" : { + "comment" : "Title of the menu item in the home page to show/hide continue setup section", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Erstelle eigene @duck.com-Adressen, die Tracker aus eingehenden E-Mails entfernen." + "value" : "Nächste Schritte anzeigen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Generate custom @duck.com addresses that clean trackers from incoming email." + "value" : "Show Next Steps" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Genera direcciones personalizadas de @duck.com que limpien los rastreadores del correo electrónico entrante." + "value" : "Mostrar pasos siguientes" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Générez des adresses @duck.com personnalisées qui débarrassent les e-mails entrants des traqueurs." + "value" : "Afficher les étapes suivantes" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Genera indirizzi @duck.com personalizzati che eliminano i sistemi di tracciamento della posta in arrivo." + "value" : "Mostra i passaggi successivi" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Aangepaste @duck.com-adressen genereren om trackers van binnenkomende e-mails te wissen." + "value" : "Volgende stappen weergeven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Generuj adresy w domenie @duck.com, które usuwają skrypty śledzące z przychodzących e-maili." + "value" : "Pokaż dalsze kroki" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Gera endereços @duck.com personalizados que limpam os rastreadores dos e-mails recebidos." + "value" : "Mostrar passos seguintes" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Уникальные почтовые адреса на домене @duck.com для очистки входящей почты от трекеров." + "value" : "Показать дальнейшие шаги" } } } }, - "newTab.setup.email.protection.title" : { - "comment" : "Title of the Email Protection card of the Set Up section in the home page", + "newTab.menu.item.show.favorite" : { + "comment" : "Title of the menu item in the home page to show/hide favorite section", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Schütze deinen Posteingang" + "value" : "Favoriten anzeigen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Protect Your Inbox" + "value" : "Show Favorites" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Protege tu bandeja de entrada" + "value" : "Mostrar favoritos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Protégez votre boîte de réception" + "value" : "Afficher les favoris" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Proteggi la tua casella di posta" + "value" : "Mostra Preferiti" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bescherm je inbox" + "value" : "Favorieten weergeven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Chroń swoją skrzynkę odbiorczą" + "value" : "Pokaż ulubione" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Protege a tua caixa de entrada" + "value" : "Mostrar favoritos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Защита для вашей почты" + "value" : "Показывать избранное" } } } }, - "newTab.setup.Import.action" : { - "comment" : "Action title on the action menu of the Import card of the Set Up section in the home page", + "newTab.menu.item.show.recent.activity" : { + "comment" : "Title of the menu item in the home page to show/hide recent activity section", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Jetzt importieren" + "value" : "Aktuelle Aktivität anzeigen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Import Now" + "value" : "Show Recent Activity" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Importar ahora" + "value" : "Mostrar actividad reciente" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Importer dès maintenant" + "value" : "Afficher l'activité récente" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Importa ora" + "value" : "Mostra attività recente" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nu importeren" + "value" : "Recente activiteit weergeven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Importuj teraz" + "value" : "Pokaż ostatnią aktywność" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Importar agora" + "value" : "Mostrar atividade recente" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Импортировать" + "value" : "Показать недавнюю активность" } } } }, - "newTab.setup.import.summary" : { - "comment" : "Summary of the Import card of the Set Up section in the home page", + "newTab.menu.item.show.search.bar" : { + "comment" : "Title of the menu item in the home page to show/hide search box (search field)", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Importiere Lesezeichen, Favoriten und Passwörter aus deinem alten Browser." + "value" : "Suchfeld anzeigen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Import bookmarks, favorites, and passwords from your old browser." + "value" : "Show Search Box" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Importa marcadores, favoritos y contraseñas desde tu navegador antiguo." + "value" : "Mostrar el cuadro de búsqueda" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Importez des signets, des favoris et des mots de passe depuis votre ancien navigateur." + "value" : "Afficher la boîte de recherche" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Importa segnalibri, preferiti e password dal tuo vecchio browser." + "value" : "Mostra la casella di ricerca" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bladwijzers, favorieten en wachtwoorden vanuit je vorige browser importeren." + "value" : "Zoekvak weergeven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zaimportuj zakładki, elementy ulubione i hasła ze starej przeglądarki." + "value" : "Pokaż pole wyszukiwania" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Importa marcadores, favoritos e palavras-passe do teu navegador antigo." + "value" : "Mostrar caixa de pesquisa" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Закладки, избранное и пароли можно импортировать из старого браузера." + "value" : "Показывать поле поиска" } } } }, - "newTab.setup.import.title" : { - "comment" : "Title of the Import card of the Set Up section in the home page", + "newTab.recent.activity.section.title" : { + "comment" : "Title of the RecentActivity section in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bring deine Sachen" + "value" : "Aktuelle Aktivitäten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Bring Your Stuff" + "value" : "Recent Activity" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Trae tus cosas" + "value" : "Actividad reciente" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Emportez tout avec vous" + "value" : "Activité récente" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Importa i tuoi file" + "value" : "Attività recente" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Neem je favorieten mee" + "value" : "Recente activiteit" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przenieś swoje rzeczy" + "value" : "Ostatnia aktywność" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Traz as tuas coisas" + "value" : "Atividade recente" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Все свое с собой" + "value" : "Недавняя активность" } } } }, - "newTab.setup.remove.item" : { - "comment" : "Action title on the action menu of the set up cards card of the SetUp section in the home page to remove the item", + "newTab.search.bar.section.title" : { + "comment" : "Setting to show or hide the search box (search field) in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Verwerfen" + "value" : "Suchfeld" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Dismiss" + "value" : "Search Box" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Descartar" + "value" : "Cuadro de búsqueda" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ignorer" + "value" : "Champ de recherche" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ignora" + "value" : "Casella di ricerca" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Negeren" + "value" : "Zoekveld" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Odrzuć" + "value" : "Pole wyszukiwania" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ignorar" + "value" : "Caixa de pesquisa" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Отклонить" + "value" : "Поле поиска" } } } }, - "newTab.setup.section.title" : { - "comment" : "Title of the setup section in the home page", + "newTab.setup.default.browser.action" : { + "comment" : "Action title on the action menu of the Default Browser card", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nächste Schritte" + "value" : "Standardbrowser erstellen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Next Steps" + "value" : "Make Default Browser" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Próximos pasos" + "value" : "Convertir en navegador predeterminado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Étapes suivantes" + "value" : "Définir comme navigateur par défaut" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Passaggi successivi" + "value" : "Rendi il browser predefinito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Volgende stappen" + "value" : "Instellen als standaardbrowser" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dalsze kroki" + "value" : "Ustaw jako domyślną przeglądarkę" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Passos seguintes" + "value" : "Tornar navegador predefinido" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Дальнейшие шаги" + "value" : "Назначить браузером по умолчанию" } } } }, - "next" : { - "comment" : "Next button", + "newTab.setup.default.browser.summary" : { + "comment" : "Summary of the Default Browser card", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Weiter" + "value" : "Wir blockieren automatisch Tracker, während du browst. Das ist Datenschutz, vereinfacht." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Next" + "value" : "We automatically block trackers as you browse. It's privacy, simplified." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Siguiente" + "value" : "Bloqueamos automáticamente los rastreadores mientras navegas. Es tan solo privacidad simplificada." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Suivant" + "value" : "Nous bloquons automatiquement les traqueurs lorsque vous naviguez. C'est la confidentialité, simplifiée." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Successivo" + "value" : "Blocchiamo automaticamente i sistemi di tracciamento mentre navighi. La privacy, semplificata." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Volgende" + "value" : "We blokkeren automatisch trackers wanneer je surft. Dat is privacy, vereenvoudigd." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dalej" + "value" : "Podczas przeglądania automatycznie blokujemy mechanizmy śledzące. To prywatność – jeszcze prostsza." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Seguinte" + "value" : "Bloqueamos automaticamente os rastreadores enquanto navegas. É privacidade, simplificada." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Далее" + "value" : "Пока вы ходите по сайтам, мы автоматически блокируем трекеры. Максимум защиты, минимум усилий." } } } }, - "no.access.to.downloads.folder.header" : { - "comment" : "Header of the alert dialog warning the user they need to give the browser permission to access the Downloads folder", + "newTab.setup.default.browser.title" : { + "comment" : "Title of the Default Browser card of the Set Up section in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo benötigt die Erlaubnis, auf deinen Downloads-Ordner zuzugreifen" + "value" : "Standardmäßig auf Datenschutz einstellen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "DuckDuckGo needs permission to access your Downloads folder" + "value" : "Default to Privacy" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo necesita permiso para acceder a tu carpeta de descargas" + "value" : "Predeterminado a Privacidad" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo a besoin d'une autorisation pour accéder à votre dossier Téléchargements" + "value" : "La confidentialité par défaut" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo ha bisogno dell'autorizzazione per accedere alla tua cartella Download" + "value" : "La privacy prima di tutto" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo heeft toestemming nodig om toegang te krijgen tot je downloadsmap" + "value" : "Standaard ingesteld op Privacy" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo potrzebuje pozwolenia na dostęp do folderu Pobrane" + "value" : "Domyślnie ustaw prywatność" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O DuckDuckGo precisa de permissão para aceder à tua pasta Transferências" + "value" : "Predefinir a privacidade" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo запрашивает доступ к папке «Загрузки»" + "value" : "Конфиденциальность по умолчанию" } } } }, - "no.access.to.downloads.folder.legacy" : { - "comment" : "Alert presented to user if the app doesn't have rights to access Downloads folder. This is used for macOS version 12 and below", + "newTab.setup.dock.action" : { + "comment" : "Action title on the action menu of the 'Add App to the Dock' card", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Erlaube den Zugriff in den Einstellungen für Sicherheit und Datenschutz in den Systemeinstellungen." + "value" : "Im Dock behalten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Grant access in Security & Privacy preferences in System Settings." + "value" : "Keep In Dock" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Concede acceso en las preferencias de Seguridad y privacidad en Configuración del sistema." + "value" : "Mantener en Dock" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Accordez l'accès dans les préférences de sécurité et de confidentialité des paramètres système." + "value" : "Garder dans le Dock" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Concedi l'accesso alle preferenze di Sicurezza e Privacy nelle Impostazioni di sistema." + "value" : "Resta nel dock" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Geef toegang in Beveiligings- en privacyvoorkeuren in Systeeminstellingen." + "value" : "In het Dock houden" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przyznaj dostęp w preferencjach dotyczących bezpieczeństwa i prywatności w ustawieniach systemowych." + "value" : "Trzymaj w Docku" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Concede acesso nas preferências de segurança e privacidade em Definições do sistema." + "value" : "Manter na Dock" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Предоставьте доступ в разделе «Безопасность и конфиденциальность» в настройках системы." + "value" : "Ярлык для док-панели" } } } }, - "no.access.to.downloads.folder.modern" : { - "comment" : "Alert presented to user if the app doesn't have rights to access Downloads folder. This is used for macOS version 13 and above", + "newTab.setup.dock.confirmation" : { + "comment" : "Confirmation title after user clicks on 'Add to Dock' card", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Erlaube den Zugriff in den Einstellungen für Datenschutz und Sicherheit in den Systemeinstellungen." + "value" : "Zum Dock hinzugefügt!" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Grant access in Privacy & Security preferences in System Settings." + "value" : "Added to Dock!" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Concede acceso en las preferencias de Seguridad y privacidad en Configuración del sistema." + "value" : "¡Añadido al Dock!" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Accordez l'accès dans les préférences de confidentialité et de sécurité des paramètres système." + "value" : "Ajouté au Dock !" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Concedi l'accesso alle preferenze di Privacy e Sicurezza nelle Impostazioni di sistema." + "value" : "Aggiunto al dock!" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Geef toegang in Privacy en beveiligingsvoorkeuren in Systeeminstellingen." + "value" : "Toegevoegd aan Dock!" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przyznaj dostęp w preferencjach dotyczących prywatności i bezpieczeństwa w ustawieniach systemowych." + "value" : "Dodano do Docka!" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Conceda acesso às preferências de privacidade e segurança em Definições do sistema." + "value" : "Adicionado à Dock!" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Предоставьте доступ в разделе «Конфиденциальность и безопасность» в настройках системы." + "value" : "Ярлык добавлен на док-панель." } } } }, - "notification.auto.update.action" : { - "comment" : "Action to take when an automatic update is available.", + "newTab.setup.dock.summary" : { + "comment" : "Summary of the 'Add App to the Dock' card", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zum Aktualisieren neu starten." + "value" : "Du kannst DuckDuckGo schneller erreichen, indem du es zu deinem Dock hinzufügst." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Restart to update." + "value" : "Get to DuckDuckGo faster by adding it to your Dock." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Reinicia para actualizar." + "value" : "Accede a DuckDuckGo más rápido añadiéndolo a tu Dock." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Redémarrer pour mettre à jour." + "value" : "Accédez plus rapidement à DuckDuckGo en l'ajoutant à votre Dock." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riavvia per aggiornare." + "value" : "Accedi più velocemente a DuckDuckGo aggiungendolo al tuo dock." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Start opnieuw om bij te werken." + "value" : "Ga sneller naar DuckDuckGo door het aan je Dock toe te voegen." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Uruchom ponownie, aby zaktualizować." + "value" : "Uzyskuj szybszy dostęp do przeglądarki DuckDuckGo dzięki jej dodaniu do Docka." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Reiniciar para atualizar." + "value" : "Acede ao DuckDuckGo mais rapidamente adicionando-o à tua Dock." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Перезапустите приложение." + "value" : "Добавьте DuckDuckGo на док-панель для быстрого запуска." } } } }, - "notification.badge.cookiesmanaged" : { - "comment" : "Notification that appears when browser automatically handle cookies", + "newTab.setup.dock.title" : { + "comment" : "Title of the new tab page card for adding application to the Dock", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Cookies verwaltet" + "value" : "In deinem Dock behalten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Cookies Managed" + "value" : "Keep in Your Dock" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Cookies gestionadas" + "value" : "Mantener en tu Dock" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Cookies gérés" + "value" : "Garder dans votre Dock" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cookie gestiti" + "value" : "Tieni nel tuo dock" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Beheerde cookies" + "value" : "Bewaar in je dock" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zarządzane pliki cookie" + "value" : "Trzymaj w Docku" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Cookies geridos" + "value" : "Manter na tua Dock" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Kуки-файлы выбраны" + "value" : "Ярлык для док-панели" } } } }, - "notification.badge.popuphidden" : { - "comment" : "Notification that appears when browser cosmetically hides a cookie popup", + "newTab.setup.duck.player.action" : { + "comment" : "Action title on the action menu of the Duck Player card of the Set Up section in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Pop-up ausgeblendet" + "value" : "Duck Player testen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Pop-up Hidden" + "value" : "Try Duck Player" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ventana emergente oculta" + "value" : "Prueba Duck Player" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Fenêtre contextuelle masquée" + "value" : "Essayer Duck Player" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Popup nascosto" + "value" : "Prova Duck Player" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Pop-up verborgen" + "value" : "Probeer Duck Player" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ukryte wyskakujące okienka" + "value" : "Wypróbuj Duck Player" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Pop-up ocultado" + "value" : "Experimente o Duck Player" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Всплывающее окно скрыто" + "value" : "Попробовать Duck Player" } } } }, - "notification.browser.downgraded" : { - "comment" : "Notification informing user the app has been downgraded", + "newTab.setup.duck.player.summary" : { + "comment" : "Summary of the Duck Player card of the Set Up section in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Browser herabgestuft" + "value" : "Genieße ein sauberes Seherlebnis ohne personalisierte Werbung." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Browser Downgraded" + "value" : "Enjoy a clean viewing experience without personalized ads." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Navegador degradado" + "value" : "Disfruta de una experiencia de visualización limpia sin anuncios personalizados." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Version antérieure du navigateur activée" + "value" : "Profitez d'une expérience de visionnage épurée, sans publicités personnalisées." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Browser declassato" + "value" : "Usufruisci di un'esperienza di visione lineare, senza annunci personalizzati." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Browser gedegradeerd" + "value" : "Beleef ongeëvenaard kijkplezier zonder gepersonaliseerde advertenties." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zmieniono wersję przeglądarki na niższą" + "value" : "Korzystaj z czystego środowiska oglądania bez spersonalizowanych reklam." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Navegador com versão anterior" + "value" : "Desfruta de uma experiência de visualização limpa sem anúncios personalizados." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Версия браузера понижена" + "value" : "«Чистый» просмотр без персонализированной рекламы." } } } }, - "notification.browser.updated" : { - "comment" : "Notification informing user the app has been updated", + "newTab.setup.duck.player.title" : { + "comment" : "Title of the Duck Player card of the Set Up section in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Browser aktualisiert" + "value" : "YouTube aufräumen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Browser Updated" + "value" : "Clean Up YouTube" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Navegador actualizado" + "value" : "Limpiar YouTube" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Navigateur mis à jour" + "value" : "Place nette sur YouTube" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Browser aggiornato" + "value" : "Ripulisci YouTube" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Browser bijgewerkt" + "value" : "YouTube opruimen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zaktualizowano przeglądarkę" + "value" : "Oczyść YouTube" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Navegador atualizado" + "value" : "Limpar YouTube" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Браузер обновлен" + "value" : "YouTube в очищенном варианте" } } } }, - "notification.critical.update" : { - "comment" : "Notification informing user a critical update is available.", + "newTab.setup.email.protection.action" : { + "comment" : "Action title on the action menu of the Email Protection card of the Set Up section in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Kritisches Update erforderlich." + "value" : "Hol dir eine Duck Address" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Critical update needed." + "value" : "Get a Duck Address" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Se necesita una actualización crítica." + "value" : "Consigue una Duck Address" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Une mise à jour critique est nécessaire." + "value" : "Se procurer une Duck Address" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiornamento critico necessario." + "value" : "Ottieni un Duck Address" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Kritieke update nodig." + "value" : "Een Duck Address aanmaken" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wymagana krytyczna aktualizacja." + "value" : "Uzyskaj Duck Address" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Atualização crítica necessária." + "value" : "Obtém um Duck Address" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Требуется критическое обновление." + "value" : "Создать адрес Duck Address" } } } }, - "notification.manual.update.action" : { - "comment" : "Action to take when a manual update is available.", + "newTab.setup.email.protection.summary" : { + "comment" : "Summary of the Email Protection card of the Set Up section in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Klicke hier, um zu aktualisieren." + "value" : "Erstelle eigene @duck.com-Adressen, die Tracker aus eingehenden E-Mails entfernen." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Click here to update." + "value" : "Generate custom @duck.com addresses that clean trackers from incoming email." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Haz clic aquí para actualizar." + "value" : "Genera direcciones personalizadas de @duck.com que limpien los rastreadores del correo electrónico entrante." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Cliquez ici pour mettre à jour." + "value" : "Générez des adresses @duck.com personnalisées qui débarrassent les e-mails entrants des traqueurs." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Fai clic qui per aggiornare." + "value" : "Genera indirizzi @duck.com personalizzati che eliminano i sistemi di tracciamento della posta in arrivo." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Klik hier om te updaten." + "value" : "Aangepaste @duck.com-adressen genereren om trackers van binnenkomende e-mails te wissen." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Kliknij tutaj, aby zaktualizować." + "value" : "Generuj adresy w domenie @duck.com, które usuwają skrypty śledzące z przychodzących e-maili." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Clica aqui para atualizar." + "value" : "Gera endereços @duck.com personalizados que limpam os rastreadores dos e-mails recebidos." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Нажмите здесь, чтобы обновить." + "value" : "Уникальные почтовые адреса на домене @duck.com для очистки входящей почты от трекеров." } } } }, - "notification.update.available" : { - "comment" : "Notification informing user the a version of app is available.", + "newTab.setup.email.protection.title" : { + "comment" : "Title of the Email Protection card of the Set Up section in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neue Version verfügbar." + "value" : "Schütze deinen Posteingang" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "New version available." + "value" : "Protect Your Inbox" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Nueva versión disponible." + "value" : "Protege tu bandeja de entrada" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Une nouvelle version est disponible." + "value" : "Protégez votre boîte de réception" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nuova versione disponibile." + "value" : "Proteggi la tua casella di posta" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nieuwe versie beschikbaar." + "value" : "Bescherm je inbox" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dostępna nowa wersja." + "value" : "Chroń swoją skrzynkę odbiorczą" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nova versão disponível." + "value" : "Protege a tua caixa de entrada" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Доступна новая версия." + "value" : "Защита для вашей почты" } } } }, - "notnow" : { - "comment" : "Not Now button", - "extractionState" : "extracted_with_value", + "newTab.setup.Import.action" : { + "comment" : "Action title on the action menu of the Import card of the Set Up section in the home page", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Jetzt nicht" + "value" : "Jetzt importieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Not Now" + "value" : "Import Now" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ahora no" + "value" : "Importar ahora" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Pas maintenant" + "value" : "Importer dès maintenant" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Non adesso" + "value" : "Importa ora" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Niet nu" + "value" : "Nu importeren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nie teraz" + "value" : "Importuj teraz" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Agora não" + "value" : "Importar agora" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Не сейчас" + "value" : "Импортировать" } } } }, - "ok" : { - "comment" : "OK button", + "newTab.setup.import.summary" : { + "comment" : "Summary of the Import card of the Set Up section in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "OK" + "value" : "Importiere Lesezeichen, Favoriten und Passwörter aus deinem alten Browser." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "OK" + "value" : "Import bookmarks, favorites, and passwords from your old browser." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "De acuerdo" + "value" : "Importa marcadores, favoritos y contraseñas desde tu navegador antiguo." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ok" + "value" : "Importez des signets, des favoris et des mots de passe depuis votre ancien navigateur." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "OK" + "value" : "Importa segnalibri, preferiti e password dal tuo vecchio browser." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "OK" + "value" : "Bladwijzers, favorieten en wachtwoorden vanuit je vorige browser importeren." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "OK" + "value" : "Zaimportuj zakładki, elementy ulubione i hasła ze starej przeglądarki." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "OK" + "value" : "Importa marcadores, favoritos e palavras-passe do teu navegador antigo." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Хорошо" + "value" : "Закладки, избранное и пароли можно импортировать из старого браузера." } } } }, - "onboarding.addtodock.button" : { - "comment" : "Button label to add application to the macOS system dock", + "newTab.setup.import.title" : { + "comment" : "Title of the Import card of the Set Up section in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Im Dock behalten" + "value" : "Bring deine Sachen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Keep in Dock" + "value" : "Bring Your Stuff" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mantener en Dock" + "value" : "Trae tus cosas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Garder dans le Dock" + "value" : "Emportez tout avec vous" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Tieni nel Dock" + "value" : "Importa i tuoi file" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "In Dock bewaren" + "value" : "Neem je favorieten mee" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Trzymaj w Docku" + "value" : "Przenieś swoje rzeczy" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Manter na Dock" + "value" : "Traz as tuas coisas" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Держать на док-панели" + "value" : "Все свое с собой" } } } }, - "onboarding.addtodock.text" : { - "comment" : "Call to action to add the DuckDuckGo app icon to the macOS system dock", + "newTab.setup.remove.item" : { + "comment" : "Action title on the action menu of the set up cards card of the SetUp section in the home page to remove the item", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Eine letzte Sache. Du möchtest DuckDuckGo in deinem Dock haben, damit der Browser immer in Reichweite ist?" + "value" : "Verwerfen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "One last thing. Want to keep DuckDuckGo in your Dock so the browser's always within reach?" + "value" : "Dismiss" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Una última cosa. ¿Quieres tener DuckDuckGo en tu Dock para que el navegador esté siempre al alcance de la mano?" + "value" : "Descartar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Une dernière chose. Vous voulez garder DuckDuckGo dans votre Dock pour que le navigateur reste à portée de main ?" + "value" : "Ignorer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Un'ultima cosa. Vuoi tenere DuckDuckGo nel tuo dock in modo che il browser sia sempre disponibile?" + "value" : "Ignora" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nog een laatste ding. Wil je DuckDuckGo in je Dock houden zodat de browser altijd binnen handbereik is?" + "value" : "Negeren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ostatnia sprawa. Czy chcesz trzymać przeglądarkę DuckDuckGo w Docku, aby zawsze ją mieć pod ręką?" + "value" : "Odrzuć" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Só mais uma coisa. Queres ter o navegador DuckDuckGo na tua Dock estar sempre à mão?" + "value" : "Ignorar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "И кое-что еще... Хотите сохранить DuckDuckGo на док-панели, чтобы наш браузер всегда был под рукой?" + "value" : "Отклонить" } } } }, - "onboarding.importdata.button" : { - "comment" : "Launch the import data UI", + "newTab.setup.section.title" : { + "comment" : "Title of the setup section in the home page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Importieren" + "value" : "Nächste Schritte" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Import" + "value" : "Next Steps" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Importar" + "value" : "Próximos pasos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Importer" + "value" : "Étapes suivantes" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Importa" + "value" : "Passaggi successivi" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Importeren" + "value" : "Volgende stappen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Import" + "value" : "Dalsze kroki" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Importar" + "value" : "Passos seguintes" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Импорт" + "value" : "Дальнейшие шаги" } } } }, - "onboarding.importdata.text" : { - "comment" : "Call to action to import data from other browsers", + "next" : { + "comment" : "Next button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zuerst möchte ich dir helfen, deine Lesezeichen 📖 und Passwörter 🔑 aus den weniger privaten Browsern zu importieren." + "value" : "Weiter" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "First, let me help you import your bookmarks 📖 and passwords 🔑 from those less private browsers." + "value" : "Next" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Primero, déjame ayudarte a importar tus marcadores 📖 y contraseñas 🔑 desde esos navegadores no tan privados." + "value" : "Siguiente" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Tout d'abord, laissez-moi vous aider à importer vos signets 📖 et vos mots de passe 🔑 depuis ces navigateurs moins privés." + "value" : "Suivant" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Innanzitutto, ti aiuterò a importare segnalibri 📖 e password 🔑 dai browser con meno privacy." + "value" : "Successivo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Laat me je eerst helpen bij het importeren van je bladwijzers 📖 en wachtwoorden 🔑 vanuit de minder private browsers." + "value" : "Volgende" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Na początek pozwól, że pomogę Ci zaimportować zakładki 📖 i hasła 🔑 z tych przeglądarek cechujących się mniejszą prywatnością." + "value" : "Dalej" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Primeiro, deixa-me ajudar-te a importar os teus marcadores 📖 e palavras-passe 🔑 desses navegadores menos privados." + "value" : "Seguinte" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Прежде всего, давайте импортируем закладки 📖 и пароли 🔑 из браузеров с более низким уровнем защиты данных." + "value" : "Далее" } } } }, - "onboarding.notnow.button" : { - "comment" : "Skip a step of the onboarding flow", + "no.access.to.downloads.folder.header" : { + "comment" : "Header of the alert dialog warning the user they need to give the browser permission to access the Downloads folder", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Vielleicht später" + "value" : "DuckDuckGo benötigt die Erlaubnis, auf deinen Downloads-Ordner zuzugreifen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Maybe Later" + "value" : "DuckDuckGo needs permission to access your Downloads folder" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Quizá más tarde" + "value" : "DuckDuckGo necesita permiso para acceder a tu carpeta de descargas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Peut-être plus tard" + "value" : "DuckDuckGo a besoin d'une autorisation pour accéder à votre dossier Téléchargements" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Forse più tardi" + "value" : "DuckDuckGo ha bisogno dell'autorizzazione per accedere alla tua cartella Download" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Later misschien" + "value" : "DuckDuckGo heeft toestemming nodig om toegang te krijgen tot je downloadsmap" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Może później" + "value" : "DuckDuckGo potrzebuje pozwolenia na dostęp do folderu Pobrane" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Talvez mais tarde" + "value" : "O DuckDuckGo precisa de permissão para aceder à tua pasta Transferências" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Позже" + "value" : "DuckDuckGo запрашивает доступ к папке «Загрузки»" } } } }, - "onboarding.setdefault.button" : { - "comment" : "Launch the set default UI", + "no.access.to.downloads.folder.legacy" : { + "comment" : "Alert presented to user if the app doesn't have rights to access Downloads folder. This is used for macOS version 12 and below", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Fangen wir an!" + "value" : "Erlaube den Zugriff in den Einstellungen für Sicherheit und Datenschutz in den Systemeinstellungen." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Let's Do It!" + "value" : "Grant access in Security & Privacy preferences in System Settings." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¡De acuerdo!" + "value" : "Concede acceso en las preferencias de Seguridad y privacidad en Configuración del sistema." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Allons-y !" + "value" : "Accordez l'accès dans les préférences de sécurité et de confidentialité des paramètres système." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Facciamolo!" + "value" : "Concedi l'accesso alle preferenze di Sicurezza e Privacy nelle Impostazioni di sistema." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Laten we het doen!" + "value" : "Geef toegang in Beveiligings- en privacyvoorkeuren in Systeeminstellingen." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zróbmy to!" + "value" : "Przyznaj dostęp w preferencjach dotyczących bezpieczeństwa i prywatności w ustawieniach systemowych." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Vamos lá!" + "value" : "Concede acesso nas preferências de segurança e privacidade em Definições do sistema." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Поехали!" + "value" : "Предоставьте доступ в разделе «Безопасность и конфиденциальность» в настройках системы." } } } }, - "onboarding.setdefault.text" : { - "comment" : "Call to action to set the browser as default", + "no.access.to.downloads.folder.modern" : { + "comment" : "Alert presented to user if the app doesn't have rights to access Downloads folder. This is used for macOS version 13 and above", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Als Nächstes solltest du DuckDuckGo als deinen Standardbrowser festlegen, damit du Links immer mit ruhigem Gewissen öffnen kannst." + "value" : "Erlaube den Zugriff in den Einstellungen für Datenschutz und Sicherheit in den Systemeinstellungen." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Next, try setting DuckDuckGo as your default️ browser, so you can open links with peace of mind, every time." + "value" : "Grant access in Privacy & Security preferences in System Settings." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "A continuación, prueba a configurar DuckDuckGo como tu navegador predeterminado️, para que puedas abrir los enlaces con tranquilidad en todo momento." + "value" : "Concede acceso en las preferencias de Seguridad y privacidad en Configuración del sistema." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Puis essayez de définir DuckDuckGo comme navigateur par défaut afin de pouvoir ouvrir des liens l'esprit tranquille à chaque fois." + "value" : "Accordez l'accès dans les préférences de confidentialité et de sécurité des paramètres système." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Successivamente, prova a impostare DuckDuckGo come browser predefinito️, così potrai aprire i link in tutta tranquillità, ogni volta." + "value" : "Concedi l'accesso alle preferenze di Privacy e Sicurezza nelle Impostazioni di sistema." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Probeer vervolgens DuckDuckGo in te stellen als je standaard️browser, zodat je elke keer met een gerust hart links kunt openen." + "value" : "Geef toegang in Privacy en beveiligingsvoorkeuren in Systeeminstellingen." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Następnie spróbuj ustawić DuckDuckGo jako przeglądarkę domyślną, aby móc spokojnie otwierać każde łącze." + "value" : "Przyznaj dostęp w preferencjach dotyczących prywatności i bezpieczeństwa w ustawieniach systemowych." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Em seguida, experimenta definir o DuckDuckGo como o teu navegador predefinido️, para que possas abrir links com tranquilidade, sempre." + "value" : "Conceda acesso às preferências de privacidade e segurança em Definições do sistema." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Затем задайте DuckDuckGo как браузер по умолчанию, чтобы открывать ссылки без каких-либо опасений." + "value" : "Предоставьте доступ в разделе «Конфиденциальность и безопасность» в настройках системы." } } } }, - "onboarding.startbrowsing.added-to-dock.text" : { - "comment" : "Call to action to start using the app as a browser", + "notification.auto.update.action" : { + "comment" : "Action to take when an automatic update is available.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Du bist bereit! Du kannst mich jederzeit im Dock antreffen.\n\nMöchtest du sehen, wie ich dich beschütze? Versuche, eine deiner Lieblingsseiten aufzurufen 👆\n\nBehalte die Adressleiste im Auge. Ich werde Tracker blockieren und, wenn möglich, die Sicherheit deiner Verbindung verbessern 🔒" + "value" : "Zum Aktualisieren neu starten." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "You’re all set! You can find me hanging out in the Dock anytime.\n\nWant to see how I protect you? Try visiting one of your favorite sites 👆\n\nKeep watching the address bar as you go. I’ll be blocking trackers and upgrading the security of your connection when possible 🔒" + "value" : "Restart to update." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¡Ya está todo listo! Puedes encontrarme en el Dock en cualquier momento.\n¿Quieres ver cómo te protejo? Prueba a visitar uno de tus sitios favoritos 👆\n\nNo pierdas de vista la barra de direcciones al navegar. Bloquearé los rastreadores y mejoraré la seguridad de tu conexión cuando sea posible 🔒" + "value" : "Reinicia para actualizar." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Tout est prêt ! Vous pouvez me trouver sur le Dock à tout moment.\nVous voulez voir comment je vous protège ? Essayez de visiter l'un de vos sites préférés 👆\n\nContinuez à regarder la barre d'adresse au fur et à mesure. Je bloquerai les traqueurs et mettrai à niveau la sécurité de votre connexion si possible 🔒" + "value" : "Redémarrer pour mettre à jour." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Tutto pronto! Mi puoi trovare in qualsiasi momento sul Dock.\n\nVuoi vedere come ti proteggo? Prova a visitare uno dei tuoi siti preferiti 👆\n\nContinua a controllare la barra degli indirizzi mentre esplori. Bloccherò i sistemi di tracciamento e aggiornerò la sicurezza della tua connessione quando possibile 🔒" + "value" : "Riavvia per aggiornare." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Je bent helemaal klaar! Je kunt me altijd vinden in de Dock.\n\nWil je zien hoe ik je bescherm? Ga eens naar een van je favoriete websites 👆\n\nKijk tijdens het surfen goed naar de adresbalk. Ik blokkeer trackers en werk de beveiliging van je verbinding bij wanneer mogelijk 🔒" + "value" : "Start opnieuw om bij te werken." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wszystko gotowe! W każdej chwili możesz mnie znaleźć w Docku.\n\nChcesz zobaczyć, jak Cię chronię? Spróbuj odwiedzić jedną z ulubionych stron 👆\n\nW międzyczasie obserwuj pasek adresu. Będę blokować mechanizmy śledzące i w miarę możliwości poprawiać bezpieczeństwo połączenia 🔒" + "value" : "Uruchom ponownie, aby zaktualizować." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Está tudo pronto! Podes encontrar-me na Dock em qualquer altura.\nQueres ver como te protejo? Experimenta visitar um dos teus sites favoritos 👆\n\nContinua a observar a barra de endereço à medida que vais avançando. Vou bloquear os rastreadores e melhorar a segurança da tua ligação sempre que possível 🔒" + "value" : "Reiniciar para atualizar." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Готово! Теперь меня всегда можно найти на док-панели.\n\nХотите узнать, как я защищаю вашу конфиденциальность? Зайдите на свой любимый сайт...👆\n\nИ следите за адресной строкой. Я по возможности буду блокировать трекеры и обеспечивать вам более безопасное соединение 🔒" + "value" : "Перезапустите приложение." } } } }, - "onboarding.startbrowsing.text" : { - "comment" : "Call to action to start using the app as a browser", + "notification.badge.cookiesmanaged" : { + "comment" : "Notification that appears when browser automatically handle cookies", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Du bist bereit!\n\nMöchtest du sehen, wie ich dich beschütze? Versuche, eine deiner Lieblingsseiten aufzurufen 👆\n\nBehalte die Adressleiste im Auge. Ich werde Tracker blockieren und, wenn möglich, die Sicherheit deiner Verbindung verbessern 🔒" + "value" : "Cookies verwaltet" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "You’re all set!\n\nWant to see how I protect you? Try visiting one of your favorite sites 👆\n\nKeep watching the address bar as you go. I’ll be blocking trackers and upgrading the security of your connection when possible 🔒" + "value" : "Cookies Managed" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¡Ya está todo listo!\n\n¿Quieres ver cómo te protejo? Prueba a visitar uno de tus sitios favoritos 👆\n\nNo pierdas de vista la barra de direcciones al navegar. Bloquearé los rastreadores y mejoraré la seguridad de tu conexión cuando sea posible 🔒" + "value" : "Cookies gestionadas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Tout est prêt !\n\nVous voulez voir comment je vous protège ? Essayez de visiter l'un de vos sites préférés 👆\n\nContinuez à regarder la barre d'adresse au fur et à mesure. Je bloquerai les traqueurs et mettrai à niveau la sécurité de votre connexion si possible 🔒" + "value" : "Cookies gérés" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Tutto pronto!Vuoi vedere come ti proteggo? Prova a visitare uno dei tuoi siti preferiti 👆\n\nContinua a controllare la barra degli indirizzi mentre esplori. Bloccherò i sistemi di tracciamento e aggiornerò la sicurezza della tua connessione quando possibile 🔒" + "value" : "Cookie gestiti" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Je bent helemaal klaar!\n\nWil je zien hoe ik je bescherm? Ga eens naar een van je favoriete websites 👆\n\nKijk tijdens het surfen goed naar de adresbalk. Ik blokkeer trackers en werk de beveiliging van je verbinding bij wanneer mogelijk 🔒" + "value" : "Beheerde cookies" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wszystko gotowe!\n\nChcesz zobaczyć, jak Cię chronię? Spróbuj odwiedzić jedną z ulubionych stron 👆\n\nW międzyczasie obserwuj pasek adresu. Będę blokować mechanizmy śledzące i w miarę możliwości poprawiać bezpieczeństwo połączenia 🔒" + "value" : "Zarządzane pliki cookie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Está tudo pronto!\n\nQueres ver como te protejo? Experimenta visitar um dos teus sites favoritos 👆\n\nContinua a observar a barra de endereço à medida que vais avançando. Vou bloquear os rastreadores e melhorar a segurança da tua ligação sempre que possível 🔒" + "value" : "Cookies geridos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Готово!\n\nХотите узнать, как я защищаю вашу конфиденциальность? Зайдите на свой любимый сайт...👆\n\nИ следите за адресной строкой. Я по возможности буду блокировать трекеры и обеспечивать вам более безопасное соединение 🔒" + "value" : "Kуки-файлы выбраны" } } } }, - "onboarding.welcome.button" : { - "comment" : "Start the onboarding flow", + "notification.badge.popuphidden" : { + "comment" : "Notification that appears when browser cosmetically hides a cookie popup", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Los geht's!" + "value" : "Pop-up ausgeblendet" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Get Started" + "value" : "Pop-up Hidden" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Empezar" + "value" : "Ventana emergente oculta" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Commencer" + "value" : "Fenêtre contextuelle masquée" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Iniziamo" + "value" : "Popup nascosto" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Aan de slag" + "value" : "Pop-up verborgen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Rozpocznij" + "value" : "Ukryte wyskakujące okienka" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Comece" + "value" : "Pop-up ocultado" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Приступим!" + "value" : "Всплывающее окно скрыто" } } } }, - "onboarding.welcome.text" : { - "comment" : "Detailed welcome to the app text", + "notification.browser.downgraded" : { + "comment" : "Notification informing user the app has been downgraded", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Du bist es leid, online getrackt zu werden? Dann bist du hier genau richtig 👍\n\nIch helfe dir, deine Privatsphäre zu wahren, während du im Internet suchst und surfst. Weg mit den Trackern!" + "value" : "Browser herabgestuft" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Tired of being tracked online? You've come to the right place 👍\n\nI'll help you stay private️ as you search and browse the web. Trackers be gone!" + "value" : "Browser Downgraded" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Cansado de que te rastreen en línea? Has venido al lugar adecuado 👍\n\nTe ayudaré a mantener tu privacidad mientras buscas y navegas por la web. Rastreadores, ¡fuera!" + "value" : "Navegador degradado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Vous en avez assez d'être suivi(e) en ligne ? Alors vous êtes au bon endroit 👍\n\nJe vous aiderai à préserver la confidentialité de vos recherches et de votre navigation sur le Web. Adieu les traqueurs !" + "value" : "Version antérieure du navigateur activée" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Non vuoi che le tue attività online vengano tracciate? Abbiamo la soluzione 👍\n\nTi aiuterò a rendere private le tue ricerche e la navigazione sul web. Sistemi di tracciamento, addio!" + "value" : "Browser declassato" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Ben je het zat om online gevolgd te worden? Je bent bij ons aan het juiste adres 👍\n\n Ik help je privacy te beschermen terwijl je op het internet zoekt en surft. Trackers zijn voorgoed verleden tijd!" + "value" : "Browser gedegradeerd" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Masz dość śledzenia w Internecie? Jesteś we właściwym miejscu 👍\n\nPomogę Ci w zachowaniu prywatności podczas wyszukiwania i przeglądania stron internetowych. Precz z mechanizmami śledzącymi!" + "value" : "Zmieniono wersję przeglądarki na niższą" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Cansado de seres rastreado online? Vieste ao sítio certo 👍\n\n Vou ajudar-te a manteres a tua privacidade enquanto fazes pesquisas e navegas na Internet. Até à vista rastreadores!" + "value" : "Navegador com versão anterior" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Надоели рекламные трекеры? Тогда вы обратились по адресу! 👍\n\n Я помогу вам скрыть свои данные от посторонних глаз во время поиска и посещения сайтов. Прощайте, трекеры!" + "value" : "Версия браузера понижена" } } } }, - "onboarding.welcome.title" : { - "comment" : "General welcome to the app title", + "notification.browser.updated" : { + "comment" : "Notification informing user the app has been updated", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Willkommen bei DuckDuckGo!" + "value" : "Browser aktualisiert" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Welcome to DuckDuckGo!" + "value" : "Browser Updated" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¡Bienvenido a DuckDuckGo!" + "value" : "Navegador actualizado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Bienvenue sur DuckDuckGo !" + "value" : "Navigateur mis à jour" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo ti dà il benvenuto!" + "value" : "Browser aggiornato" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Welkom bij DuckDuckGo!" + "value" : "Browser bijgewerkt" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Witamy w DuckDuckGo!" + "value" : "Zaktualizowano przeglądarkę" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Damos-lhe as boas-vindas ao DuckDuckGo!" + "value" : "Navegador atualizado" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Добро пожаловать в DuckDuckGo!" + "value" : "Браузер обновлен" } } } }, - "Only Show on New Tab" : { - "comment" : "Preference for only showing the bookmarks bar on new tab", + "notification.critical.update" : { + "comment" : "Notification informing user a critical update is available.", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nur auf neuem Tab anzeigen" + "value" : "Kritisches Update erforderlich." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Critical update needed." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar solo en una pestaña nueva" + "value" : "Se necesita una actualización crítica." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher uniquement sur un nouvel onglet" + "value" : "Une mise à jour critique est nécessaire." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra solo la nuova scheda" + "value" : "Aggiornamento critico necessario." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Alleen tonen op nieuw tabblad" + "value" : "Kritieke update nodig." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż tylko na nowej karcie" + "value" : "Wymagana krytyczna aktualizacja." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar apenas no novo separador" + "value" : "Atualização crítica necessária." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показывать только в новой вкладке" + "value" : "Требуется критическое обновление." } } } }, - "open" : { - "comment" : "Open button", + "notification.manual.update.action" : { + "comment" : "Action to take when a manual update is available.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Öffnen" + "value" : "Klicke hier, um zu aktualisieren." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open" + "value" : "Click here to update." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir" + "value" : "Haz clic aquí para actualizar." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir" + "value" : "Cliquez ici pour mettre à jour." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri" + "value" : "Fai clic qui per aggiornare." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Openen" + "value" : "Klik hier om te updaten." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz" + "value" : "Kliknij tutaj, aby zaktualizować." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir" + "value" : "Clica aqui para atualizar." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть" + "value" : "Нажмите здесь, чтобы обновить." } } } }, - "open.all.in.new.tabs" : { - "comment" : "Menu item that opens all the bookmarks in a folder to new tabs", + "notification.update.available" : { + "comment" : "Notification informing user the a version of app is available.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Alle in neuen Tabs öffnen" + "value" : "Neue Version verfügbar." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open All in New Tabs" + "value" : "New version available." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir todo en pestañas nuevas" + "value" : "Nueva versión disponible." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Tout ouvrir dans de nouveaux onglets" + "value" : "Une nouvelle version est disponible." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri tutto in nuove schede" + "value" : "Nuova versione disponibile." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Alles openen in nieuwe tabbladen" + "value" : "Nieuwe versie beschikbaar." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz wszystko w nowych kartach" + "value" : "Dostępna nowa wersja." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir tudo em novos separadores" + "value" : "Nova versão disponível." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть все в новых вкладках" + "value" : "Доступна новая версия." } } } }, - "open.all.tabs.in.new.window" : { - "comment" : "Menu item that opens all the bookmarks in a folder in a new window", + "notnow" : { + "comment" : "Not Now button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Alle in neuem Fenster öffnen" + "value" : "Jetzt nicht" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open All in New Window" + "value" : "Not Now" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir todo en una ventana nueva" + "value" : "Ahora no" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Tout ouvrir dans une nouvelle fenêtre" + "value" : "Pas maintenant" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri tutto in una nuova finestra" + "value" : "Non adesso" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Alles openen in een nieuw venster" + "value" : "Niet nu" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz wszystko w nowym oknie" + "value" : "Nie teraz" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir tudo numa nova janela" + "value" : "Agora não" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть все в новом окне" + "value" : "Не сейчас" } } } }, - "open.bitwarden" : { - "comment" : "Button to open Bitwarden app", + "ok" : { + "comment" : "OK button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bitwarden öffnen" + "value" : "OK" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open Bitwarden" + "value" : "OK" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir bitwarden" + "value" : "De acuerdo" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir Bitwarden" + "value" : "Ok" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri Bitwarden" + "value" : "OK" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bitwarden openen" + "value" : "OK" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz Bitwarden" + "value" : "OK" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir o Bitwarden" + "value" : "OK" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть Bitwarden" + "value" : "Хорошо" } } } }, - "open.bitwarden.and.log.in.or.unlock" : { - "comment" : "Setup of the integration with Bitwarden app", + "onboarding.addtodock.button" : { + "comment" : "Button label to add application to the macOS system dock", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Öffne Bitwarden und logge dich ein oder entsperre deinen Tresor." + "value" : "Im Dock behalten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open Bitwarden and Log in or Unlock your vault." + "value" : "Keep in Dock" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abre Bitwarden e inicia sesión o desbloquea tu caja fuerte." + "value" : "Mantener en Dock" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrez Bitwarden et connectez-vous ou déverrouillez votre coffre-fort." + "value" : "Garder dans le Dock" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri Bitwarden e accedi o sblocca la cassaforte." + "value" : "Tieni nel Dock" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Open Bitwarden en log in of ontgrendel je kluis." + "value" : "In Dock bewaren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz aplikację Bitwarden i zaloguj się lub odblokuj swój sejf." + "value" : "Trzymaj w Docku" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abre o Bitwarden e inicia sessão ou desbloqueia o teu cofre." + "value" : "Manter na Dock" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Откройте приложение Bitwarden и войдите в систему либо разблокируйте свое хранилище." + "value" : "Держать на док-панели" } } } }, - "open.externally.failed" : { - "comment" : "’Link’ is link on a website, it couldn't be opened due to the required app not being found", + "onboarding.addtodock.text" : { + "comment" : "Call to action to add the DuckDuckGo app icon to the macOS system dock", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Die zum Öffnen dieses Links erforderliche App wurde nicht gefunden" + "value" : "Eine letzte Sache. Du möchtest DuckDuckGo in deinem Dock haben, damit der Browser immer in Reichweite ist?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "The app required to open that link can’t be found" + "value" : "One last thing. Want to keep DuckDuckGo in your Dock so the browser's always within reach?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "No se puede encontrar la aplicación necesaria para abrir ese enlace" + "value" : "Una última cosa. ¿Quieres tener DuckDuckGo en tu Dock para que el navegador esté siempre al alcance de la mano?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "L'application nécessaire pour ouvrir ce lien est introuvable" + "value" : "Une dernière chose. Vous voulez garder DuckDuckGo dans votre Dock pour que le navigateur reste à portée de main ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Impossibile trovare l'app necessaria per aprire il link" + "value" : "Un'ultima cosa. Vuoi tenere DuckDuckGo nel tuo dock in modo che il browser sia sempre disponibile?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "De app die nodig is om die link te openen, is niet gevonden" + "value" : "Nog een laatste ding. Wil je DuckDuckGo in je Dock houden zodat de browser altijd binnen handbereik is?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nie można znaleźć aplikacji wymaganej do otwarcia tego linku" + "value" : "Ostatnia sprawa. Czy chcesz trzymać przeglądarkę DuckDuckGo w Docku, aby zawsze ją mieć pod ręką?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Não encontramos a aplicação necessária para abrir esse link" + "value" : "Só mais uma coisa. Queres ter o navegador DuckDuckGo na tua Dock estar sempre à mão?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Приложение для открытия этой ссылки не найдено" + "value" : "И кое-что еще... Хотите сохранить DuckDuckGo на док-панели, чтобы наш браузер всегда был под рукой?" } } } }, - "open.image.in.new.burner.tab" : { - "comment" : "Context menu item", + "onboarding.importdata.button" : { + "comment" : "Launch the import data UI", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bild in neuem Fire Tab öffnen" + "value" : "Importieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open Image in New Fire Tab" + "value" : "Import" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir imagen en una nueva Fire tab" + "value" : "Importar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir l'image dans le nouveau Fire Tab" + "value" : "Importer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri l'immagine in una nuova scheda Fire" + "value" : "Importa" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Afbeelding openen in nieuw Fire-tabblad" + "value" : "Importeren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz obraz w nowej karcie Fire" + "value" : "Import" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir imagem num novo separador Fire" + "value" : "Importar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть изображение в новой Fire-вкладке" + "value" : "Импорт" } } } }, - "open.image.in.new.tab" : { - "comment" : "Context menu item", + "onboarding.importdata.text" : { + "comment" : "Call to action to import data from other browsers", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bild in neuem Tab öffnen" + "value" : "Zuerst möchte ich dir helfen, deine Lesezeichen 📖 und Passwörter 🔑 aus den weniger privaten Browsern zu importieren." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open Image in New Tab" + "value" : "First, let me help you import your bookmarks 📖 and passwords 🔑 from those less private browsers." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir imagen en una nueva pestaña" + "value" : "Primero, déjame ayudarte a importar tus marcadores 📖 y contraseñas 🔑 desde esos navegadores no tan privados." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir l'image dans un nouvel onglet" + "value" : "Tout d'abord, laissez-moi vous aider à importer vos signets 📖 et vos mots de passe 🔑 depuis ces navigateurs moins privés." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri l'immagine in una nuova scheda" + "value" : "Innanzitutto, ti aiuterò a importare segnalibri 📖 e password 🔑 dai browser con meno privacy." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Afbeelding openen in nieuw tabblad" + "value" : "Laat me je eerst helpen bij het importeren van je bladwijzers 📖 en wachtwoorden 🔑 vanuit de minder private browsers." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz obraz w nowej karcie" + "value" : "Na początek pozwól, że pomogę Ci zaimportować zakładki 📖 i hasła 🔑 z tych przeglądarek cechujących się mniejszą prywatnością." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir imagem num novo separador" + "value" : "Primeiro, deixa-me ajudar-te a importar os teus marcadores 📖 e palavras-passe 🔑 desses navegadores menos privados." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть изображение в новой вкладке" + "value" : "Прежде всего, давайте импортируем закладки 📖 и пароли 🔑 из браузеров с более низким уровнем защиты данных." } } } }, - "open.in" : { - "comment" : "Opening an entity in other application", + "onboarding.notnow.button" : { + "comment" : "Skip a step of the onboarding flow", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "In %@ öffnen" + "value" : "Vielleicht später" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open in %@" + "value" : "Maybe Later" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir en %@" + "value" : "Quizá más tarde" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir dans % @" + "value" : "Peut-être plus tard" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri in % @" + "value" : "Forse più tardi" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Openen in %@" + "value" : "Later misschien" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz w aplikacji %@" + "value" : "Może później" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir em %@" + "value" : "Talvez mais tarde" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть в %@" + "value" : "Позже" } } } }, - "open.in.new.tab" : { - "comment" : "Menu item that opens the link in a new tab", + "onboarding.setdefault.button" : { + "comment" : "Launch the set default UI", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "In neuem Tab öffnen" + "value" : "Fangen wir an!" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open in New Tab" + "value" : "Let's Do It!" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir en una nueva pestaña" + "value" : "¡De acuerdo!" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir dans un nouvel onglet" + "value" : "Allons-y !" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri in una nuova scheda" + "value" : "Facciamolo!" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Openen in nieuw tabblad" + "value" : "Laten we het doen!" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz w nowej karcie" + "value" : "Zróbmy to!" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir em novo separador" + "value" : "Vamos lá!" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть в новой вкладке" + "value" : "Поехали!" } } } }, - "open.in.new.window" : { - "comment" : "Menu item that opens the link in a new window", + "onboarding.setdefault.text" : { + "comment" : "Call to action to set the browser as default", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "In neuem Fenster öffnen" + "value" : "Als Nächstes solltest du DuckDuckGo als deinen Standardbrowser festlegen, damit du Links immer mit ruhigem Gewissen öffnen kannst." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open in New Window" + "value" : "Next, try setting DuckDuckGo as your default️ browser, so you can open links with peace of mind, every time." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir en Nueva ventana" + "value" : "A continuación, prueba a configurar DuckDuckGo como tu navegador predeterminado️, para que puedas abrir los enlaces con tranquilidad en todo momento." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir dans une nouvelle fenêtre" + "value" : "Puis essayez de définir DuckDuckGo comme navigateur par défaut afin de pouvoir ouvrir des liens l'esprit tranquille à chaque fois." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri in una nuova finestra" + "value" : "Successivamente, prova a impostare DuckDuckGo come browser predefinito️, così potrai aprire i link in tutta tranquillità, ogni volta." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Openen in nieuw venster" + "value" : "Probeer vervolgens DuckDuckGo in te stellen als je standaard️browser, zodat je elke keer met een gerust hart links kunt openen." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz w nowym oknie" + "value" : "Następnie spróbuj ustawić DuckDuckGo jako przeglądarkę domyślną, aby móc spokojnie otwierać każde łącze." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir numa nova janela" + "value" : "Em seguida, experimenta definir o DuckDuckGo como o teu navegador predefinido️, para que possas abrir links com tranquilidade, sempre." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть в новом окне" + "value" : "Затем задайте DuckDuckGo как браузер по умолчанию, чтобы открывать ссылки без каких-либо опасений." } } } }, - "open.link.in.new.burner.tab" : { - "comment" : "Context menu item", + "onboarding.startbrowsing.added-to-dock.text" : { + "comment" : "Call to action to start using the app as a browser", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Link in neuem Fire Tab öffnen" + "value" : "Du bist bereit! Du kannst mich jederzeit im Dock antreffen.\n\nMöchtest du sehen, wie ich dich beschütze? Versuche, eine deiner Lieblingsseiten aufzurufen 👆\n\nBehalte die Adressleiste im Auge. Ich werde Tracker blockieren und, wenn möglich, die Sicherheit deiner Verbindung verbessern 🔒" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open Link in New Fire Tab" + "value" : "You’re all set! You can find me hanging out in the Dock anytime.\n\nWant to see how I protect you? Try visiting one of your favorite sites 👆\n\nKeep watching the address bar as you go. I’ll be blocking trackers and upgrading the security of your connection when possible 🔒" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir enlace en una nueva Fire tab" + "value" : "¡Ya está todo listo! Puedes encontrarme en el Dock en cualquier momento.\n¿Quieres ver cómo te protejo? Prueba a visitar uno de tus sitios favoritos 👆\n\nNo pierdas de vista la barra de direcciones al navegar. Bloquearé los rastreadores y mejoraré la seguridad de tu conexión cuando sea posible 🔒" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir le lien dans le nouveau Fire Tab" + "value" : "Tout est prêt ! Vous pouvez me trouver sur le Dock à tout moment.\nVous voulez voir comment je vous protège ? Essayez de visiter l'un de vos sites préférés 👆\n\nContinuez à regarder la barre d'adresse au fur et à mesure. Je bloquerai les traqueurs et mettrai à niveau la sécurité de votre connexion si possible 🔒" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri il link in una nuova scheda Fire" + "value" : "Tutto pronto! Mi puoi trovare in qualsiasi momento sul Dock.\n\nVuoi vedere come ti proteggo? Prova a visitare uno dei tuoi siti preferiti 👆\n\nContinua a controllare la barra degli indirizzi mentre esplori. Bloccherò i sistemi di tracciamento e aggiornerò la sicurezza della tua connessione quando possibile 🔒" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Link in nieuw Fire-tabblad openen" + "value" : "Je bent helemaal klaar! Je kunt me altijd vinden in de Dock.\n\nWil je zien hoe ik je bescherm? Ga eens naar een van je favoriete websites 👆\n\nKijk tijdens het surfen goed naar de adresbalk. Ik blokkeer trackers en werk de beveiliging van je verbinding bij wanneer mogelijk 🔒" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz łącze w nowej karcie Fire" + "value" : "Wszystko gotowe! W każdej chwili możesz mnie znaleźć w Docku.\n\nChcesz zobaczyć, jak Cię chronię? Spróbuj odwiedzić jedną z ulubionych stron 👆\n\nW międzyczasie obserwuj pasek adresu. Będę blokować mechanizmy śledzące i w miarę możliwości poprawiać bezpieczeństwo połączenia 🔒" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir link num novo separador Fire" + "value" : "Está tudo pronto! Podes encontrar-me na Dock em qualquer altura.\nQueres ver como te protejo? Experimenta visitar um dos teus sites favoritos 👆\n\nContinua a observar a barra de endereço à medida que vais avançando. Vou bloquear os rastreadores e melhorar a segurança da tua ligação sempre que possível 🔒" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть ссылку в новой Fire-вкладке" + "value" : "Готово! Теперь меня всегда можно найти на док-панели.\n\nХотите узнать, как я защищаю вашу конфиденциальность? Зайдите на свой любимый сайт...👆\n\nИ следите за адресной строкой. Я по возможности буду блокировать трекеры и обеспечивать вам более безопасное соединение 🔒" } } } }, - "open.link.in.new.tab" : { - "comment" : "Context menu item", + "onboarding.startbrowsing.text" : { + "comment" : "Call to action to start using the app as a browser", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Link in neuem Tab öffnen" + "value" : "Du bist bereit!\n\nMöchtest du sehen, wie ich dich beschütze? Versuche, eine deiner Lieblingsseiten aufzurufen 👆\n\nBehalte die Adressleiste im Auge. Ich werde Tracker blockieren und, wenn möglich, die Sicherheit deiner Verbindung verbessern 🔒" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open Link in New Tab" + "value" : "You’re all set!\n\nWant to see how I protect you? Try visiting one of your favorite sites 👆\n\nKeep watching the address bar as you go. I’ll be blocking trackers and upgrading the security of your connection when possible 🔒" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir enlace en nueva pestaña" + "value" : "¡Ya está todo listo!\n\n¿Quieres ver cómo te protejo? Prueba a visitar uno de tus sitios favoritos 👆\n\nNo pierdas de vista la barra de direcciones al navegar. Bloquearé los rastreadores y mejoraré la seguridad de tu conexión cuando sea posible 🔒" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir le lien dans un nouvel onglet" + "value" : "Tout est prêt !\n\nVous voulez voir comment je vous protège ? Essayez de visiter l'un de vos sites préférés 👆\n\nContinuez à regarder la barre d'adresse au fur et à mesure. Je bloquerai les traqueurs et mettrai à niveau la sécurité de votre connexion si possible 🔒" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri link in una nuova scheda" + "value" : "Tutto pronto!Vuoi vedere come ti proteggo? Prova a visitare uno dei tuoi siti preferiti 👆\n\nContinua a controllare la barra degli indirizzi mentre esplori. Bloccherò i sistemi di tracciamento e aggiornerò la sicurezza della tua connessione quando possibile 🔒" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Link openen in een nieuw tabblad" + "value" : "Je bent helemaal klaar!\n\nWil je zien hoe ik je bescherm? Ga eens naar een van je favoriete websites 👆\n\nKijk tijdens het surfen goed naar de adresbalk. Ik blokkeer trackers en werk de beveiliging van je verbinding bij wanneer mogelijk 🔒" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz łącze w nowej karcie" + "value" : "Wszystko gotowe!\n\nChcesz zobaczyć, jak Cię chronię? Spróbuj odwiedzić jedną z ulubionych stron 👆\n\nW międzyczasie obserwuj pasek adresu. Będę blokować mechanizmy śledzące i w miarę możliwości poprawiać bezpieczeństwo połączenia 🔒" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir ligação num separador novo" + "value" : "Está tudo pronto!\n\nQueres ver como te protejo? Experimenta visitar um dos teus sites favoritos 👆\n\nContinua a observar a barra de endereço à medida que vais avançando. Vou bloquear os rastreadores e melhorar a segurança da tua ligação sempre que possível 🔒" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть ссылку в новой вкладке" + "value" : "Готово!\n\nХотите узнать, как я защищаю вашу конфиденциальность? Зайдите на свой любимый сайт...👆\n\nИ следите за адресной строкой. Я по возможности буду блокировать трекеры и обеспечивать вам более безопасное соединение 🔒" } } } }, - "open.preferences" : { - "comment" : "Open System Preferences (to re-enable permission for the App) (up to and including macOS 12", + "onboarding.welcome.button" : { + "comment" : "Start the onboarding flow", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Systemeinstellungen öffnen" + "value" : "Los geht's!" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open System Preferences" + "value" : "Get Started" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir preferencias del sistema" + "value" : "Empezar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir les préférences système" + "value" : "Commencer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri Preferenze di Sistema" + "value" : "Iniziamo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Systeemvoorkeuren openen" + "value" : "Aan de slag" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz preferencje systemowe" + "value" : "Rozpocznij" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir Preferências do sistema" + "value" : "Comece" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть настройки системы" + "value" : "Приступим!" } } } }, - "open.settings" : { - "comment" : "This string represents a prompt or button label prompting the user to open system settings", + "onboarding.welcome.text" : { + "comment" : "Detailed welcome to the app text", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Systemeinstellungen öffnen …" + "value" : "Du bist es leid, online getrackt zu werden? Dann bist du hier genau richtig 👍\n\nIch helfe dir, deine Privatsphäre zu wahren, während du im Internet suchst und surfst. Weg mit den Trackern!" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open System Settings…" + "value" : "Tired of being tracked online? You've come to the right place 👍\n\nI'll help you stay private️ as you search and browse the web. Trackers be gone!" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir configuración del sistema" + "value" : "¿Cansado de que te rastreen en línea? Has venido al lugar adecuado 👍\n\nTe ayudaré a mantener tu privacidad mientras buscas y navegas por la web. Rastreadores, ¡fuera!" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir les paramètres système…" + "value" : "Vous en avez assez d'être suivi(e) en ligne ? Alors vous êtes au bon endroit 👍\n\nJe vous aiderai à préserver la confidentialité de vos recherches et de votre navigation sur le Web. Adieu les traqueurs !" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri Impostazioni di Sistema..." + "value" : "Non vuoi che le tue attività online vengano tracciate? Abbiamo la soluzione 👍\n\nTi aiuterò a rendere private le tue ricerche e la navigazione sul web. Sistemi di tracciamento, addio!" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Systeeminstellingen openen ..." + "value" : "Ben je het zat om online gevolgd te worden? Je bent bij ons aan het juiste adres 👍\n\n Ik help je privacy te beschermen terwijl je op het internet zoekt en surft. Trackers zijn voorgoed verleden tijd!" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz ustawienia systemowe…" + "value" : "Masz dość śledzenia w Internecie? Jesteś we właściwym miejscu 👍\n\nPomogę Ci w zachowaniu prywatności podczas wyszukiwania i przeglądania stron internetowych. Precz z mechanizmami śledzącymi!" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir Definições do sistema…" + "value" : "Cansado de seres rastreado online? Vieste ao sítio certo 👍\n\n Vou ajudar-te a manteres a tua privacidade enquanto fazes pesquisas e navegas na Internet. Até à vista rastreadores!" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть настройки системы…" + "value" : "Надоели рекламные трекеры? Тогда вы обратились по адресу! 👍\n\n Я помогу вам скрыть свои данные от посторонних глаз во время поиска и посещения сайтов. Прощайте, трекеры!" } } } }, - "options.menu.fireproof-site" : { - "comment" : "Context menu item", + "onboarding.welcome.title" : { + "comment" : "General welcome to the app title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Diese Website feuerfest machen" + "value" : "Willkommen bei DuckDuckGo!" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Fireproof This Site" + "value" : "Welcome to DuckDuckGo!" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Activar a prueba de fuego para este sitio" + "value" : "¡Bienvenido a DuckDuckGo!" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Activer le mode coupe-feu pour ce site" + "value" : "Bienvenue sur DuckDuckGo !" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Proteggi questo sito dal fuoco" + "value" : "DuckDuckGo ti dà il benvenuto!" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Deze website brandveilig maken" + "value" : "Welkom bij DuckDuckGo!" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zabezpiecz tę witrynę" + "value" : "Witamy w DuckDuckGo!" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Coloque uma barreira de segurança neste site" + "value" : "Damos-lhe as boas-vindas ao DuckDuckGo!" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сделать огнеупорным" + "value" : "Добро пожаловать в DuckDuckGo!" } } } }, - "options.menu.move.tab.to.new.window" : { - "comment" : "Context menu item", - "extractionState" : "extracted_with_value", + "Only Show on New Tab" : { + "comment" : "Preference for only showing the bookmarks bar on new tab", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Tab in neues Fenster verschieben" - } - }, - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "Move Tab to New Window" + "value" : "Nur auf neuem Tab anzeigen" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mover pestaña a una ventana nueva" + "value" : "Mostrar solo en una pestaña nueva" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Déplacer l'onglet vers une nouvelle fenêtre" + "value" : "Afficher uniquement sur un nouvel onglet" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sposta scheda in una nuova finestra" + "value" : "Mostra solo la nuova scheda" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Tabblad naar nieuw venster verplaatsen" + "value" : "Alleen tonen op nieuw tabblad" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przenieś kartę do nowego okna" + "value" : "Pokaż tylko na nowej karcie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mover separador para nova janela" + "value" : "Mostrar apenas no novo separador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Перенести вкладку в новое окно" + "value" : "Показывать только в новой вкладке" } } } }, - "options.menu.remove-fireproofing" : { - "comment" : "Context menu item", + "open" : { + "comment" : "Open button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Feuerfest-Einstellung deaktivieren" + "value" : "Öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Remove Fireproofing" + "value" : "Open" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desactivar a prueba de fuego" + "value" : "Abrir" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Désactiver le mode coupe-feu" + "value" : "Ouvrir" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Rimuovi protezione dal fuoco" + "value" : "Apri" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Brandveiligheid uitschakelen" + "value" : "Openen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Usuń zabezpieczenie" + "value" : "Otwórz" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Remover barreira de segurança" + "value" : "Abrir" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Снять огнеупорность" + "value" : "Открыть" } } } }, - "page.crash.header" : { - "comment" : "Error page heading text shown when a Web Page process had crashed", + "open.all.in.new.tabs" : { + "comment" : "Menu item that opens all the bookmarks in a folder to new tabs", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Diese Webseite ist abgestürzt." + "value" : "Alle in neuen Tabs öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "This webpage has crashed." + "value" : "Open All in New Tabs" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Esta página web se ha caído." + "value" : "Abrir todo en pestañas nuevas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Cette page Web a planté." + "value" : "Tout ouvrir dans de nouveaux onglets" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Questa pagina web si è bloccata." + "value" : "Apri tutto in nuove schede" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Deze webpagina is gecrasht." + "value" : "Alles openen in nieuwe tabbladen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ta strona uległa awarii." + "value" : "Otwórz wszystko w nowych kartach" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Esta página falhou." + "value" : "Abrir tudo em novos separadores" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "На этой странице произошел сбой." + "value" : "Открыть все в новых вкладках" } } } }, - "page.crash.message" : { - "comment" : "Error page message text shown when a Web Page process had crashed", + "open.all.tabs.in.new.window" : { + "comment" : "Menu item that opens all the bookmarks in a folder in a new window", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Versuche, die Seite neu zu laden, oder versuche es später erneut." + "value" : "Alle in neuem Fenster öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Try reloading the page or come back later." + "value" : "Open All in New Window" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Intenta volver a cargar la página o vuelve más tarde." + "value" : "Abrir todo en una ventana nueva" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Essayez de recharger la page ou revenez plus tard." + "value" : "Tout ouvrir dans une nouvelle fenêtre" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Prova a ricaricare la pagina o torna più tardi." + "value" : "Apri tutto in una nuova finestra" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Probeer de pagina opnieuw te laden of kom later terug." + "value" : "Alles openen in een nieuw venster" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Spróbuj ponownie załadować stronę lub wróć później." + "value" : "Otwórz wszystko w nowym oknie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Experimenta recarregar a página ou voltar mais tarde." + "value" : "Abrir tudo numa nova janela" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Перезагрузите ее или попробуйте вернуться позже." + "value" : "Открыть все в новом окне" } } } }, - "page.error.header" : { - "comment" : "Error page heading text", + "open.bitwarden" : { + "comment" : "Button to open Bitwarden app", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo kann diese Seite nicht laden." + "value" : "Bitwarden öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "DuckDuckGo can’t load this page." + "value" : "Open Bitwarden" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo no puede cargar esta página." + "value" : "Abrir bitwarden" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo ne peut pas charger cette page." + "value" : "Ouvrir Bitwarden" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo non riesce a caricare questa pagina." + "value" : "Apri Bitwarden" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo kan deze pagina niet laden." + "value" : "Bitwarden openen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo nie może wczytać tej strony." + "value" : "Otwórz Bitwarden" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O DuckDuckGo não consegue carregar esta página." + "value" : "Abrir o Bitwarden" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo не удалось загрузить эту страницу." + "value" : "Открыть Bitwarden" } } } }, - "passsword.management.all-items" : { - "comment" : "Used as title for the Autofill All Items option", + "open.bitwarden.and.log.in.or.unlock" : { + "comment" : "Setup of the integration with Bitwarden app", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Alle Elemente" + "value" : "Öffne Bitwarden und logge dich ein oder entsperre deinen Tresor." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "All Items" + "value" : "Open Bitwarden and Log in or Unlock your vault." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Todos los elementos" + "value" : "Abre Bitwarden e inicia sesión o desbloquea tu caja fuerte." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Tous les éléments" + "value" : "Ouvrez Bitwarden et connectez-vous ou déverrouillez votre coffre-fort." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Tutti gli elementi" + "value" : "Apri Bitwarden e accedi o sblocca la cassaforte." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Alle artikelen" + "value" : "Open Bitwarden en log in of ontgrendel je kluis." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wszystkie elementy" + "value" : "Otwórz aplikację Bitwarden i zaloguj się lub odblokuj swój sejf." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Todos os elementos" + "value" : "Abre o Bitwarden e inicia sessão ou desbloqueia o teu cofre." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Все типы данных" + "value" : "Откройте приложение Bitwarden и войдите в систему либо разблокируйте свое хранилище." } } } }, - "passsword.management.credit-cards" : { - "comment" : "Used as title for the Autofill Credit Cards option", + "open.externally.failed" : { + "comment" : "’Link’ is link on a website, it couldn't be opened due to the required app not being found", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Kreditkarten" + "value" : "Die zum Öffnen dieses Links erforderliche App wurde nicht gefunden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Credit Cards" + "value" : "The app required to open that link can’t be found" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Tarjetas de crédito" + "value" : "No se puede encontrar la aplicación necesaria para abrir ese enlace" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Cartes bancaires" + "value" : "L'application nécessaire pour ouvrir ce lien est introuvable" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Carte di credito" + "value" : "Impossibile trovare l'app necessaria per aprire il link" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Creditcards" + "value" : "De app die nodig is om die link te openen, is niet gevonden" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Karty kredytowe" + "value" : "Nie można znaleźć aplikacji wymaganej do otwarcia tego linku" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Cartões de crédito" + "value" : "Não encontramos a aplicação necessária para abrir esse link" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Платежные карты" + "value" : "Приложение для открытия этой ссылки не найдено" } } } }, - "passsword.management.identities" : { - "comment" : "Used as title for the Autofill Identities option", + "open.image.in.new.burner.tab" : { + "comment" : "Context menu item", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Identitäten" + "value" : "Bild in neuem Fire Tab öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Identities" + "value" : "Open Image in New Fire Tab" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Identidades" + "value" : "Abrir imagen en una nueva Fire tab" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Identités" + "value" : "Ouvrir l'image dans le nouveau Fire Tab" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Identità" + "value" : "Apri l'immagine in una nuova scheda Fire" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Identiteiten" + "value" : "Afbeelding openen in nieuw Fire-tabblad" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Tożsamości" + "value" : "Otwórz obraz w nowej karcie Fire" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Identidades" + "value" : "Abrir imagem num novo separador Fire" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Учетные данные" + "value" : "Открыть изображение в новой Fire-вкладке" } } } }, - "passsword.management.lock" : { - "comment" : "Lock Logins Vault menu", + "open.image.in.new.tab" : { + "comment" : "Context menu item", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Sperren" + "value" : "Bild in neuem Tab öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Lock" + "value" : "Open Image in New Tab" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Bloquear" + "value" : "Abrir imagen en una nueva pestaña" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Verrouiller" + "value" : "Ouvrir l'image dans un nouvel onglet" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Blocca" + "value" : "Apri l'immagine in una nuova scheda" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Vergrendelen" + "value" : "Afbeelding openen in nieuw tabblad" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zablokuj" + "value" : "Otwórz obraz w nowej karcie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Bloquear" + "value" : "Abrir imagem num novo separador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Заблокировать" + "value" : "Открыть изображение в новой вкладке" } } } }, - "passsword.management.logins" : { - "comment" : "Used as title for the Autofill Logins option", + "open.in" : { + "comment" : "Opening an entity in other application", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwörter" + "value" : "In %@ öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Passwords" + "value" : "Open in %@" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Contraseñas" + "value" : "Abrir en %@" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Mots de passe" + "value" : "Ouvrir dans % @" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Password" + "value" : "Apri in % @" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoorden" + "value" : "Openen in %@" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Hasła" + "value" : "Otwórz w aplikacji %@" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Palavras-passe" + "value" : "Abrir em %@" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Пароли" + "value" : "Открыть в %@" } } } }, - "passsword.management.notes" : { - "comment" : "Used as title for the Autofill Notes option", + "open.in.new.tab" : { + "comment" : "Menu item that opens the link in a new tab", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Notizen" + "value" : "In neuem Tab öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Notes" + "value" : "Open in New Tab" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Notas" + "value" : "Abrir en una nueva pestaña" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Notes" + "value" : "Ouvrir dans un nouvel onglet" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Note" + "value" : "Apri in una nuova scheda" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Opmerkingen" + "value" : "Openen in nieuw tabblad" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Uwagi" + "value" : "Otwórz w nowej karcie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Notas" + "value" : "Abrir em novo separador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Примечания" + "value" : "Открыть в новой вкладке" } } } }, - "passsword.management.save.address" : { - "comment" : "Title of dialog that allows the user to save an address method", + "open.in.new.window" : { + "comment" : "Menu item that opens the link in a new window", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Adresse speichern?" + "value" : "In neuem Fenster öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Save Address?" + "value" : "Open in New Window" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Guardar dirección?" + "value" : "Abrir en Nueva ventana" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Enregistrer l'adresse ?" + "value" : "Ouvrir dans une nouvelle fenêtre" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Salvare l'indirizzo?" + "value" : "Apri in una nuova finestra" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Adres opslaan?" + "value" : "Openen in nieuw venster" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zapisać adres?" + "value" : "Otwórz w nowym oknie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Guardar endereço?" + "value" : "Abrir numa nova janela" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сохранить адрес?" + "value" : "Открыть в новом окне" } } } }, - "passsword.management.save.credentials.account.label" : { - "comment" : "In the password manager dialog, label that specifies the password manager vault we are connected with", + "open.link.in.new.burner.tab" : { + "comment" : "Context menu item", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Verbunden mit %@" + "value" : "Link in neuem Fire Tab öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Connected to %@" + "value" : "Open Link in New Fire Tab" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Conectado a %@" + "value" : "Abrir enlace en una nueva Fire tab" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Connecté à %@" + "value" : "Ouvrir le lien dans le nouveau Fire Tab" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Connesso a %@" + "value" : "Apri il link in una nuova scheda Fire" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Verbonden met %@" + "value" : "Link in nieuw Fire-tabblad openen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Połączono z sejfem %@" + "value" : "Otwórz łącze w nowej karcie Fire" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ligado a %@" + "value" : "Abrir link num novo separador Fire" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Привязан к %@" + "value" : "Открыть ссылку в новой Fire-вкладке" } } } }, - "passsword.management.save.credentials.fireproof.checkbox.description" : { - "comment" : "In the password manager dialog, description of the section that allows the user to fireproof a website via a checkbox", + "open.link.in.new.tab" : { + "comment" : "Context menu item", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Behält deine Anmeldung bei, nachdem du den Fire Button benutzt hast" + "value" : "Link in neuem Tab öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Keeps you signed in after using the Fire Button" + "value" : "Open Link in New Tab" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mantiene la sesión iniciada después de usar el Fire Button" + "value" : "Abrir enlace en nueva pestaña" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Permet de maintenir votre connexion après l'utilisation du Fire Button" + "value" : "Ouvrir le lien dans un nouvel onglet" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mantiene la connessione dopo aver utilizzato il Fire Button" + "value" : "Apri link in una nuova scheda" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Je blijft ingelogd nadat je de Fire Button hebt gebruikt" + "value" : "Link openen in een nieuw tabblad" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zachowuje stan Twojego zalogowania po użyciu przycisku Fire Button" + "value" : "Otwórz łącze w nowej karcie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mantém a tua sessão iniciada depois de utilizares o Fire Button" + "value" : "Abrir ligação num separador novo" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Позволяет оставаться в учетной записи даже после применения кнопки Fire Button." + "value" : "Открыть ссылку в новой вкладке" } } } }, - "passsword.management.save.credentials.fireproof.checkbox.title" : { - "comment" : "In the password manager dialog, title of the section that allows the user to fireproof a website via a checkbox", + "open.preferences" : { + "comment" : "Open System Preferences (to re-enable permission for the App) (up to and including macOS 12", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "„Fireproof“ diese Website?" + "value" : "Systemeinstellungen öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Fireproof this website" + "value" : "Open System Preferences" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Marcar el sitio web como Fireproof" + "value" : "Abrir preferencias del sistema" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Placer ce site Web en mode coupe-feu" + "value" : "Ouvrir les préférences système" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Fireproof questo sito" + "value" : "Apri Preferenze di Sistema" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Deze website fireproof maken" + "value" : "Systeemvoorkeuren openen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zabezpiecz tę witrynę funkcją Fireproof" + "value" : "Otwórz preferencje systemowe" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Faz o fireproof deste site" + "value" : "Abrir Preferências do sistema" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Fireproof-защита для сайта" + "value" : "Открыть настройки системы" } } } }, - "passsword.management.save.credentials.password.manager.title" : { - "comment" : "Title of the passwored manager section of dialog that allows the user to save credentials", - "extractionState" : "extracted_with_value", + "open.settings" : { + "comment" : "This string represents a prompt or button label prompting the user to open system settings", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwort bei Bitwarden speichern?" + "value" : "Systemeinstellungen öffnen …" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Save password to Bitwarden?" + "value" : "Open System Settings…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Guardar contraseña en Bitwarden?" + "value" : "Abrir configuración del sistema" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Enregistrer le mot de passe dans Bitwarden ?" + "value" : "Ouvrir les paramètres système…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Salvare la password su Bitwarden?" + "value" : "Apri Impostazioni di Sistema..." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoord opslaan in Bitwarden?" + "value" : "Systeeminstellingen openen ..." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zapisać hasło w aplikacji Bitwarden?" + "value" : "Otwórz ustawienia systemowe…" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Guardar palavra-passe no Bitwarden?" + "value" : "Abrir Definições do sistema…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сохранить пароль в Bitwarden?" + "value" : "Открыть настройки системы…" } } } }, - "passsword.management.save.credentials.unlock.password.manager" : { - "comment" : "In the password manager dialog, alerts the user that they need to unlock Bitworden before being able to save the credential", + "options.menu.fireproof-site" : { + "comment" : "Context menu item", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bitwarden zum Speichern freischalten" + "value" : "Diese Website feuerfest machen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Unlock Bitwarden to Save" + "value" : "Fireproof This Site" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desbloquea Bitwarden para guardar" + "value" : "Activar a prueba de fuego para este sitio" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Déverrouiller Bitwarden pour enregistrer" + "value" : "Activer le mode coupe-feu pour ce site" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sblocca Bitwarden per salvare" + "value" : "Proteggi questo sito dal fuoco" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Ontgrendel Bitwarden om op te slaan" + "value" : "Deze website brandveilig maken" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Odblokuj aplikację Bitwarden, aby zapisać" + "value" : "Zabezpiecz tę witrynę" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Desbloquear o Bitwarden para guardar" + "value" : "Coloque uma barreira de segurança neste site" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Для сохранения данных нужно разблокировать Bitwarden." + "value" : "Сделать огнеупорным" } } } }, - "passsword.management.save.payment" : { - "comment" : "Title of dialog that allows the user to save a payment method", + "options.menu.move.tab.to.new.window" : { + "comment" : "Context menu item", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zahlungsmethode speichern?" + "value" : "Tab in neues Fenster verschieben" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Save Payment Method?" + "value" : "Move Tab to New Window" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Guardar método de pago?" + "value" : "Mover pestaña a una ventana nueva" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Enregistrer le mode de paiement ?" + "value" : "Déplacer l'onglet vers une nouvelle fenêtre" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Salva il metodo di pagamento?" + "value" : "Sposta scheda in una nuova finestra" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Betaalmethode opslaan?" + "value" : "Tabblad naar nieuw venster verplaatsen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zapisać metodę płatności?" + "value" : "Przenieś kartę do nowego okna" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Guardar método de pagamento?" + "value" : "Mover separador para nova janela" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сохранить способ оплаты?" + "value" : "Перенести вкладку в новое окно" } } } }, - "passsword.management.unlock" : { - "comment" : "Unlock Logins Vault menu", + "options.menu.remove-fireproofing" : { + "comment" : "Context menu item", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Freischalten" + "value" : "Feuerfest-Einstellung deaktivieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Unlock" + "value" : "Remove Fireproofing" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desbloquear" + "value" : "Desactivar a prueba de fuego" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Déverrouiller" + "value" : "Désactiver le mode coupe-feu" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sblocca" + "value" : "Rimuovi protezione dal fuoco" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Ontgrendelen" + "value" : "Brandveiligheid uitschakelen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Odblokuj" + "value" : "Usuń zabezpieczenie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Desbloquear" + "value" : "Remover barreira de segurança" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Разблокировать" + "value" : "Снять огнеупорность" } } } }, - "passsword.manager.alert.delete" : { - "comment" : "Button of the alert that asks the user to confirm they want to delete an password, login or credential to actually delete", + "page.crash.header" : { + "comment" : "Error page heading text shown when a Web Page process had crashed", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Löschen" + "value" : "Diese Webseite ist abgestürzt." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Delete" + "value" : "This webpage has crashed." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Eliminar" + "value" : "Esta página web se ha caído." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Supprimer" + "value" : "Cette page Web a planté." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cancella" + "value" : "Questa pagina web si è bloccata." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Verwijderen" + "value" : "Deze webpagina is gecrasht." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Usuń" + "value" : "Ta strona uległa awarii." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Eliminar" + "value" : "Esta página falhou." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Удалить" + "value" : "На этой странице произошел сбой." } } } }, - "passsword.manager.alert.duplicate.password" : { - "comment" : "Title of the alert that the password inserted already exists", + "page.crash.message" : { + "comment" : "Error page message text shown when a Web Page process had crashed", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwort duplizieren" + "value" : "Versuche, die Seite neu zu laden, oder versuche es später erneut." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Duplicate Password" + "value" : "Try reloading the page or come back later." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Duplicar contraseña" + "value" : "Intenta volver a cargar la página o vuelve más tarde." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Mot de passe dupliqué" + "value" : "Essayez de recharger la page ou revenez plus tard." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Password duplicata" + "value" : "Prova a ricaricare la pagina o torna più tardi." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoord dupliceren" + "value" : "Probeer de pagina opnieuw te laden of kom later terug." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zduplikowane hasło" + "value" : "Spróbuj ponownie załadować stronę lub wróć później." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Palavra-passe duplicada" + "value" : "Experimenta recarregar a página ou voltar mais tarde." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Дубликат пароля" + "value" : "Перезагрузите ее или попробуйте вернуться позже." } } } }, - "passsword.manager.alert.duplicate.password.description" : { - "comment" : "Text of the alert that explains the password inserted already exists for a given website", + "page.error.header" : { + "comment" : "Error page heading text", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Du hast bereits ein Passwort für diesen Benutzernamen und diese Website gespeichert." + "value" : "DuckDuckGo kann diese Seite nicht laden." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "You already have a password saved for this username and website." + "value" : "DuckDuckGo can’t load this page." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ya tienes una contraseña guardada para este nombre de usuario y sitio web." + "value" : "DuckDuckGo no puede cargar esta página." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Vous avez déjà enregistré un mot de passe pour ce nom d'utilisateur et ce site Web." + "value" : "DuckDuckGo ne peut pas charger cette page." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Hai già salvato una password per questo nome utente e questo sito web." + "value" : "DuckDuckGo non riesce a caricare questa pagina." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Je hebt al een wachtwoord opgeslagen voor deze gebruikersnaam en website." + "value" : "DuckDuckGo kan deze pagina niet laden." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Masz już zapisane hasło powiązane z tą nazwą użytkownika i witryną." + "value" : "DuckDuckGo nie może wczytać tej strony." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Já tens uma palavra-passe guardada para este nome de utilizador e site." + "value" : "O DuckDuckGo não consegue carregar esta página." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "У вас уже есть сохраненный пароль для этого сайта и имени пользователя." + "value" : "DuckDuckGo не удалось загрузить эту страницу." } } } }, - "passsword.manager.alert.remove-card.confirmation" : { - "comment" : "Text of the alert that asks the user to confirm they want to delete a credit card", + "passsword.management.all-items" : { + "comment" : "Used as title for the Autofill All Items option", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Möchtest du diese gespeicherte Kreditkarte wirklich löschen?" + "value" : "Alle Elemente" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Are you sure you want to delete this saved credit card?" + "value" : "All Items" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Seguro que quieres eliminar esta tarjeta de crédito guardada?" + "value" : "Todos los elementos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Voulez-vous vraiment supprimer cette carte bancaire enregistrée ?" + "value" : "Tous les éléments" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Eliminare questa carta di credito salvata?" + "value" : "Tutti gli elementi" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Weet je zeker dat je deze opgeslagen creditcard wilt verwijderen?" + "value" : "Alle artikelen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Czy na pewno chcesz usunąć tę zapisaną kartę kredytową?" + "value" : "Wszystkie elementy" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Tens a certeza de que pretendes eliminar este cartão de crédito guardado?" + "value" : "Todos os elementos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Вы точно хотите удалить эту сохраненную платежную карту?" + "value" : "Все типы данных" } } } }, - "passsword.manager.alert.remove-identity.confirmation" : { - "comment" : "Text of the alert that asks the user to confirm they want to delete an identity", + "passsword.management.credit-cards" : { + "comment" : "Used as title for the Autofill Credit Cards option", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Möchtest du die gespeicherten Informationen zum Autovervollständigen wirklich löschen?" + "value" : "Kreditkarten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Are you sure you want to delete this saved autofill info?" + "value" : "Credit Cards" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Seguro que quieres eliminar esta información de autocompletar guardada?" + "value" : "Tarjetas de crédito" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Voulez-vous vraiment supprimer ces informations de saisie automatique enregistrées ?" + "value" : "Cartes bancaires" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Eliminare le info compilate automaticamente salvate?" + "value" : "Carte di credito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Weet je zeker dat je deze opgeslagen automatisch ingevulde gegevens wilt verwijderen?" + "value" : "Creditcards" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Czy na pewno chcesz usunąć te zapisane informacje autouzupełniania?" + "value" : "Karty kredytowe" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Tens a certeza de que pretendes eliminar estas informações de preenchimento automático guardadas?" + "value" : "Cartões de crédito" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Вы точно хотите удалить эти сохраненные учетные данные?" + "value" : "Платежные карты" } } } }, - "passsword.manager.alert.remove-note.confirmation" : { - "comment" : "Text of the alert that asks the user to confirm they want to delete a note", + "passsword.management.identities" : { + "comment" : "Used as title for the Autofill Identities option", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Möchtest du diese Notiz wirklich löschen?" + "value" : "Identitäten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Are you sure you want to delete this note?" + "value" : "Identities" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Seguro que quieres eliminar esta nota?" + "value" : "Identidades" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Voulez-vous vraiment supprimer cette note ?" + "value" : "Identités" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Eliminare questa nota?" + "value" : "Identità" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Weet je zeker dat je deze notitie wilt verwijderen?" + "value" : "Identiteiten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Czy na pewno chcesz usunąć tę notatkę?" + "value" : "Tożsamości" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Tens a certeza de que pretendes eliminar esta nota?" + "value" : "Identidades" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Вы точно хотите удалить это примечание?" + "value" : "Учетные данные" } } } }, - "passsword.manager.alert.remove-password.confirmation" : { - "comment" : "Text of the alert that asks the user to confirm they want to delete a password", + "passsword.management.lock" : { + "comment" : "Lock Logins Vault menu", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Möchtest du dieses gespeicherte Passwort wirklich löschen?" + "value" : "Sperren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Are you sure you want to delete this saved password" + "value" : "Lock" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Seguro que quieres eliminar esta contraseña guardada" + "value" : "Bloquear" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Voulez-vous vraiment supprimer ce mot de passe enregistré ?" + "value" : "Verrouiller" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Eliminare questa password salvata?" + "value" : "Blocca" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Weet je zeker dat je dit opgeslagen wachtwoord wilt verwijderen?" + "value" : "Vergrendelen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Czy na pewno chcesz usunąć to zapisane hasło?" + "value" : "Zablokuj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Tens a certeza de que pretendes eliminar esta palavra-passe guardada?" + "value" : "Bloquear" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Вы точно хотите удалить этот сохраненный пароль?" + "value" : "Заблокировать" } } } }, - "passsword.manager.alert.save-changes" : { - "comment" : "Text of the alert that asks the user if the want to save the changes made", + "passsword.management.logins" : { + "comment" : "Used as title for the Autofill Logins option", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Die vorgenommenen Änderungen speichern?" + "value" : "Passwörter" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Save the changes you made?" + "value" : "Passwords" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Guardar los cambios realizados?" + "value" : "Contraseñas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Enregistrer les modifications que vous avez apportées ?" + "value" : "Mots de passe" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Salvare le modifiche apportate?" + "value" : "Password" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "De aangebrachte wijzigingen opslaan?" + "value" : "Wachtwoorden" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zapisać wprowadzone zmiany?" + "value" : "Hasła" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Guardar as alterações que fizeste?" + "value" : "Palavras-passe" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сохранить изменения?" + "value" : "Пароли" } } } }, - "passsword.manager.empty.state.message" : { - "comment" : "In the password manager message when there are no items", + "passsword.management.notes" : { + "comment" : "Used as title for the Autofill Notes option", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Wenn deine Logins in einem anderen Browser gespeichert sind,\nkannst du sie in DuckDuckGo importieren." + "value" : "Notizen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "If your logins are saved in another browser, you can import them into DuckDuckGo." + "value" : "Notes" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Si tus inicios de sesión se guardan en otro navegador, puedes importarlos a DuckDuckGo." + "value" : "Notas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Si vos identifiants sont enregistrés dans un autre navigateur, vous pouvez les importer dans DuckDuckGo." + "value" : "Notes" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Se gli accessi vengono salvati in un altro browser, è possibile importarli in DuckDuckGo." + "value" : "Note" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Als je inloggegevens in een andere browser zijn opgeslagen, kun je ze in DuckDuckGo importeren." + "value" : "Opmerkingen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Jeśli Twoje dane logowania są zapisane w innej przeglądarce, możesz je zaimportować do DuckDuckGo." + "value" : "Uwagi" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Se os teus inícios de sessão estão guardados noutro navegador, podes importá-los para o DuckDuckGo." + "value" : "Notas" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Если вы уже храните учетные данные в другом браузере, вы можете импортировать их в DuckDuckGo." + "value" : "Примечания" } } } }, - "passsword.manager.empty.state.title" : { - "comment" : "In the password manager title when there are no items", + "passsword.management.save.address" : { + "comment" : "Title of dialog that allows the user to save an address method", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Noch keine Logins oder Kreditkartendaten" + "value" : "Adresse speichern?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "No logins or credit card info yet" + "value" : "Save Address?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Aún no hay ingresos ni información de tarjeta de crédito" + "value" : "¿Guardar dirección?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Aucun identifiant ni aucune information de carte bancaire pour l'instant" + "value" : "Enregistrer l'adresse ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ancora nessun accesso o dati della carta di credito" + "value" : "Salvare l'indirizzo?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nog geen inloggegevens of creditcardgegevens" + "value" : "Adres opslaan?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Jeszcze nie ma danych logowania ani danych kart kredytowych" + "value" : "Zapisać adres?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ainda sem inícios de sessão ou informações de cartão de crédito" + "value" : "Guardar endereço?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Учетных данных и реквизитов карт пока нет" + "value" : "Сохранить адрес?" } } } }, - "passsword.manager.unlock.autofill" : { - "comment" : "In the password manager text of button to unlock autofill info", + "passsword.management.save.credentials.account.label" : { + "comment" : "In the password manager dialog, label that specifies the password manager vault we are connected with", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Schalte deine Autovervollständigungs-Infos frei" + "value" : "Verbunden mit %@" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Unlock your Autofill info" + "value" : "Connected to %@" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desbloquea tu información de autocompletar" + "value" : "Conectado a %@" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Déverrouiller vos informations de saisie automatique" + "value" : "Connecté à %@" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sblocca la compilazione automatica delle informazioni" + "value" : "Connesso a %@" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Ontgrendel uw gegevens voor automatisch aanvullen" + "value" : "Verbonden met %@" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Odblokuj informacje autouzupełniania" + "value" : "Połączono z sejfem %@" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Desbloquear as informações de preenchimento automático" + "value" : "Ligado a %@" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Разблокировать данные для автозаполнения" + "value" : "Привязан к %@" } } } }, - "Password import complete. You can now delete the saved passwords file." : { - "comment" : "message about Passwords Data Import completion", + "passsword.management.save.credentials.fireproof.checkbox.description" : { + "comment" : "In the password manager dialog, description of the section that allows the user to fireproof a website via a checkbox", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwortimport abgeschlossen. Du kannst jetzt die gespeicherte Passwortdatei löschen." + "value" : "Behält deine Anmeldung bei, nachdem du den Fire Button benutzt hast" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Keeps you signed in after using the Fire Button" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Importación de contraseña completada. Ya puedes eliminar el archivo de contraseñas guardadas." + "value" : "Mantiene la sesión iniciada después de usar el Fire Button" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "L'importation des mots de passe est terminée. Vous pouvez maintenant supprimer le fichier de mots de passe sauvegardé." + "value" : "Permet de maintenir votre connexion après l'utilisation du Fire Button" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Importazione della password completata. Ora puoi eliminare il file delle password salvate." + "value" : "Mantiene la connessione dopo aver utilizzato il Fire Button" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Importeren wachtwoord voltooid. Je kunt het opgeslagen wachtwoordbestand nu verwijderen." + "value" : "Je blijft ingelogd nadat je de Fire Button hebt gebruikt" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Importowanie haseł zostało ukończone. Teraz możesz usunąć zapisany plik haseł." + "value" : "Zachowuje stan Twojego zalogowania po użyciu przycisku Fire Button" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Importação de palavra-passe concluída. Já podes eliminar o ficheiro de palavras-passe guardadas." + "value" : "Mantém a tua sessão iniciada depois de utilizares o Fire Button" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Пароли импортированы. Можете удалить сохраненный файл с паролями." + "value" : "Позволяет оставаться в учетной записи даже после применения кнопки Fire Button." } } } }, - "Password import failed: " : { - "comment" : "Data import summary format of how many passwords (%lld) failed to import.", + "passsword.management.save.credentials.fireproof.checkbox.title" : { + "comment" : "In the password manager dialog, title of the section that allows the user to fireproof a website via a checkbox", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwortimport fehlgeschlagen: " + "value" : "„Fireproof“ diese Website?" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Fireproof this website" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Error al importar contraseña: " + "value" : "Marcar el sitio web como Fireproof" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Échec de l'importation des mots de passe : " + "value" : "Placer ce site Web en mode coupe-feu" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Importazione password non riuscita: " + "value" : "Fireproof questo sito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Importeren wachtwoord mislukt: " + "value" : "Deze website fireproof maken" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Importowanie haseł nie powiodło się: " + "value" : "Zabezpiecz tę witrynę funkcją Fireproof" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Falha na importação da palavra-passe: " + "value" : "Faz o fireproof deste site" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Не удалось импортировать пароли: " + "value" : "Fireproof-защита для сайта" } } } }, - "Password import failed." : { - "comment" : "Data import summary message of failed passwords import.", + "passsword.management.save.credentials.password.manager.title" : { + "comment" : "Title of the passwored manager section of dialog that allows the user to save credentials", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Der Passwortimport ist fehlgeschlagen." + "value" : "Passwort bei Bitwarden speichern?" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Save password to Bitwarden?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Se ha producido un error al importar la contraseña." + "value" : "¿Guardar contraseña en Bitwarden?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "L'importation des mots de passe a échoué." + "value" : "Enregistrer le mot de passe dans Bitwarden ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Importazione password non riuscita." + "value" : "Salvare la password su Bitwarden?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Importeren wachtwoord mislukt." + "value" : "Wachtwoord opslaan in Bitwarden?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Importowanie haseł nie powiodło się." + "value" : "Zapisać hasło w aplikacji Bitwarden?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Falha na importação da palavra-passe." + "value" : "Guardar palavra-passe no Bitwarden?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Не удалось импортировать пароли." + "value" : "Сохранить пароль в Bitwarden?" } } } }, - "password.management.title" : { - "comment" : "Used as the title for menu item and related Settings page", + "passsword.management.save.credentials.unlock.password.manager" : { + "comment" : "In the password manager dialog, alerts the user that they need to unlock Bitworden before being able to save the credential", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwörter und Autovervollständigen" + "value" : "Bitwarden zum Speichern freischalten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Passwords & Autofill" + "value" : "Unlock Bitwarden to Save" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Contraseñas y autocompletar" + "value" : "Desbloquea Bitwarden para guardar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Mots de passe et saisie automatique" + "value" : "Déverrouiller Bitwarden pour enregistrer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Password e compilazione automatica" + "value" : "Sblocca Bitwarden per salvare" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoorden en automatisch invullen" + "value" : "Ontgrendel Bitwarden om op te slaan" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Hasła i autouzupełnianie" + "value" : "Odblokuj aplikację Bitwarden, aby zapisać" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Palavras-passe e preenchimento automático" + "value" : "Desbloquear o Bitwarden para guardar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Пароли и автозаполнение" + "value" : "Для сохранения данных нужно разблокировать Bitwarden." } } } }, - "password.manager" : { - "comment" : "Section header", + "passsword.management.save.payment" : { + "comment" : "Title of dialog that allows the user to save a payment method", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwort-Manager" + "value" : "Zahlungsmethode speichern?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Password Manager" + "value" : "Save Payment Method?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Administrador de contraseñas" + "value" : "¿Guardar método de pago?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Gestionnaire de mots de passe" + "value" : "Enregistrer le mode de paiement ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Gestore di password" + "value" : "Salva il metodo di pagamento?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoordbeheerder" + "value" : "Betaalmethode opslaan?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Menedżer haseł" + "value" : "Zapisać metodę płatności?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Gestor de palavras-passe" + "value" : "Guardar método de pagamento?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Менеджер паролей" + "value" : "Сохранить способ оплаты?" } } } }, - "Passwords:" : { - "comment" : "Data import summary format of how many passwords were successfully imported.", + "passsword.management.unlock" : { + "comment" : "Unlock Logins Vault menu", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwörter:" + "value" : "Freischalten" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Unlock" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Contraseñas:" + "value" : "Desbloquear" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Mots de passe :" + "value" : "Déverrouiller" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Password:" + "value" : "Sblocca" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoorden:" + "value" : "Ontgrendelen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Hasła:" + "value" : "Odblokuj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Palavras-passe:" + "value" : "Desbloquear" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Пароли:" + "value" : "Разблокировать" } } } }, - "paste-from-clipboard" : { - "comment" : "Paste button", + "passsword.manager.alert.delete" : { + "comment" : "Button of the alert that asks the user to confirm they want to delete an password, login or credential to actually delete", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Vom Clipboard einfügen" + "value" : "Löschen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Paste from Clipboard" + "value" : "Delete" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Pegar desde el portapapeles" + "value" : "Eliminar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Coller depuis le presse-papier" + "value" : "Supprimer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Incolla dagli appunti" + "value" : "Elimina" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Plakken vanaf klembord" + "value" : "Verwijderen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wklej ze schowka" + "value" : "Usuń" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Colar da área de transferência" + "value" : "Eliminar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Вставить из буфера обмена" + "value" : "Удалить" } } } }, - "paste.and.go" : { - "comment" : "Paste & Go button", + "passsword.manager.alert.duplicate.password" : { + "comment" : "Title of the alert that the password inserted already exists", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Einfügen & los" + "value" : "Passwort duplizieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Paste & Go" + "value" : "Duplicate Password" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Pegar e ir" + "value" : "Duplicar contraseña" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Coller et valider" + "value" : "Mot de passe dupliqué" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Incolla e continua" + "value" : "Password duplicata" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Plakken en gaan" + "value" : "Wachtwoord dupliceren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wklej i przejdź dalej" + "value" : "Zduplikowane hasło" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Colar e ir" + "value" : "Palavra-passe duplicada" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Вставить и перейти" + "value" : "Дубликат пароля" } } } }, - "paste.and.search" : { - "comment" : "Paste & Search button", + "passsword.manager.alert.duplicate.password.description" : { + "comment" : "Text of the alert that explains the password inserted already exists for a given website", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Einfügen & suchen" + "value" : "Du hast bereits ein Passwort für diesen Benutzernamen und diese Website gespeichert." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Paste & Search" + "value" : "You already have a password saved for this username and website." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Pegar y buscar" + "value" : "Ya tienes una contraseña guardada para este nombre de usuario y sitio web." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Coller et rechercher" + "value" : "Vous avez déjà enregistré un mot de passe pour ce nom d'utilisateur et ce site Web." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Incolla e cerca" + "value" : "Hai già salvato una password per questo nome utente e questo sito web." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Plakken en zoeken" + "value" : "Je hebt al een wachtwoord opgeslagen voor deze gebruikersnaam en website." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wklej i wyszukaj" + "value" : "Masz już zapisane hasło powiązane z tą nazwą użytkownika i witryną." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Colar e pesquisar" + "value" : "Já tens uma palavra-passe guardada para este nome de utilizador e site." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Вставить и найти" + "value" : "У вас уже есть сохраненный пароль для этого сайта и имени пользователя." } } } }, - "permission.allow.externalScheme.format" : { - "comment" : "Allow to open External Link (%@ 2) to open on current domain (%@ 1)", + "passsword.manager.alert.remove-card.confirmation" : { + "comment" : "Text of the alert that asks the user to confirm they want to delete a credit card", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zulassen, dass „%1$@“ %2$@ öffnet" + "value" : "Möchtest du diese gespeicherte Kreditkarte wirklich löschen?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Allow “%1$@“ to open %2$@" + "value" : "Are you sure you want to delete this saved credit card?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Permitir que \"%1$@\" abra %2$@" + "value" : "¿Seguro que quieres eliminar esta tarjeta de crédito guardada?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Autoriser « %1$@ » à ouvrir %2$@" + "value" : "Voulez-vous vraiment supprimer cette carte bancaire enregistrée ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Consenti a \"%1$@\" di aprire %2$@" + "value" : "Eliminare questa carta di credito salvata?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "\"%1$@\" toestaan om %2$@ te openen" + "value" : "Weet je zeker dat je deze opgeslagen creditcard wilt verwijderen?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zezwól domenie „%1$@” na otwarcie %2$@" + "value" : "Czy na pewno chcesz usunąć tę zapisaną kartę kredytową?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Permitir que \"%1$@\" abra %2$@" + "value" : "Tens a certeza de que pretendes eliminar este cartão de crédito guardado?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Разрешить сайту %1$@ открывать %2$@" + "value" : "Вы точно хотите удалить эту сохраненную платежную карту?" } } } }, - "permission.allow.externalScheme.menu-header" : { - "comment" : "Allow the App Name(%@ 1) to open “URL Scheme”(%@ 2) links", + "passsword.manager.alert.remove-identity.confirmation" : { + "comment" : "Text of the alert that asks the user to confirm they want to delete an identity", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Erlaube dem %1$@, „%2$@“ Links zu öffnen" + "value" : "Möchtest du die gespeicherten Informationen zum Autovervollständigen wirklich löschen?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Allow the %1$@ to open “%2$@” links" + "value" : "Are you sure you want to delete this saved autofill info?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Permitir que %1$@ abra los enlaces \"%2$@\"" + "value" : "¿Seguro que quieres eliminar esta información de autocompletar guardada?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Autoriser l'application %1$@ à ouvrir les liens « %2$@ »" + "value" : "Voulez-vous vraiment supprimer ces informations de saisie automatique enregistrées ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Consenti a %1$@ di aprire i link \"%2$@\"" + "value" : "Eliminare le info compilate automaticamente salvate?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "%1$@ toestaan om “%2$@”-links te openen" + "value" : "Weet je zeker dat je deze opgeslagen automatisch ingevulde gegevens wilt verwijderen?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zezwól aplikacji %1$@ na otwieranie łączy „%2$@”" + "value" : "Czy na pewno chcesz usunąć te zapisane informacje autouzupełniania?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Permitir que a aplicação %1$@ abra os links do \"%2$@\"" + "value" : "Tens a certeza de que pretendes eliminar estas informações de preenchimento automático guardadas?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Разрешить %1$@ открывать ссылки «%2$@»" + "value" : "Вы точно хотите удалить эти сохраненные учетные данные?" } } } }, - "permission.authorization.externalScheme.empty.format" : { - "comment" : "Popover asking to open link in External App (%@)", + "passsword.manager.alert.remove-note.confirmation" : { + "comment" : "Text of the alert that asks the user to confirm they want to delete a note", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Diesen Link in %@ öffnen?" + "value" : "Möchtest du diese Notiz wirklich löschen?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open this link in %@?" + "value" : "Are you sure you want to delete this note?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Abrir este enlace en %@?" + "value" : "¿Seguro que quieres eliminar esta nota?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir ce lien dans %@ ?" + "value" : "Voulez-vous vraiment supprimer cette note ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri questo link in %@?" + "value" : "Eliminare questa nota?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Deze link openen in %@?" + "value" : "Weet je zeker dat je deze notitie wilt verwijderen?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otworzyć to łącze w aplikacji %@?" + "value" : "Czy na pewno chcesz usunąć tę notatkę?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir este link na aplicação %@?" + "value" : "Tens a certeza de que pretendes eliminar esta nota?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть ссылку в %@?" + "value" : "Вы точно хотите удалить это примечание?" } } } }, - "permission.authorization.externalScheme.format" : { - "comment" : "Popover asking for domain %@ to open link in External App (%@)", + "passsword.manager.alert.remove-password.confirmation" : { + "comment" : "Text of the alert that asks the user to confirm they want to delete a password", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "„%1$@“ möchte diesen Link in %2$@ öffnen" + "value" : "Möchtest du dieses gespeicherte Passwort wirklich löschen?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "“%1$@” would like to open this link in %2$@" + "value" : "Are you sure you want to delete this saved password" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "\"%1$@\" desea abrir este enlace en %2$@" + "value" : "Seguro que quieres eliminar esta contraseña guardada" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "« %1$@ » souhaiterait ouvrir ce lien dans %2$@" + "value" : "Voulez-vous vraiment supprimer ce mot de passe enregistré ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "\"%1$@\" vorrebbe aprire questo link in %2$@" + "value" : "Eliminare questa password salvata?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "\"%1$@\" wil deze link openen in %2$@" + "value" : "Weet je zeker dat je dit opgeslagen wachtwoord wilt verwijderen?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "„%1$@” chce otworzyć to łącze w aplikacji %2$@" + "value" : "Czy na pewno chcesz usunąć to zapisane hasło?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "\"%1$@\" gostaria de abrir este link na aplicação %2$@" + "value" : "Tens a certeza de que pretendes eliminar esta palavra-passe guardada?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сайт %1$@ хочет открыть эту ссылку в %2$@" + "value" : "Вы точно хотите удалить этот сохраненный пароль?" } } } }, - "permission.authorization.format" : { - "comment" : "Popover asking for domain %@ to use camera/mic (%@)", + "passsword.manager.alert.save-changes" : { + "comment" : "Text of the alert that asks the user if the want to save the changes made", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Erlaube „%1$@“, dein %2$@ zu benutzen?" + "value" : "Die vorgenommenen Änderungen speichern?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Allow “%1$@“ to use your %2$@?" + "value" : "Save the changes you made?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Permitir que \"%1$@\" use tu %2$@?" + "value" : "¿Guardar los cambios realizados?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Autoriser « %1$@ » à utiliser votre %2$@ ?" + "value" : "Enregistrer les modifications que vous avez apportées ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Consenti a \"%1$@\" di utilizzare %2$@?" + "value" : "Salvare le modifiche apportate?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "'%1$@' toestaan om je %2$@ te gebruiken?" + "value" : "De aangebrachte wijzigingen opslaan?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zezwolić domenie „%1$@” na użycie Twojego urządzenia/funkcji %2$@?" + "value" : "Zapisać wprowadzone zmiany?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Permitir que \"%1$@\" utilize %2$@?" + "value" : "Guardar as alterações que fizeste?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть сайту %1$@ доступ (%2$@)?" + "value" : "Сохранить изменения?" } } } }, - "permission.authorization.location" : { - "comment" : "Popover asking for domain %@ to use location", + "passsword.manager.empty.state.message" : { + "comment" : "In the password manager message when there are no items", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Die Website „%@“ möchte deinen aktuellen Standort verwenden." + "value" : "Wenn deine Logins in einem anderen Browser gespeichert sind,\nkannst du sie in DuckDuckGo importieren." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "“%@“ website would like to use your current location." + "value" : "If your logins are saved in another browser, you can import them into DuckDuckGo." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "El sitio web “%@” desea usar tu ubicación actual." + "value" : "Si tus inicios de sesión se guardan en otro navegador, puedes importarlos a DuckDuckGo." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Le site « %@ » souhaiterait utiliser votre position actuelle." + "value" : "Si vos identifiants sont enregistrés dans un autre navigateur, vous pouvez les importer dans DuckDuckGo." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Il sito web “%@“ vorrebbe utilizzare la tua posizione attuale." + "value" : "Se gli accessi vengono salvati in un altro browser, è possibile importarli in DuckDuckGo." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "De website \"%@\" wil graag je huidige locatie gebruiken." + "value" : "Als je inloggegevens in een andere browser zijn opgeslagen, kun je ze in DuckDuckGo importeren." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Witryna „%@” chce korzystać z Twojej aktualnej lokalizacji." + "value" : "Jeśli Twoje dane logowania są zapisane w innej przeglądarce, możesz je zaimportować do DuckDuckGo." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O site \"%@\" gostaria de utilizar a tua localização atual." + "value" : "Se os teus inícios de sessão estão guardados noutro navegador, podes importá-los para o DuckDuckGo." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сайт %@ запрашивает доступ к вашей текущей геопозиции." + "value" : "Если вы уже храните учетные данные в другом браузере, вы можете импортировать их в DuckDuckGo." } } } }, - "permission.authorization.popups.format" : { - "comment" : "Popover asking for domain %@ to open Popup Window", + "passsword.manager.empty.state.title" : { + "comment" : "In the password manager title when there are no items", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Erlaube „%@“, ein PopUp-Fenster zu öffnen?" + "value" : "Noch keine Logins oder Kreditkartendaten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Allow “%@“ to open PopUp Window?" + "value" : "No logins or credit card info yet" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Permitir que \"%@\" abra una ventana emergente?" + "value" : "Aún no hay ingresos ni información de tarjeta de crédito" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Autoriser « %@ » à ouvrir la fenêtre contextuelle ?" + "value" : "Aucun identifiant ni aucune information de carte bancaire pour l'instant" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Consenti a \"%@\" di aprire la finestra popup?" + "value" : "Ancora nessun accesso o dati della carta di credito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Toestaan dat \"%@\" een pop-upvenster opent?" + "value" : "Nog geen inloggegevens of creditcardgegevens" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zezwolić domenie „%@” na otwarcie wyskakującego okienka?" + "value" : "Jeszcze nie ma danych logowania ani danych kart kredytowych" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Permitir que \"%@\" abra a janela de pop-up?" + "value" : "Ainda sem inícios de sessão ou informações de cartão de crédito" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Разрешить сайту %@ открыть всплывающее окно?" + "value" : "Учетных данных и реквизитов карт пока нет" } } } }, - "permission.authorization.popups.menu-header" : { - "comment" : "Popover asking for domain %@ to open Popup Window", + "passsword.manager.unlock.autofill" : { + "comment" : "In the password manager text of button to unlock autofill info", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Erlaube „%@“, PopUp-Fenster zu öffnen?" + "value" : "Schalte deine Autovervollständigungs-Infos frei" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Allow “%@“ to open PopUp Windows?" + "value" : "Unlock your Autofill info" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Permitir que \"%@\" abra ventanas emergentes?" + "value" : "Desbloquea tu información de autocompletar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Autoriser « %@ » à ouvrir les fenêtres contextuelles ?" + "value" : "Déverrouiller vos informations de saisie automatique" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Consenti a \"%@\" di aprire finestre popup?" + "value" : "Sblocca la compilazione automatica delle informazioni" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Toestaan dat \"%@\" pop-upvensters opent?" + "value" : "Ontgrendel uw gegevens voor automatisch aanvullen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zezwolić domenie „%@” na otwieranie wyskakujących okienek?" + "value" : "Odblokuj informacje autouzupełniania" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Permitir que \"%@\" abra janelas de pop-up?" + "value" : "Desbloquear as informações de preenchimento automático" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Разрешить сайту %@ открыть всплывающие окна?" + "value" : "Разблокировать данные для автозаполнения" } } } }, - "permission.camera" : { - "comment" : "Camera input media device name", - "extractionState" : "extracted_with_value", + "Password import complete. You can now delete the saved passwords file." : { + "comment" : "message about Passwords Data Import completion", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Kamera" - } - }, - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "Camera" + "value" : "Passwortimport abgeschlossen. Du kannst jetzt die gespeicherte Passwortdatei löschen." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Cámara" + "value" : "Importación de contraseña completada. Ya puedes eliminar el archivo de contraseñas guardadas." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Appareil photo" + "value" : "L'importation des mots de passe est terminée. Vous pouvez maintenant supprimer le fichier de mots de passe sauvegardé." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Fotocamera" + "value" : "Importazione della password completata. Ora puoi eliminare il file delle password salvate." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Camera" + "value" : "Importeren wachtwoord voltooid. Je kunt het opgeslagen wachtwoordbestand nu verwijderen." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Aparat" + "value" : "Importowanie haseł zostało ukończone. Teraz możesz usunąć zapisany plik haseł." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Câmara" + "value" : "Importação de palavra-passe concluída. Já podes eliminar o ficheiro de palavras-passe guardadas." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Камера" + "value" : "Пароли импортированы. Можете удалить сохраненный файл с паролями." } } } }, - "permission.cameraAndmicrophone" : { - "comment" : "camera and microphone input media devices name", - "extractionState" : "extracted_with_value", + "Password import failed: " : { + "comment" : "Data import summary format of how many passwords (%lld) failed to import.", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Kamera und Mikrofon" - } - }, - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "Camera and Microphone" + "value" : "Passwortimport fehlgeschlagen: " } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Cámara y micrófono" + "value" : "Error al importar contraseña: " } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Appareil photo et micro" + "value" : "Échec de l'importation des mots de passe : " } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Fotocamera e microfono" + "value" : "Importazione password non riuscita: " } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Camera en microfoon" + "value" : "Importeren wachtwoord mislukt: " } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Aparat i mikrofon" + "value" : "Importowanie haseł nie powiodło się: " } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Câmara e microfone" + "value" : "Falha na importação da palavra-passe: " } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Камера и микрофон" + "value" : "Не удалось импортировать пароли: " } } } }, - "permission.disabled.app" : { - "comment" : "The app (DuckDuckGo: %@ 2) has no access permission to (%@ 1) media device", - "extractionState" : "extracted_with_value", + "Password import failed." : { + "comment" : "Data import summary message of failed passwords import.", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "%1$@ Zugang ist deaktiviert für %2$@" - } - }, - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "%1$@ access is disabled for %2$@" + "value" : "Der Passwortimport ist fehlgeschlagen." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Acceso a %1$@ desactivado para %2$@" + "value" : "Se ha producido un error al importar la contraseña." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "L'accès à %1$@ est désactivé pour %2$@" + "value" : "L'importation des mots de passe a échoué." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "L'accesso a %1$@ è disabilitato per %2$@" + "value" : "Importazione password non riuscita." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Toegang tot %1$@ is uitgeschakeld voor %2$@" + "value" : "Importeren wachtwoord mislukt." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "%2$@ ma wyłączony dostęp do urządzenia %1$@" + "value" : "Importowanie haseł nie powiodło się." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O acesso do %2$@ a %1$@ está desativado" + "value" : "Falha na importação da palavra-passe." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "%2$@: у %1$@ нет доступа" + "value" : "Не удалось импортировать пароли." } } } }, - "permission.disabled.system" : { - "comment" : "Geolocation Services are disabled in System Preferences", + "password.management.title" : { + "comment" : "Used as the title for menu item and related Settings page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Die System-Standortbestimmung ist deaktiviert" + "value" : "Passwörter und Autovervollständigen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "System location services are disabled" + "value" : "Passwords & Autofill" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Los servicios de ubicación del sistema están deshabilitados" + "value" : "Contraseñas y autocompletar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Les services de localisation du système sont désactivés" + "value" : "Mots de passe et saisie automatique" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "I servizi di localizzazione del sistema sono disabilitati" + "value" : "Password e compilazione automatica" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "De locatiediensten van het systeem zijn uitgeschakeld" + "value" : "Wachtwoorden en automatisch invullen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Systemowe usługi lokalizacji są wyłączone" + "value" : "Hasła i autouzupełnianie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Os serviços de localização do sistema estão desativados" + "value" : "Palavras-passe e preenchimento automático" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Системные службы геолокации отключены" + "value" : "Пароли и автозаполнение" } } } }, - "permission.externalScheme.open.format" : { - "comment" : "Open %@ App Name", + "password.manager" : { + "comment" : "Section header", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "%@ öffnen" + "value" : "Passwort-Manager" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open %@" + "value" : "Password Manager" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir %@" + "value" : "Administrador de contraseñas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir %@" + "value" : "Gestionnaire de mots de passe" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri %@" + "value" : "Gestore di password" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "%@ openen" + "value" : "Wachtwoordbeheerder" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz %@" + "value" : "Menedżer haseł" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir %@" + "value" : "Gestor de palavras-passe" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть %@" + "value" : "Менеджер паролей" } } } }, - "permission.geolocation" : { - "comment" : "User's Geolocation permission access name", - "extractionState" : "extracted_with_value", + "Passwords:" : { + "comment" : "Data import summary format of how many passwords were successfully imported.", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Standort" - } - }, - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "Location" + "value" : "Passwörter:" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ubicación" + "value" : "Contraseñas:" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Localisation" + "value" : "Mots de passe :" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Posizione" + "value" : "Password:" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Locatie" + "value" : "Wachtwoorden:" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Lokalizacja" + "value" : "Hasła:" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Localização" + "value" : "Palavras-passe:" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Местоположение" + "value" : "Пароли:" } } } }, - "permission.microphone" : { - "comment" : "Microphone input media device name", + "paste-from-clipboard" : { + "comment" : "Paste button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Mikrofon" + "value" : "Vom Clipboard einfügen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Microphone" + "value" : "Paste from Clipboard" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Micrófono" + "value" : "Pegar desde el portapapeles" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Micro" + "value" : "Coller depuis le presse-papier" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Microfono" + "value" : "Incolla dagli appunti" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Microfoon" + "value" : "Plakken vanaf klembord" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Mikrofon" + "value" : "Wklej ze schowka" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Microfone" + "value" : "Colar da área de transferência" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Микрофон" + "value" : "Вставить из буфера обмена" } } } }, - "permission.mute" : { - "comment" : "Temporarily pause input media device %@ access for %@2 website", + "paste.and.go" : { + "comment" : "Paste & Go button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Verwendung von %1$@ für „%2$@“ pausieren" + "value" : "Einfügen & los" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Pause %1$@ use on “%2$@”" + "value" : "Paste & Go" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Pausar el uso de %1$@ en \"%2$@\"" + "value" : "Pegar e ir" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Suspendre l'utilisation de %1$@ sur « %2$@ »" + "value" : "Coller et valider" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Metti in pausa l'utilizzo di %1$@ su \"%2$@\"" + "value" : "Incolla e continua" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Toegang van %1$@ tot “%2$@\" pauzeren" + "value" : "Plakken en gaan" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wstrzymaj korzystanie z urządzenia %1$@ w witrynie „%2$@”" + "value" : "Wklej i przejdź dalej" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Pausar a utilização de %1$@ em \"%2$@\"" + "value" : "Colar e ir" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "%1$@: приостановить доступ на сайте %2$@" + "value" : "Вставить и перейти" } } } }, - "permission.open.settings" : { - "comment" : "Open System Settings (to re-enable permission for the App) (macOS 13 and above)", + "paste.and.search" : { + "comment" : "Paste & Search button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Systemeinstellungen öffnen" + "value" : "Einfügen & suchen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open System Settings" + "value" : "Paste & Search" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir Configuración del Sistema" + "value" : "Pegar y buscar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir les paramètres système" + "value" : "Coller et rechercher" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri Impostazioni di Sistema" + "value" : "Incolla e cerca" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Systeeminstellingen openen" + "value" : "Plakken en zoeken" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz ustawienia systemowe" + "value" : "Wklej i wyszukaj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir Definições do sistema" + "value" : "Colar e pesquisar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть настройки системы" + "value" : "Вставить и найти" } } } }, - "permission.popover.deny" : { - "comment" : "Permission Popover: Deny Website input media device access", + "permission.allow.externalScheme.format" : { + "comment" : "Allow to open External Link (%@ 2) to open on current domain (%@ 1)", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ablehnen" + "value" : "Zulassen, dass „%1$@“ %2$@ öffnet" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Deny" + "value" : "Allow “%1$@“ to open %2$@" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Rechazar" + "value" : "Permitir que \"%1$@\" abra %2$@" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Refuser" + "value" : "Autoriser « %1$@ » à ouvrir %2$@" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Rifiuta" + "value" : "Consenti a \"%1$@\" di aprire %2$@" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Weigeren" + "value" : "\"%1$@\" toestaan om %2$@ te openen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Odmów" + "value" : "Zezwól domenie „%1$@” na otwarcie %2$@" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Recusar" + "value" : "Permitir que \"%1$@\" abra %2$@" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Отказать" + "value" : "Разрешить сайту %1$@ открывать %2$@" } } } }, - "permission.popup.allow.button" : { - "comment" : "Button that the user can use to authorise a web site to for, for example access location or camera and microphone etc.", + "permission.allow.externalScheme.menu-header" : { + "comment" : "Allow the App Name(%@ 1) to open “URL Scheme”(%@ 2) links", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zulassen" + "value" : "Erlaube dem %1$@, „%2$@“ Links zu öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Allow" + "value" : "Allow the %1$@ to open “%2$@” links" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Permitir" + "value" : "Permitir que %1$@ abra los enlaces \"%2$@\"" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Autoriser" + "value" : "Autoriser l'application %1$@ à ouvrir les liens « %2$@ »" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Consenti" + "value" : "Consenti a %1$@ di aprire i link \"%2$@\"" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Toestaan" + "value" : "%1$@ toestaan om “%2$@”-links te openen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zezwól" + "value" : "Zezwól aplikacji %1$@ na otwieranie łączy „%2$@”" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Permitir" + "value" : "Permitir que a aplicação %1$@ abra os links do \"%2$@\"" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Разрешить" + "value" : "Разрешить %1$@ открывать ссылки «%2$@»" } } } }, - "permission.popup.blocked.popover" : { - "comment" : "Text of popver warning the user that the a pop-up as been blocked", + "permission.authorization.externalScheme.empty.format" : { + "comment" : "Popover asking to open link in External App (%@)", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Pop-up blockiert" + "value" : "Diesen Link in %@ öffnen?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Pop-up Blocked" + "value" : "Open this link in %@?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ventana emergente bloqueada" + "value" : "¿Abrir este enlace en %@?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Fenêtre contextuelle bloquée" + "value" : "Ouvrir ce lien dans %@ ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Popup bloccato" + "value" : "Apri questo link in %@?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Pop-up geblokkeerd" + "value" : "Deze link openen in %@?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zablokowano wyskakujące okienko" + "value" : "Otworzyć to łącze w aplikacji %@?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Pop-up bloqueado" + "value" : "Abrir este link na aplicação %@?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Всплывающее окно заблокировано" + "value" : "Открыть ссылку в %@?" } } } }, - "permission.popup.learn-more.link" : { - "comment" : "Text of link that leads to web page with more informations about location services.", + "permission.authorization.externalScheme.format" : { + "comment" : "Popover asking for domain %@ to open link in External App (%@)", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Mehr über Standortbestimmung erfahren" + "value" : "„%1$@“ möchte diesen Link in %2$@ öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Learn more about location services" + "value" : "“%1$@” would like to open this link in %2$@" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Más información sobre los servicios de ubicación" + "value" : "\"%1$@\" desea abrir este enlace en %2$@" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "En savoir plus sur les services de localisation" + "value" : "« %1$@ » souhaiterait ouvrir ce lien dans %2$@" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Scopri di più sui servizi di localizzazione" + "value" : "\"%1$@\" vorrebbe aprire questo link in %2$@" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Meer informatie over locatieservices" + "value" : "\"%1$@\" wil deze link openen in %2$@" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dowiedz się więcej o usługach lokalizacji" + "value" : "„%1$@” chce otworzyć to łącze w aplikacji %2$@" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sabe mais sobre os serviços de localização" + "value" : "\"%1$@\" gostaria de abrir este link na aplicação %2$@" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Подробнее о службах геолокации" + "value" : "Сайт %1$@ хочет открыть эту ссылку в %2$@" } } } }, - "permission.popup.open.format" : { - "comment" : "Open %@ URL Pop-up", + "permission.authorization.format" : { + "comment" : "Popover asking for domain %@ to use camera/mic (%@)", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "%@" + "value" : "Erlaube „%1$@“, dein %2$@ zu benutzen?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "%@" + "value" : "Allow “%1$@“ to use your %2$@?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "%@" + "value" : "¿Permitir que \"%1$@\" use tu %2$@?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "%@" + "value" : "Autoriser « %1$@ » à utiliser votre %2$@ ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "%@" + "value" : "Consenti a \"%1$@\" di utilizzare %2$@?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "%@" + "value" : "'%1$@' toestaan om je %2$@ te gebruiken?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "%@" + "value" : "Zezwolić domenie „%1$@” na użycie Twojego urządzenia/funkcji %2$@?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "%@" + "value" : "Permitir que \"%1$@\" utilize %2$@?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "%@" + "value" : "Открыть сайту %1$@ доступ (%2$@)?" } } } }, - "permission.popup.title" : { - "comment" : "Title of a popup that has a list of blocked popups", + "permission.authorization.location" : { + "comment" : "Popover asking for domain %@ to use location", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Blockierte Pop-ups" + "value" : "Die Website „%@“ möchte deinen aktuellen Standort verwenden." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Blocked Pop-ups" + "value" : "“%@“ website would like to use your current location." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ventanas emergentes bloqueadas" + "value" : "El sitio web “%@” desea usar tu ubicación actual." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Fenêtres contextuelles bloquées" + "value" : "Le site « %@ » souhaiterait utiliser votre position actuelle." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Popup bloccati" + "value" : "Il sito web “%@“ vorrebbe utilizzare la tua posizione attuale." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Geblokkeerde pop-ups" + "value" : "De website \"%@\" wil graag je huidige locatie gebruiken." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zablokowane wyskakujące okienka" + "value" : "Witryna „%@” chce korzystać z Twojej aktualnej lokalizacji." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Pop-ups bloqueados" + "value" : "O site \"%@\" gostaria de utilizar a tua localização atual." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Заблокированные всплывающие окна" + "value" : "Сайт %@ запрашивает доступ к вашей текущей геопозиции." } } } }, - "permission.popups" : { - "comment" : "Open Pop Up Windows permission access name", + "permission.authorization.popups.format" : { + "comment" : "Popover asking for domain %@ to open Popup Window", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Pop-ups" + "value" : "Erlaube „%@“, ein PopUp-Fenster zu öffnen?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Pop-ups" + "value" : "Allow “%@“ to open PopUp Window?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ventanas emergentes" + "value" : "¿Permitir que \"%@\" abra una ventana emergente?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Fenêtres contextuelles" + "value" : "Autoriser « %@ » à ouvrir la fenêtre contextuelle ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Popup" + "value" : "Consenti a \"%@\" di aprire la finestra popup?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Pop-ups" + "value" : "Toestaan dat \"%@\" een pop-upvenster opent?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyskakujące okienka" + "value" : "Zezwolić domenie „%@” na otwarcie wyskakującego okienka?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Pop-ups" + "value" : "Permitir que \"%@\" abra a janela de pop-up?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Всплывающие окна" + "value" : "Разрешить сайту %@ открыть всплывающее окно?" } } } }, - "permission.reloadPage" : { - "comment" : "Reload webpage to ask for input media device access permission again", + "permission.authorization.popups.menu-header" : { + "comment" : "Popover asking for domain %@ to open Popup Window", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neu laden, um erneut um Erlaubnis zu fragen" + "value" : "Erlaube „%@“, PopUp-Fenster zu öffnen?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Reload to ask permission again" + "value" : "Allow “%@“ to open PopUp Windows?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Volver a cargar para solicitar permiso de nuevo" + "value" : "¿Permitir que \"%@\" abra ventanas emergentes?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Recharger pour demander à nouveau l'autorisation" + "value" : "Autoriser « %@ » à ouvrir les fenêtres contextuelles ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ricarica per chiedere nuovamente l'autorizzazione" + "value" : "Consenti a \"%@\" di aprire finestre popup?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Opnieuw laden om opnieuw toestemming te vragen" + "value" : "Toestaan dat \"%@\" pop-upvensters opent?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Załaduj ponownie, aby ponownie poprosić o pozwolenie" + "value" : "Zezwolić domenie „%@” na otwieranie wyskakujących okienek?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Recarregar para pedir permissão novamente" + "value" : "Permitir que \"%@\" abra janelas de pop-up?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Перезагрузите страницу, чтобы снова увидеть запрос" + "value" : "Разрешить сайту %@ открыть всплывающие окна?" } } } }, - "permission.unmute" : { - "comment" : "Resume input media device %@ access for %@ website", + "permission.camera" : { + "comment" : "Camera input media device name", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Verwendung von %1$@ am „%2$@“ wieder aufnehmen" + "value" : "Kamera" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Resume %1$@ use on “%2$@”" + "value" : "Camera" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Reanudar el uso de %1$@ en \"%2$@\"" + "value" : "Cámara" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Reprendre l'utilisation de %1$@ sur « %2$@ »" + "value" : "Appareil photo" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riprendi l'uso di %1$@ su \"%2$@\"" + "value" : "Fotocamera" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Toegang van %1$@ tot “%2$@” hervatten" + "value" : "Camera" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wznów korzystanie z urządzenia %1$@ w witrynie „%2$@”" + "value" : "Aparat" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Retomar a utilização de %1$@ em \"%2$@\"" + "value" : "Câmara" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "%1$@: возобновить доступ на сайте %2$@" + "value" : "Камера" } } } }, - "phishing-detection.enabled.checkbox" : { - "comment" : "Checkbox that enables or disables the phishing detection feature in the browser", + "permission.cameraAndmicrophone" : { + "comment" : "camera and microphone input media devices name", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Erlaube DuckDuckGo, dich zu warnen, bevor eine Webseite geladen wird, die als bösartig oder betrügerisch gekennzeichnet wurde." + "value" : "Kamera und Mikrofon" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Allow DuckDuckGo to warn you before loading a webpage that has been flagged as malicious or fraudulent." + "value" : "Camera and Microphone" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Permite que DuckDuckGo te avise antes de cargar una página web que se haya marcado como maliciosa o fraudulenta." + "value" : "Cámara y micrófono" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Autorisez DuckDuckGo à vous avertir avant de charger une page Web signalée comme malveillante ou frauduleuse." + "value" : "Appareil photo et micro" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Consenti a DuckDuckGo di avvisarti prima di caricare una pagina web contrassegnata come dannosa o fraudolenta." + "value" : "Fotocamera e microfono" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Laat DuckDuckGo je waarschuwen voordat je een webpagina laadt die als kwaadaardig of frauduleus is gemarkeerd." + "value" : "Camera en microfoon" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zezwól DuckDuckGo na ostrzeganie przed załadowaniem strony internetowej, która została oznaczona jako złośliwa lub jako oszustwo." + "value" : "Aparat i mikrofon" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Permitir que o DuckDuckGo te avise antes de carregar uma página que foi sinalizada como maliciosa ou fraudulenta." + "value" : "Câmara e microfone" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Разрешить DuckDuckGo предупреждать вас о потенциально вредоносных или мошеннических сайтах перед загрузкой страницы." + "value" : "Камера и микрофон" } } } }, - "phishing-detection.enabled.header" : { - "comment" : "Header for phishing site protection section in the settings page", + "permission.disabled.app" : { + "comment" : "The app (DuckDuckGo: %@ 2) has no access permission to (%@ 1) media device", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Schutz vor bösartigen Websites" + "value" : "%1$@ Zugang ist deaktiviert für %2$@" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Malicious Site Protection" + "value" : "%1$@ access is disabled for %2$@" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Protección contra sitios maliciosos" + "value" : "Acceso a %1$@ desactivado para %2$@" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Protection contre les sites malveillants" + "value" : "L'accès à %1$@ est désactivé pour %2$@" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Protezione dai siti dannosi" + "value" : "L'accesso a %1$@ è disabilitato per %2$@" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bescherming tegen schadelijke sites" + "value" : "Toegang tot %1$@ is uitgeschakeld voor %2$@" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ochrona przed złośliwymi witrynami" + "value" : "%2$@ ma wyłączony dostęp do urządzenia %1$@" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Proteção contra sites maliciosos" + "value" : "O acesso do %2$@ a %1$@ está desativado" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Защита от вредоносных сайтов" + "value" : "%2$@: у %1$@ нет доступа" } } } }, - "phishing-detection.enabled.warning" : { - "comment" : "A description box to warn users away from disabling malicious site protection", + "permission.disabled.system" : { + "comment" : "Geolocation Services are disabled in System Preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Das Deaktivieren dieser Funktion kann deine persönlichen Daten gefährden. Wenn du dir über die damit verbundenen Risiken im Klaren bist, kannst du trotzdem fortfahren." + "value" : "Die System-Standortbestimmung ist deaktiviert" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Disabling this feature can put your personal information at risk. Only do so if you fully understand the risk involved." + "value" : "System location services are disabled" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desactivar esta función puede poner en riesgo tu información personal. Hazlo solo si entiendes completamente el riesgo que implica." + "value" : "Los servicios de ubicación del sistema están deshabilitados" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "La désactivation de cette fonctionnalité peut mettre vos informations personnelles en danger. Faites-le uniquement si vous comprenez parfaitement les risques encourus." + "value" : "Les services de localisation du système sont désactivés" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Disabilitando questa funzione, potresti mettere a rischio i tuoi dati personali. Fallo solo se comprendi appieno il rischio che comporta." + "value" : "I servizi di localizzazione del sistema sono disabilitati" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Als je deze functie uitschakelt, kunnen je persoonlijke gegevens in gevaar komen. Doe dit alleen als je het risico volledig begrijpt." + "value" : "De locatiediensten van het systeem zijn uitgeschakeld" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyłączenie tej funkcji może narazić Twoje dane osobowe na ryzyko. Rób to tylko wtedy, gdy rozumiesz związane z tym zagrożenie." + "value" : "Systemowe usługi lokalizacji są wyłączone" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Desativar esta funcionalidade pode pôr em risco as tuas informações pessoais. Não desatives a menos que compreendas os riscos." + "value" : "Os serviços de localização do sistema estão desativados" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "При отключении этой функции ваши личные данные могут оказаться под угрозой. Эту функцию следует деактивировать только в том случае, если вы осознаете связанные с этим риски." + "value" : "Системные службы геолокации отключены" } } } }, - "phishing.error.page.tab.title" : { - "comment" : "Title shown in an error page tab that warn users of security risks on a website that has been flagged as Phishing.", + "permission.externalScheme.open.format" : { + "comment" : "Open %@ App Name", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Warnung: Es könnte sich um eine betrügerische Website handeln" + "value" : "%@ öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Warning: Site May Be Deceptive" + "value" : "Open %@" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Advertencia: el sitio puede ser engañoso" + "value" : "Abrir %@" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Avertissement : le site est peut-être trompeur" + "value" : "Ouvrir %@" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Attenzione: il sito potrebbe essere ingannevole" + "value" : "Apri %@" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Waarschuwing: website is mogelijk misleidend" + "value" : "%@ openen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ostrzeżenie: witryna może być złośliwa" + "value" : "Otwórz %@" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Aviso: o site pode ser enganador" + "value" : "Abrir %@" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Внимание! Потенциально мошеннический сайт" + "value" : "Открыть %@" } } } }, - "pin.tab" : { - "comment" : "Menu item. Pin as a verb", + "permission.geolocation" : { + "comment" : "User's Geolocation permission access name", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Tab anpinnen" + "value" : "Standort" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Pin Tab" + "value" : "Location" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Fijar pestaña" + "value" : "Ubicación" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Épingler l'onglet" + "value" : "Localisation" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Fissa scheda" + "value" : "Posizione" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Tabblad vastzetten" + "value" : "Locatie" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przypnij kartę" + "value" : "Lokalizacja" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Fixar separador" + "value" : "Localização" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Закрепить вкладку" + "value" : "Местоположение" } } } }, - "pinning.hide-aichat-shortcut" : { - "comment" : "Menu item for hiding the AI Chat shortcut", + "permission.microphone" : { + "comment" : "Microphone input media device name", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "AI-Chat-Verknüpfung ausblenden" + "value" : "Mikrofon" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Hide AI Chat Shortcut" + "value" : "Microphone" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ocultar acceso directo a AI Chat" + "value" : "Micrófono" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Masquer le raccourci de chat IA" + "value" : "Micro" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nascondi scorciatoia AI Chat" + "value" : "Microfono" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeling voor AI-chat verbergen" + "value" : "Microfoon" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ukryj skrót do AI Chat" + "value" : "Mikrofon" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ocultar atalho do AI Chat" + "value" : "Microfone" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Скрыть ярлык AI Chat" + "value" : "Микрофон" } } } }, - "pinning.hide-autofill-shortcut" : { - "comment" : "Menu item for hiding the passwords shortcut", + "permission.mute" : { + "comment" : "Temporarily pause input media device %@ access for %@2 website", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwort-Shortcut ausblenden" + "value" : "Verwendung von %1$@ für „%2$@“ pausieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Hide Passwords Shortcut" + "value" : "Pause %1$@ use on “%2$@”" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ocultar acceso directo a contraseñas" + "value" : "Pausar el uso de %1$@ en \"%2$@\"" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Masquer le raccourci des mots de passe" + "value" : "Suspendre l'utilisation de %1$@ sur « %2$@ »" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nascondi scorciatoia per le password" + "value" : "Metti in pausa l'utilizzo di %1$@ su \"%2$@\"" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeling voor wachtwoorden verbergen" + "value" : "Toegang van %1$@ tot “%2$@\" pauzeren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ukryj skrót do haseł" + "value" : "Wstrzymaj korzystanie z urządzenia %1$@ w witrynie „%2$@”" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ocultar atalho de palavras-passe" + "value" : "Pausar a utilização de %1$@ em \"%2$@\"" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Скрыть ярлык для паролей" + "value" : "%1$@: приостановить доступ на сайте %2$@" } } } }, - "pinning.hide-bookmarks-shortcut" : { - "comment" : "Menu item for hiding the bookmarks shortcut", + "permission.open.settings" : { + "comment" : "Open System Settings (to re-enable permission for the App) (macOS 13 and above)", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Verknüpfung Lesezeichen ausblenden" + "value" : "Systemeinstellungen öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Hide Bookmarks Shortcut" + "value" : "Open System Settings" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ocultar acceso directo a marcadores" + "value" : "Abrir Configuración del Sistema" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Masquer le raccourci des signets" + "value" : "Ouvrir les paramètres système" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nascondi scorciatoia segnalibri" + "value" : "Apri Impostazioni di Sistema" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeling voor bladwijzers verbergen" + "value" : "Systeeminstellingen openen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ukryj skrót do zakładek" + "value" : "Otwórz ustawienia systemowe" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ocultar atalho de marcadores" + "value" : "Abrir Definições do sistema" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Скрыть ярлык для закладок" + "value" : "Открыть настройки системы" } } } }, - "pinning.hide-downloads-shortcut" : { - "comment" : "Menu item for hiding the downloads shortcut", + "permission.popover.deny" : { + "comment" : "Permission Popover: Deny Website input media device access", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Download-Verknüpfung ausblenden" + "value" : "Ablehnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Hide Downloads Shortcut" + "value" : "Deny" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ocultar acceso directo a descargas" + "value" : "Rechazar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Masquer le raccourci des téléchargements" + "value" : "Refuser" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nascondi scorciatoia download" + "value" : "Rifiuta" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeling voor downloads verbergen" + "value" : "Weigeren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ukryj skrót do pobranych" + "value" : "Odmów" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ocultar atalho de transferências" + "value" : "Recusar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Скрыть ярлык для загрузок" + "value" : "Отказать" } } } }, - "pinning.hide-netp-shortcut" : { - "comment" : "Menu item for hiding the NetP shortcut", + "permission.popup.allow.button" : { + "comment" : "Button that the user can use to authorise a web site to for, for example access location or camera and microphone etc.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "VPN-Verknüpfung ausblenden" + "value" : "Zulassen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Hide VPN Shortcut" + "value" : "Allow" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ocultar acceso directo a VPN" + "value" : "Permitir" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Masquer le raccourci VPN" + "value" : "Autoriser" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nascondi scorciatoia VPN" + "value" : "Consenti" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeling voor VPN verbergen" + "value" : "Toestaan" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ukryj skrót do VPN" + "value" : "Zezwól" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ocultar atalho de VPN" + "value" : "Permitir" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Скрыть ярлык для VPN" + "value" : "Разрешить" } } } }, - "pinning.show-aichat-shortcut" : { - "comment" : "Menu item for showing the AI Chat shortcut", + "permission.popup.blocked.popover" : { + "comment" : "Text of popver warning the user that the a pop-up as been blocked", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "AI-Chat-Verknüpfung anzeigen" + "value" : "Pop-up blockiert" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show AI Chat Shortcut" + "value" : "Pop-up Blocked" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar acceso directo a AI Chat" + "value" : "Ventana emergente bloqueada" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher le raccourci AI Chat" + "value" : "Fenêtre contextuelle bloquée" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra scorciatoia AI Chat" + "value" : "Popup bloccato" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeling voor AI Chat weergeven" + "value" : "Pop-up geblokkeerd" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż skrót do AI Chat" + "value" : "Zablokowano wyskakujące okienko" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar atalho do AI Chat" + "value" : "Pop-up bloqueado" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показывать ярлык AI Chat" + "value" : "Всплывающее окно заблокировано" } } } }, - "pinning.show-autofill-shortcut" : { - "comment" : "Menu item for showing the passwords shortcut", + "permission.popup.learn-more.link" : { + "comment" : "Text of link that leads to web page with more informations about location services.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwort-Shortcut anzeigen" + "value" : "Mehr über Standortbestimmung erfahren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show Passwords Shortcut" + "value" : "Learn more about location services" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar acceso directo a contraseñas" + "value" : "Más información sobre los servicios de ubicación" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher le raccourci des mots de passe" + "value" : "En savoir plus sur les services de localisation" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra scorciatoia per le password" + "value" : "Scopri di più sui servizi di localizzazione" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeling voor wachtwoorden weergeven" + "value" : "Meer informatie over locatieservices" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż skrót do haseł" + "value" : "Dowiedz się więcej o usługach lokalizacji" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar atalho de palavras-passe" + "value" : "Sabe mais sobre os serviços de localização" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показывать ярлык для паролей" + "value" : "Подробнее о службах геолокации" } } } }, - "pinning.show-bookmarks-shortcut" : { - "comment" : "Menu item for showing the bookmarks shortcut", + "permission.popup.open.format" : { + "comment" : "Open %@ URL Pop-up", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Lesezeichen-Verknüpfung anzeigen" + "value" : "%@" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show Bookmarks Shortcut" + "value" : "%@" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar acceso directo a Favoritos" + "value" : "%@" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher le raccourci des signets" + "value" : "%@" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra scorciatoia segnalibri" + "value" : "%@" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeling voor bladwijzers weergeven" + "value" : "%@" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż skrót do zakładek" + "value" : "%@" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar atalho de marcadores" + "value" : "%@" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показывать ярлык для закладок" + "value" : "%@" } } } }, - "pinning.show-downloads-shortcut" : { - "comment" : "Menu item for showing the downloads shortcut", + "permission.popup.title" : { + "comment" : "Title of a popup that has a list of blocked popups", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Download-Verknüpfung anzeigen" + "value" : "Blockierte Pop-ups" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show Downloads Shortcut" + "value" : "Blocked Pop-ups" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar acceso directo a Descargas" + "value" : "Ventanas emergentes bloqueadas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher le raccourci des téléchargements" + "value" : "Fenêtres contextuelles bloquées" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra scorciatoia download" + "value" : "Popup bloccati" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeling voor downloads weergeven" + "value" : "Geblokkeerde pop-ups" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż skrót do pobranych" + "value" : "Zablokowane wyskakujące okienka" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar atalho de transferências" + "value" : "Pop-ups bloqueados" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать ярлык для загрузок" + "value" : "Заблокированные всплывающие окна" } } } }, - "pinning.show-netp-shortcut" : { - "comment" : "Menu item for showing the NetP shortcut", + "permission.popups" : { + "comment" : "Open Pop Up Windows permission access name", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "VPN-Verknüpfung anzeigen" + "value" : "Pop-ups" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show VPN Shortcut" + "value" : "Pop-ups" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar acceso directo a VPN" + "value" : "Ventanas emergentes" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher le raccourci VPN" + "value" : "Fenêtres contextuelles" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra scorciatoia VPN" + "value" : "Popup" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeing voor VPN weergeven" + "value" : "Pop-ups" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż skrót do VPN" + "value" : "Wyskakujące okienka" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar atalho de VPN" + "value" : "Pop-ups" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показывать ярлык VPN" + "value" : "Всплывающие окна" } } } }, - "Please submit a report to help us fix the issue." : { - "comment" : "Data import failure Report dialog title.", + "permission.reloadPage" : { + "comment" : "Reload webpage to ask for input media device access permission again", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bitte reiche einen Bericht ein, damit wir das Problem beheben können." + "value" : "Neu laden, um erneut um Erlaubnis zu fragen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Reload to ask permission again" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Envía un informe para ayudarnos a solucionar el problema." + "value" : "Volver a cargar para solicitar permiso de nuevo" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Veuillez soumettre un rapport pour nous aider à résoudre le problème." + "value" : "Recharger pour demander à nouveau l'autorisation" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Invia una segnalazione per aiutarci a risolvere il problema." + "value" : "Ricarica per chiedere nuovamente l'autorizzazione" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Dien een melding in om ons te helpen het probleem op te lossen." + "value" : "Opnieuw laden om opnieuw toestemming te vragen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Prześlij raport, aby pomóc nam w rozwiązaniu problemu." + "value" : "Załaduj ponownie, aby ponownie poprosić o pozwolenie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Envia um relatório para nos ajudar a corrigir o problema." + "value" : "Recarregar para pedir permissão novamente" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Отправьте отчет, чтобы мы могли устранить ошибку." + "value" : "Перезагрузите страницу, чтобы снова увидеть запрос" } } } }, - "pm.activate" : { - "comment" : "Activate button", + "permission.unmute" : { + "comment" : "Resume input media device %@ access for %@ website", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Reaktivieren" + "value" : "Verwendung von %1$@ am „%2$@“ wieder aufnehmen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Reactivate" + "value" : "Resume %1$@ use on “%2$@”" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Reactivar" + "value" : "Reanudar el uso de %1$@ en \"%2$@\"" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Réactiver" + "value" : "Reprendre l'utilisation de %1$@ sur « %2$@ »" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riattiva" + "value" : "Riprendi l'uso di %1$@ su \"%2$@\"" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Opnieuw activeren" + "value" : "Toegang van %1$@ tot “%2$@” hervatten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ponownie aktywuj" + "value" : "Wznów korzystanie z urządzenia %1$@ w witrynie „%2$@”" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Reativar" + "value" : "Retomar a utilização de %1$@ em \"%2$@\"" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Активировать" + "value" : "%1$@: возобновить доступ на сайте %2$@" } } } }, - "pm.activate.private.email" : { - "comment" : "Activate private email address button", + "phishing-detection.enabled.checkbox" : { + "comment" : "Checkbox that enables or disables the phishing detection feature in the browser", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address reaktivieren" + "value" : "Erlaube DuckDuckGo, dich zu warnen, bevor eine Webseite geladen wird, die als bösartig oder betrügerisch gekennzeichnet wurde." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Reactivate Duck Address" + "value" : "Allow DuckDuckGo to warn you before loading a webpage that has been flagged as malicious or fraudulent." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Reactivar Duck Address" + "value" : "Permite que DuckDuckGo te avise antes de cargar una página web que se haya marcado como maliciosa o fraudulenta." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Réactiver la Duck Address" + "value" : "Autorisez DuckDuckGo à vous avertir avant de charger une page Web signalée comme malveillante ou frauduleuse." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riattiva Duck Address" + "value" : "Consenti a DuckDuckGo di avvisarti prima di caricare una pagina web contrassegnata come dannosa o fraudolenta." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address reactiveren" + "value" : "Laat DuckDuckGo je waarschuwen voordat je een webpagina laadt die als kwaadaardig of frauduleus is gemarkeerd." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Aktywuj ponownie Duck Address" + "value" : "Zezwól DuckDuckGo na ostrzeganie przed załadowaniem strony internetowej, która została oznaczona jako złośliwa lub jako oszustwo." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Reativar Duck Address" + "value" : "Permitir que o DuckDuckGo te avise antes de carregar uma página que foi sinalizada como maliciosa ou fraudulenta." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Снова активировать Duck Address" + "value" : "Разрешить DuckDuckGo предупреждать вас о потенциально вредоносных или мошеннических сайтах перед загрузкой страницы." } } } }, - "pm.add.card" : { - "comment" : "Add New Credit Card button", + "phishing-detection.enabled.header" : { + "comment" : "Header for phishing site protection section in the settings page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Kreditkarte hinzufügen" + "value" : "Schutz vor bösartigen Websites" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Add Credit Card" + "value" : "Malicious Site Protection" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Añadir tarjeta de crédito" + "value" : "Protección contra sitios maliciosos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ajouter une carte bancaire" + "value" : "Protection contre les sites malveillants" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiungi carta di credito" + "value" : "Protezione dai siti dannosi" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Creditcard toevoegen" + "value" : "Bescherming tegen schadelijke sites" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dodaj kartę kredytową" + "value" : "Ochrona przed złośliwymi witrynami" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Adicionar cartão de crédito" + "value" : "Proteção contra sites maliciosos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Добавить карту" + "value" : "Защита от вредоносных сайтов" } } } }, - "pm.add.identity" : { - "comment" : "Add New Identity button", + "phishing-detection.enabled.warning" : { + "comment" : "A description box to warn users away from disabling malicious site protection", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Identität hinzufügen" + "value" : "Das Deaktivieren dieser Funktion kann deine persönlichen Daten gefährden. Wenn du dir über die damit verbundenen Risiken im Klaren bist, kannst du trotzdem fortfahren." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Add Identity" + "value" : "Disabling this feature can put your personal information at risk. Only do so if you fully understand the risk involved." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Añadir identidad" + "value" : "Desactivar esta función puede poner en riesgo tu información personal. Hazlo solo si entiendes completamente el riesgo que implica." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ajouter une identité" + "value" : "La désactivation de cette fonctionnalité peut mettre vos informations personnelles en danger. Faites-le uniquement si vous comprenez parfaitement les risques encourus." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiungi identità" + "value" : "Disabilitando questa funzione, potresti mettere a rischio i tuoi dati personali. Fallo solo se comprendi appieno il rischio che comporta." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Identiteit toevoegen" + "value" : "Als je deze functie uitschakelt, kunnen je persoonlijke gegevens in gevaar komen. Doe dit alleen als je het risico volledig begrijpt." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dodaj tożsamość" + "value" : "Wyłączenie tej funkcji może narazić Twoje dane osobowe na ryzyko. Rób to tylko wtedy, gdy rozumiesz związane z tym zagrożenie." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Adicionar identidade" + "value" : "Desativar esta funcionalidade pode pôr em risco as tuas informações pessoais. Não desatives a menos que compreendas os riscos." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Добавить учетные данные" + "value" : "При отключении этой функции ваши личные данные могут оказаться под угрозой. Эту функцию следует деактивировать только в том случае, если вы осознаете связанные с этим риски." } } } }, - "pm.add.login" : { - "comment" : "Add New Login button", + "phishing.error.page.tab.title" : { + "comment" : "Title shown in an error page tab that warn users of security risks on a website that has been flagged as Phishing.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwort hinzufügen" + "value" : "Warnung: Es könnte sich um eine betrügerische Website handeln" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Add Password" + "value" : "Warning: Site May Be Deceptive" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Añadir contraseña" + "value" : "Advertencia: el sitio puede ser engañoso" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ajouter un mot de passe" + "value" : "Avertissement : le site est peut-être trompeur" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiungi password" + "value" : "Attenzione: il sito potrebbe essere ingannevole" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoord toevoegen" + "value" : "Waarschuwing: website is mogelijk misleidend" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dodaj hasło" + "value" : "Ostrzeżenie: witryna może być złośliwa" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Adicionar palavra-passe" + "value" : "Aviso: o site pode ser enganador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Добавление пароля" + "value" : "Внимание! Потенциально мошеннический сайт" } } } }, - "pm.add.new" : { - "comment" : "Add New item button", + "pin.tab" : { + "comment" : "Menu item. Pin as a verb", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neue hinzufügen" + "value" : "Tab anpinnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Add New" + "value" : "Pin Tab" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Añadir nuevo" + "value" : "Fijar pestaña" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ajouter nouveau" + "value" : "Épingler l'onglet" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiungi nuovo" + "value" : "Fissa scheda" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nieuw toevoegen" + "value" : "Tabblad vastzetten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dodaj nowy" + "value" : "Przypnij kartę" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Adicionar novo" + "value" : "Fixar separador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Добавить" + "value" : "Закрепить вкладку" } } } }, - "pm.added" : { - "comment" : "Label for login added data", + "pinning.hide-aichat-shortcut" : { + "comment" : "Menu item for hiding the AI Chat shortcut", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Hinzugefügt" + "value" : "AI-Chat-Verknüpfung ausblenden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Added" + "value" : "Hide AI Chat Shortcut" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Añadido" + "value" : "Ocultar acceso directo a AI Chat" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ajouté" + "value" : "Masquer le raccourci de chat IA" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiunto" + "value" : "Nascondi scorciatoia AI Chat" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Toegevoegd" + "value" : "Snelkoppeling voor AI-chat verbergen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dodano" + "value" : "Ukryj skrót do AI Chat" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Adicionado" + "value" : "Ocultar atalho do AI Chat" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Добавлено" + "value" : "Скрыть ярлык AI Chat" } } } }, - "pm.address.address1" : { - "comment" : "Label for address 1 title", + "pinning.hide-autofill-shortcut" : { + "comment" : "Menu item for hiding the passwords shortcut", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Adresse 1" + "value" : "Passwort-Shortcut ausblenden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Address 1" + "value" : "Hide Passwords Shortcut" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Dirección 1" + "value" : "Ocultar acceso directo a contraseñas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Adresse 1" + "value" : "Masquer le raccourci des mots de passe" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Indirizzo 1" + "value" : "Nascondi scorciatoia per le password" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Adres 1" + "value" : "Snelkoppeling voor wachtwoorden verbergen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Adres 1" + "value" : "Ukryj skrót do haseł" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Morada 1" + "value" : "Ocultar atalho de palavras-passe" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Адрес (строка 1)" + "value" : "Скрыть ярлык для паролей" } } } }, - "pm.address.address2" : { - "comment" : "Label for address 2 title", + "pinning.hide-bookmarks-shortcut" : { + "comment" : "Menu item for hiding the bookmarks shortcut", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Adresse 2" + "value" : "Verknüpfung Lesezeichen ausblenden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Address 2" + "value" : "Hide Bookmarks Shortcut" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Dirección 2" + "value" : "Ocultar acceso directo a marcadores" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Adresse 2" + "value" : "Masquer le raccourci des signets" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Indirizzo 2" + "value" : "Nascondi scorciatoia segnalibri" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Adres 2" + "value" : "Snelkoppeling voor bladwijzers verbergen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Adres 2" + "value" : "Ukryj skrót do zakładek" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Morada 2" + "value" : "Ocultar atalho de marcadores" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Адрес (строка 2)" + "value" : "Скрыть ярлык для закладок" } } } }, - "pm.address.city" : { - "comment" : "Label for city title", + "pinning.hide-downloads-shortcut" : { + "comment" : "Menu item for hiding the downloads shortcut", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ort" + "value" : "Download-Verknüpfung ausblenden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "City" + "value" : "Hide Downloads Shortcut" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ciudad" + "value" : "Ocultar acceso directo a descargas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ville" + "value" : "Masquer le raccourci des téléchargements" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Città" + "value" : "Nascondi scorciatoia download" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Plaats" + "value" : "Snelkoppeling voor downloads verbergen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Miasto" + "value" : "Ukryj skrót do pobranych" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Cidade" + "value" : "Ocultar atalho de transferências" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Город" + "value" : "Скрыть ярлык для загрузок" } } } }, - "pm.address.postal-code" : { - "comment" : "Label for postal code title", + "pinning.hide-netp-shortcut" : { + "comment" : "Menu item for hiding the NetP shortcut", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Postleitzahl" + "value" : "VPN-Verknüpfung ausblenden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Postal Code" + "value" : "Hide VPN Shortcut" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Código postal" + "value" : "Ocultar acceso directo a VPN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Code postal" + "value" : "Masquer le raccourci VPN" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Codice Postale" + "value" : "Nascondi scorciatoia VPN" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Postcode" + "value" : "Snelkoppeling voor VPN verbergen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Kod pocztowy" + "value" : "Ukryj skrót do VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Código postal" + "value" : "Ocultar atalho de VPN" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Почтовый индекс" + "value" : "Скрыть ярлык для VPN" } } } }, - "pm.address.state-province" : { - "comment" : "Label for state/province title", + "pinning.show-aichat-shortcut" : { + "comment" : "Menu item for showing the AI Chat shortcut", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Staat/Provinz" + "value" : "AI-Chat-Verknüpfung anzeigen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "State/Province" + "value" : "Show AI Chat Shortcut" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Estado/Provincia" + "value" : "Mostrar acceso directo a AI Chat" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Pays/Région" + "value" : "Afficher le raccourci AI Chat" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Stato/Provincia" + "value" : "Mostra scorciatoia AI Chat" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Staat/Provincie" + "value" : "Snelkoppeling voor AI Chat weergeven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Stan/prowincja/region" + "value" : "Pokaż skrót do AI Chat" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Distrito/província" + "value" : "Mostrar atalho do AI Chat" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Штат/регион" + "value" : "Показывать ярлык AI Chat" } } } }, - "pm.cancel" : { - "comment" : "Cancel button", + "pinning.show-autofill-shortcut" : { + "comment" : "Menu item for showing the passwords shortcut", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Abbrechen" + "value" : "Passwort-Shortcut anzeigen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Cancel" + "value" : "Show Passwords Shortcut" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Cancelar" + "value" : "Mostrar acceso directo a contraseñas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Annuler" + "value" : "Afficher le raccourci des mots de passe" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Annulla" + "value" : "Mostra scorciatoia per le password" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Annuleren" + "value" : "Snelkoppeling voor wachtwoorden weergeven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Anuluj" + "value" : "Pokaż skrót do haseł" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Cancelar" + "value" : "Mostrar atalho de palavras-passe" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Отменить" + "value" : "Показывать ярлык для паролей" } } } }, - "pm.card.cardholder-name" : { - "comment" : "Label for cardholder name title", + "pinning.show-bookmarks-shortcut" : { + "comment" : "Menu item for showing the bookmarks shortcut", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Name des Karteninhabers" + "value" : "Lesezeichen-Verknüpfung anzeigen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Cardholder Name" + "value" : "Show Bookmarks Shortcut" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Nombre del titular de la tarjeta" + "value" : "Mostrar acceso directo a Favoritos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nom du titulaire de la carte" + "value" : "Afficher le raccourci des signets" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nome del titolare della carta" + "value" : "Mostra scorciatoia segnalibri" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Naam kaarthouder" + "value" : "Snelkoppeling voor bladwijzers weergeven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nazwisko właściciela karty" + "value" : "Pokaż skrót do zakładek" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nome do titular do cartão" + "value" : "Mostrar atalho de marcadores" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Имя держателя карты" + "value" : "Показывать ярлык для закладок" } } } }, - "pm.card.cvv" : { - "comment" : "Label for CVV title", + "pinning.show-downloads-shortcut" : { + "comment" : "Menu item for showing the downloads shortcut", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "CVV" + "value" : "Download-Verknüpfung anzeigen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "CVV" + "value" : "Show Downloads Shortcut" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "CVV" + "value" : "Mostrar acceso directo a Descargas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "CVV" + "value" : "Afficher le raccourci des téléchargements" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "CVV" + "value" : "Mostra scorciatoia download" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "CVV" + "value" : "Snelkoppeling voor downloads weergeven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "CVV" + "value" : "Pokaż skrót do pobranych" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "CVV" + "value" : "Mostrar atalho de transferências" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "CVV-код" + "value" : "Показать ярлык для загрузок" } } } }, - "pm.card.expiration-date" : { - "comment" : "Label for expiration date title", + "pinning.show-netp-shortcut" : { + "comment" : "Menu item for showing the NetP shortcut", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Verfallsdatum" + "value" : "VPN-Verknüpfung anzeigen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Expiration Date" + "value" : "Show VPN Shortcut" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Fecha de caducidad" + "value" : "Mostrar acceso directo a VPN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Date d'expiration" + "value" : "Afficher le raccourci VPN" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Data di scadenza" + "value" : "Mostra scorciatoia VPN" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Vervaldatum" + "value" : "Snelkoppeing voor VPN weergeven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Data ważności" + "value" : "Pokaż skrót do VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Data de validade" + "value" : "Mostrar atalho de VPN" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Срок действия" + "value" : "Показывать ярлык VPN" } } } }, - "pm.card.number" : { - "comment" : "Label for card number title", + "pir.feedback-form.category.no-info-on-specific-site" : { + "comment" : "Description for the feedback form when the scan didn't find user's info on a specific site", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nummer der Karte" + "value" : "Der Scan hat meine Informationen auf einer bestimmten Website nicht gefunden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Card Number" + "value" : "The scan didn't find my info on a specific site" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Número de tarjeta" + "value" : "El escaneo no ha encontrado mi información en un sitio específico" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Numéro de carte" + "value" : "L'analyse n'a pas trouvé mes informations sur un certain site" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Numero della carta" + "value" : "La scansione non ha trovato le mie informazioni su un sito specifico" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Kaartnummer" + "value" : "De scan heeft mijn gegevens niet gevonden op een specifieke site" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Numer karty" + "value" : "Skanowanie nie odnajduje moich danych na konkretnej stronie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Número do cartão" + "value" : "A verificação não encontrou a minha informação num site específico" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Номер карты" + "value" : "Поиск не обнаружил мои данные на конкретном сайте" } } } }, - "pm.day" : { - "comment" : "Label for Day title", + "pir.feedback-form.category.not-me" : { + "comment" : "Description for the feedback form when the scan found records that don’t belong to the user", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Tag" + "value" : "Scan hat Datensätze gefunden, die nicht von mir sind" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Day" + "value" : "The scan found records which aren't me" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Día" + "value" : "El escaneo ha encontrado registros que no son míos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Jour" + "value" : "L'analyse a trouvé des données qui ne me concernent pas" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Giorno" + "value" : "La scansione ha trovato dei record che non sono miei" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Dag" + "value" : "De scan vond gegevens die niet van mij zijn" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dzień" + "value" : "Skanowanie pokazuje rekordy, które mnie nie dotyczą" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Dia" + "value" : "A verificação encontrou registos que não correspondem a mim" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "День" + "value" : "Найденная информация принадлежит не мне" } } } }, - "pm.deactivate" : { - "comment" : "Deactivate button", + "pir.feedback-form.category.other" : { + "comment" : "Description for the feedback form when the user has an issue not categorized in other options", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Deaktivieren" + "value" : "Etwas anderes" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Deactivate" + "value" : "Something else" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desactivar" + "value" : "Otro problema" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Désactiver" + "value" : "Autre chose" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Disattiva" + "value" : "Qualcos'altro" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Deactiveren" + "value" : "Iets anders" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dezaktywuj" + "value" : "Coś innego" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Desativar" + "value" : "Outra coisa" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Деактивировать" + "value" : "Что-то другое" } } } }, - "pm.deactivate.private.email" : { - "comment" : "Deactivate private email address button", + "pir.feedback-form.category.removal-stuck" : { + "comment" : "Description for the feedback form when the removal process is stuck", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address deaktivieren" + "value" : "Der Entfernungsprozess kommt nicht voran" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Deactivate Duck Address" + "value" : "The removal process is stuck" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desactivar Duck Address" + "value" : "El proceso de eliminación está atascado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Désactiver la Duck Address" + "value" : "Le processus de suppression est bloqué" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Disattiva Duck Address" + "value" : "Il processo di rimozione è bloccato" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address deactiveren" + "value" : "Het verwijderingsproces is vastgelopen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dezaktywuj Duck Address" + "value" : "Proces usuwania zablokowany" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Desativar Duck Address" + "value" : "O processo de remoção está bloqueado" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Деактивировать Duck Address" + "value" : "Процесс удаления застопорился" } } } }, - "pm.delete" : { - "comment" : "Delete button", + "pir.feedback-form.category.scan-stuck" : { + "comment" : "Description for the feedback form when the scan process is stuck", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Löschen" + "value" : "Der Scan für Datensätze wurde nicht abgeschlossen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Delete" + "value" : "The scan for records is stuck" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Eliminar" + "value" : "El escaneo de registros está atascado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Supprimer" + "value" : "L'analyse des données est bloquée" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cancella" + "value" : "La scansione dei record è bloccata" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Verwijderen" + "value" : "De scan naar gegevens is vastgelopen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Usuń" + "value" : "Skanowanie w poszukiwaniu rekordów zablokowane" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Eliminar" + "value" : "A verificação de registos está bloqueada" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Удалить" + "value" : "Поиск данных застопорился" } } } }, - "pm.edit" : { - "comment" : "Edit button", + "pir.feedback-form.category.select-category" : { + "comment" : "Title for the category selection state of the PIR feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bearbeiten" + "value" : "EINE KATEGORIE AUSWÄHLEN" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Edit" + "value" : "Select a category" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Editar" + "value" : "SELECCIONA UNA CATEGORÍA" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Modifier" + "value" : "SÉLECTIONNER UNE CATÉGORIE" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Modifica" + "value" : "SELEZIONA UNA CATEGORIA" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bewerken" + "value" : "SELECTEER EEN CATEGORIE" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Edytuj" + "value" : "WYBIERZ KATEGORIĘ" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Editar" + "value" : "SELECIONA UMA CATEGORIA" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Редактировать" + "value" : "ВЫБЕРИТЕ КАТЕГОРИЮ" } } } }, - "pm.email-address" : { - "comment" : "Label for email address title", - "extractionState" : "extracted_with_value", + "Please submit a report to help us fix the issue." : { + "comment" : "Data import failure Report dialog title.", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "E-Mail-Adresse" - } - }, - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "Email Address" + "value" : "Bitte reiche einen Bericht ein, damit wir das Problem beheben können." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Dirección de correo electrónico" + "value" : "Envía un informe para ayudarnos a solucionar el problema." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Adresse e-mail" + "value" : "Veuillez soumettre un rapport pour nous aider à résoudre le problème." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Indirizzo e-mail" + "value" : "Invia una segnalazione per aiutarci a risolvere il problema." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "E-mailadres" + "value" : "Dien een melding in om ons te helpen het probleem op te lossen." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Adres e-mail" + "value" : "Prześlij raport, aby pomóc nam w rozwiązaniu problemu." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Endereço de e-mail" + "value" : "Envia um relatório para nos ajudar a corrigir o problema." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Адрес эл. почты" + "value" : "Отправьте отчет, чтобы мы могли устранить ошибку." } } } }, - "pm.empty.cards.title" : { - "comment" : "Label for cards empty state title", + "pm.activate" : { + "comment" : "Activate button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Keine Karten" + "value" : "Reaktivieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "No Cards" + "value" : "Reactivate" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Sin tarjetas" + "value" : "Reactivar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Aucune carte" + "value" : "Réactiver" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nessuna carta" + "value" : "Riattiva" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Geen kaarten" + "value" : "Opnieuw activeren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Brak kart" + "value" : "Ponownie aktywuj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sem cartões" + "value" : "Reativar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Нет карт" + "value" : "Активировать" } } } }, - "pm.empty.default.button.title" : { - "comment" : "Import passwords button title for default empty state", + "pm.activate.private.email" : { + "comment" : "Activate private email address button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwörter importieren" + "value" : "Duck Address reaktivieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Import Passwords" + "value" : "Reactivate Duck Address" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Importar contraseñas" + "value" : "Reactivar Duck Address" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Importer les mots de passe" + "value" : "Réactiver la Duck Address" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Importa password" + "value" : "Riattiva Duck Address" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoorden importeren" + "value" : "Duck Address reactiveren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Importuj hasła" + "value" : "Aktywuj ponownie Duck Address" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Importar palavras-passe" + "value" : "Reativar Duck Address" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Импорт паролей" + "value" : "Снова активировать Duck Address" } } } }, - "pm.empty.default.description.extended.v2" : { - "comment" : "Label for default empty state description", + "pm.add.card" : { + "comment" : "Add New Credit Card button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwörter sind verschlüsselt. Niemand außer dir kann sie sehen, nicht einmal wir." + "value" : "Kreditkarte hinzufügen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Passwords are encrypted. Nobody but you can see them, not even us." + "value" : "Add Credit Card" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Las contraseñas están cifradas. Nadie más que tú puede verlas, ni siquiera nosotros." + "value" : "Añadir tarjeta de crédito" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Les mots de passe sont cryptés. Personne d'autre que vous ne peut les voir, pas même nous." + "value" : "Ajouter une carte bancaire" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Le password sono crittografate. Nessuno tranne te può vederle, nemmeno noi." + "value" : "Aggiungi carta di credito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoorden worden versleuteld. Niemand anders kan ze zien, zelfs wij niet." + "value" : "Creditcard toevoegen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Hasła są szyfrowane. Nikt poza Tobą ich nie widzi, nawet my." + "value" : "Dodaj kartę kredytową" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "As palavras-passe estão encriptadas. Ninguém além de ti pode vê-las, nem mesmo nós." + "value" : "Adicionar cartão de crédito" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Пароли подвергаются шифрованию. Никто, кроме вас, их не увидит. Даже мы." + "value" : "Добавить карту" } } } }, - "pm.empty.default.description.extended.v2.autolock.off" : { - "comment" : "Label for default empty state description when the autolock feature is off", + "pm.add.identity" : { + "comment" : "Add New Identity button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwörter sind verschlüsselt." + "value" : "Identität hinzufügen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Passwords are encrypted." + "value" : "Add Identity" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Las contraseñas están cifradas." + "value" : "Añadir identidad" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Les mots de passe sont cryptés." + "value" : "Ajouter une identité" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Le password sono crittografate." + "value" : "Aggiungi identità" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoorden worden versleuteld." + "value" : "Identiteit toevoegen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Hasła są szyfrowane." + "value" : "Dodaj tożsamość" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "As palavras-passe estão encriptadas." + "value" : "Adicionar identidade" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Пароли подвергаются шифрованию." + "value" : "Добавить учетные данные" } } } }, - "pm.empty.default.title" : { - "comment" : "Label for default empty state title", + "pm.add.login" : { + "comment" : "Add New Login button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Noch keine Passwörter oder Kreditkarten gespeichert" + "value" : "Passwort hinzufügen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "No passwords or credit cards saved yet" + "value" : "Add Password" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Aún no hay contraseñas ni tarjetas de crédito guardadas" + "value" : "Añadir contraseña" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Aucun mot de passe ni aucune carte bancaire n'a encore été enregistré(e)" + "value" : "Ajouter un mot de passe" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nessuna password o carta di credito salvata" + "value" : "Aggiungi password" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nog geen wachtwoorden of creditcards opgeslagen" + "value" : "Wachtwoord toevoegen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Jeszcze nie zapisano haseł ani kart kredytowych" + "value" : "Dodaj hasło" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ainda não há palavras-passe ou cartões de crédito guardados" + "value" : "Adicionar palavra-passe" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сохраненных паролей или платежных карт пока нет" + "value" : "Добавление пароля" } } } }, - "pm.empty.identities.title" : { - "comment" : "Label for identities empty state title", + "pm.add.new" : { + "comment" : "Add New item button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Keine Identitäten" + "value" : "Neue hinzufügen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "No Identities" + "value" : "Add New" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Sin identidades" + "value" : "Añadir nuevo" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Aucune identité" + "value" : "Ajouter nouveau" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nessuna identità" + "value" : "Aggiungi nuovo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Geen identiteiten" + "value" : "Nieuw toevoegen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Brak tożsamości" + "value" : "Dodaj nowy" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sem identidades" + "value" : "Adicionar novo" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Нет учетных данных" + "value" : "Добавить" } } } }, - "pm.empty.learn.more.link" : { - "comment" : "Text for link to learn more about DuckDuckGo password manager", + "pm.added" : { + "comment" : "Label for login added data", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Mehr erfahren" + "value" : "Hinzugefügt" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Learn more" + "value" : "Added" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Más información" + "value" : "Añadido" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "En savoir plus" + "value" : "Ajouté" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ulteriori informazioni" + "value" : "Aggiunto" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Meer informatie" + "value" : "Toegevoegd" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dowiedz się więcej" + "value" : "Dodano" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Saiba mais" + "value" : "Adicionado" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Подробнее" + "value" : "Добавлено" } } } }, - "pm.empty.logins.title" : { - "comment" : "Label for logins empty state title", + "pm.address.address1" : { + "comment" : "Label for address 1 title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Noch keine Passwörter gespeichert" + "value" : "Adresse 1" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "No passwords saved yet" + "value" : "Address 1" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Aún no hay contraseñas guardadas" + "value" : "Dirección 1" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Aucun mot de passe n'a été enregistré" + "value" : "Adresse 1" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nessuna password ancora salvata" + "value" : "Indirizzo 1" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nog geen wachtwoorden opgeslagen" + "value" : "Adres 1" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nie zapisano jeszcze żadnych haseł" + "value" : "Adres 1" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ainda não há palavras-passe guardadas" + "value" : "Morada 1" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сохраненных паролей пока нет" + "value" : "Адрес (строка 1)" } } } }, - "pm.empty.notes.title" : { - "comment" : "Label for notes empty state title", + "pm.address.address2" : { + "comment" : "Label for address 2 title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Keine Notizen" + "value" : "Adresse 2" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "No Notes" + "value" : "Address 2" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Sin notas" + "value" : "Dirección 2" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Aucune note" + "value" : "Adresse 2" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nessuna nota" + "value" : "Indirizzo 2" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Geen notities" + "value" : "Adres 2" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Brak notatek" + "value" : "Adres 2" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sem notas" + "value" : "Morada 2" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Нет примечаний" + "value" : "Адрес (строка 2)" } } } }, - "pm.enable.email.protection" : { - "comment" : "Text link to email protection website", + "pm.address.city" : { + "comment" : "Label for city title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Email Protection aktivieren" + "value" : "Ort" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Enable Email Protection" + "value" : "City" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Activar Email Protection" + "value" : "Ciudad" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Activez Email Protection" + "value" : "Ville" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Abilita Email Protection" + "value" : "Città" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "E-mailbeveiliging inschakelen" + "value" : "Plaats" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Włącz ochronę poczty Email Protection" + "value" : "Miasto" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ativa a Email Protection" + "value" : "Cidade" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Включите защиту электронной почты" + "value" : "Город" } } } }, - "pm.identification" : { - "comment" : "Label for identification title", + "pm.address.postal-code" : { + "comment" : "Label for postal code title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Identifikation" + "value" : "Postleitzahl" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Identification" + "value" : "Postal Code" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Identificación" + "value" : "Código postal" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Identification" + "value" : "Code postal" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Identificazione" + "value" : "Codice Postale" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Identificatie" + "value" : "Postcode" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Identyfikacja" + "value" : "Kod pocztowy" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Identificação" + "value" : "Código postal" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Учетные данные" + "value" : "Почтовый индекс" } } } }, - "pm.identity.autofill.title.default" : { - "comment" : "Default title for Addresses/Identities", + "pm.address.state-province" : { + "comment" : "Label for state/province title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Adresse" + "value" : "Staat/Provinz" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Address" + "value" : "State/Province" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Dirección" + "value" : "Estado/Provincia" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Adresse" + "value" : "Pays/Région" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Indirizzo" + "value" : "Stato/Provincia" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Adres" + "value" : "Staat/Provincie" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Adres" + "value" : "Stan/prowincja/region" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Morada" + "value" : "Distrito/província" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Адрес" + "value" : "Штат/регион" } } } }, - "pm.last.updated" : { - "comment" : "Label for last updated edit field", + "pm.cancel" : { + "comment" : "Cancel button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zuletzt aktualisiert" + "value" : "Abbrechen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Last Updated" + "value" : "Cancel" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Última actualización" + "value" : "Cancelar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Dernière mise à jour" + "value" : "Annuler" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ultimo aggiornamento" + "value" : "Annulla" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Laatst bijgewerkt" + "value" : "Annuleren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ostatnia aktualizacja" + "value" : "Anuluj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Última atualização" + "value" : "Cancelar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Последнее обновление" + "value" : "Отменить" } } } }, - "pm.lock-screen.duration" : { - "comment" : "Message about the duration for which autofill information remains unlocked on the lock screen.", + "pm.card.cardholder-name" : { + "comment" : "Label for cardholder name title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Deine Autovervollständigungsdaten bleiben freigeschaltet, bis dein Computer für %@ inaktiv ist." + "value" : "Name des Karteninhabers" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Your autofill info will remain unlocked until your computer is idle for %@." + "value" : "Cardholder Name" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Tu información de autocompletar permanecerá desbloqueada hasta que tu ordenador esté inactivo durante %@." + "value" : "Nombre del titular de la tarjeta" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Vos informations de saisie automatique resteront déverrouillées jusqu'à ce que votre ordinateur soit inactif pendant %@." + "value" : "Nom du titulaire de la carte" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "La compilazione automatica delle informazioni rimarrà sbloccata per %@ fino a quando il computer non si disattiverà." + "value" : "Nome del titolare della carta" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Je automatisch ingevulde gegevens blijven ontgrendeld totdat je computer %@ inactief is." + "value" : "Naam kaarthouder" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Informacje autouzupełniania pozostaną odblokowane do czasu, aż komputer będzie bezczynny przez %@." + "value" : "Nazwisko właściciela karty" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "As tuas informações de preenchimento automático permanecerão desbloqueadas durante %@ até o teu computador ficar inativo." + "value" : "Nome do titular do cartão" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Ваши автозаполняемые данные останутся в разблокированном состоянии в течение %@, пока компьютер не перейдет в режим простоя." + "value" : "Имя держателя карты" } } } }, - "pm.lock-screen.preferences.label" : { - "comment" : "Label used for a button that opens preferences", + "pm.card.cvv" : { + "comment" : "Label for CVV title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Änderung in" + "value" : "CVV" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Change in" + "value" : "CVV" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Cambiar en" + "value" : "CVV" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Modification dans" + "value" : "CVV" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cambiamento di" + "value" : "CVV" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Veranderen in" + "value" : "CVV" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zmień w obszarze" + "value" : "CVV" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Alterar nas" + "value" : "CVV" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Изменить в разделе" + "value" : "CVV-код" } } } }, - "pm.lock-screen.preferences.link" : { - "comment" : "Label used for a button that opens preferences", + "pm.card.expiration-date" : { + "comment" : "Label for expiration date title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Einstellungen" + "value" : "Verfallsdatum" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Settings" + "value" : "Expiration Date" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ajustes" + "value" : "Fecha de caducidad" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Paramètres" + "value" : "Date d'expiration" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Impostazioni" + "value" : "Data di scadenza" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Instellingen" + "value" : "Vervaldatum" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ustawienia" + "value" : "Data ważności" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Definições" + "value" : "Data de validade" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Настройки" + "value" : "Срок действия" } } } }, - "pm.lock-screen.prompt.autofill" : { - "comment" : "Label presented when autofilling credit card information", + "pm.card.number" : { + "comment" : "Label for card number title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zugang zu deinen Autovervollständigungs-Infos freischalten" + "value" : "Nummer der Karte" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "unlock access to your autofill info" + "value" : "Card Number" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "desbloquear el acceso a tu información de autocompletar" + "value" : "Número de tarjeta" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "déverrouiller l'accès à vos informations de saisie automatique" + "value" : "Numéro de carte" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "sblocca l'accesso alla compilazione automatica delle informazioni" + "value" : "Numero della carta" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "toegang tot automatisch ingevulde gegevens ontgrendelen" + "value" : "Kaartnummer" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "odblokuj dostęp do informacji autouzupełniania" + "value" : "Numer karty" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "desbloquear o acesso às tuas informações de preenchimento automático" + "value" : "Número do cartão" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Разблокировать доступ к автозаполняемым данным" + "value" : "Номер карты" } } } }, - "pm.lock-screen.prompt.change-settings" : { - "comment" : "Label presented when changing Auto-Lock settings", + "pm.day" : { + "comment" : "Label for Day title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Einstellungen für das automatische Ausfüllen von Informationen ändern" + "value" : "Tag" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "change your autofill info access settings" + "value" : "Day" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "cambiar la configuración de acceso a la información de autocompletar" + "value" : "Día" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "modifier les paramètres d'accès à vos informations de saisie automatique" + "value" : "Jour" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "modifica le impostazioni di accesso alla compilazione automatica delle informazioni" + "value" : "Giorno" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "toegangsinstellingen voor automatisch ingevulde gegevens wijzigen" + "value" : "Dag" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "zmień ustawienia dostępu do informacji autouzupełniania" + "value" : "Dzień" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "alterar as tuas definições de acesso às informações de preenchimento automático" + "value" : "Dia" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Изменить настройки доступа к автозаполняемым данным" + "value" : "День" } } } }, - "pm.lock-screen.prompt.export-logins" : { - "comment" : "Label presented when exporting logins", + "pm.deactivate" : { + "comment" : "Deactivate button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Deine Benutzernamen und Passwörter exportieren" + "value" : "Deaktivieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "export your usernames and passwords" + "value" : "Deactivate" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "exporta tus nombres de usuario y contraseñas" + "value" : "Desactivar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "exporter vos noms d'utilisateur et mots de passe" + "value" : "Désactiver" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "esporta i tuoi nomi utente e le tue password" + "value" : "Disattiva" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "je gebruikersnamen en wachtwoorden exporteren" + "value" : "Deactiveren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "eksportuj swoje nazwy użytkownika i hasła" + "value" : "Dezaktywuj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "exportar os nomes de utilizador e as palavras-passe" + "value" : "Desativar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Экспортировать имена пользователей и пароли" + "value" : "Деактивировать" } } } }, - "pm.lock-screen.prompt.unlock-logins" : { - "comment" : "Label presented when unlocking Autofill", + "pm.deactivate.private.email" : { + "comment" : "Deactivate private email address button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "deine Passwörter freischalten und Informationen autovervollständigen" + "value" : "Duck Address deaktivieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "unlock your passwords and autofill info for you" + "value" : "Deactivate Duck Address" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "desbloquea tus contraseñas y completa automáticamente tu información" + "value" : "Desactivar Duck Address" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "débloque vos mots de passe et saisit automatiquement les informations pour vous" + "value" : "Désactiver la Duck Address" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "sblocca le tue password e compila automaticamente le informazioni" + "value" : "Disattiva Duck Address" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "ontgrendel je wachtwoorden en vul gegevens automatisch in" + "value" : "Duck Address deactiveren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "odblokuj hasła i automatycznie uzupełniaj informacje" + "value" : "Dezaktywuj Duck Address" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "desbloquear as palavras-passe e preencher automaticamente informações por ti" + "value" : "Desativar Duck Address" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Разблокирует ваши пароли и автоматически заполнит информацию" + "value" : "Деактивировать Duck Address" } } } }, - "pm.lock-screen.threshold.1-hour" : { - "comment" : "Label used when selecting the Auto-Lock threshold", + "pm.delete" : { + "comment" : "Delete button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "1 Stunde" + "value" : "Löschen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "1 hour" + "value" : "Delete" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "1 hora" + "value" : "Eliminar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "1 heure" + "value" : "Supprimer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "1 ora" + "value" : "Elimina" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "1 uur" + "value" : "Verwijderen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "1 godzina" + "value" : "Usuń" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "1 hora" + "value" : "Eliminar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "1 ч." + "value" : "Удалить" } } } }, - "pm.lock-screen.threshold.1-minute" : { - "comment" : "Label used when selecting the Auto-Lock threshold", + "pm.edit" : { + "comment" : "Edit button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "1 Minute" + "value" : "Bearbeiten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "1 minute" + "value" : "Edit" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "1 minuto" + "value" : "Editar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "1 minute" + "value" : "Modifier" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "1 minuto" + "value" : "Modifica" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "1 minuut" + "value" : "Bewerken" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "1 minuta" + "value" : "Edytuj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "1 minuto" + "value" : "Editar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "1 мин." + "value" : "Редактировать" } } } }, - "pm.lock-screen.threshold.5-minutes" : { - "comment" : "Label used when selecting the Auto-Lock threshold", + "pm.email-address" : { + "comment" : "Label for email address title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "5 Minuten" + "value" : "E-Mail-Adresse" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "5 minutes" + "value" : "Email Address" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "5 minutos" + "value" : "Dirección de correo electrónico" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "5 minutes" + "value" : "Adresse e-mail" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "5 minuti" + "value" : "Indirizzo e-mail" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "5 minuten" + "value" : "E-mailadres" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "5 minut" + "value" : "Adres e-mail" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "5 minutos" + "value" : "Endereço de e-mail" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "5 мин." + "value" : "Адрес эл. почты" } } } }, - "pm.lock-screen.threshold.12-hours" : { - "comment" : "Label used when selecting the Auto-Lock threshold", + "pm.empty.cards.title" : { + "comment" : "Label for cards empty state title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "12 Stunden" + "value" : "Keine Karten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "12 hours" + "value" : "No Cards" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "12 horas" + "value" : "Sin tarjetas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "12 heures" + "value" : "Aucune carte" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "12 ore" + "value" : "Nessuna carta" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "12 uur" + "value" : "Geen kaarten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "12 godzin" + "value" : "Brak kart" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "12 horas" + "value" : "Sem cartões" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "12 ч." + "value" : "Нет карт" } } } }, - "pm.lock-screen.threshold.15-minutes" : { - "comment" : "Label used when selecting the Auto-Lock threshold", + "pm.empty.default.button.title" : { + "comment" : "Import passwords button title for default empty state", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "15 Minuten" + "value" : "Passwörter importieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "15 minutes" + "value" : "Import Passwords" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "15 minutos" + "value" : "Importar contraseñas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "15 minutes" + "value" : "Importer les mots de passe" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "15 minuti" + "value" : "Importa password" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "15 minuten" + "value" : "Wachtwoorden importeren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "15 minut" + "value" : "Importuj hasła" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "15 minutos" + "value" : "Importar palavras-passe" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "15 мин." + "value" : "Импорт паролей" } } } }, - "pm.lock-screen.threshold.30-minutes" : { - "comment" : "Label used when selecting the Auto-Lock threshold", + "pm.empty.default.description.extended.v2" : { + "comment" : "Label for default empty state description", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "30 Minuten" + "value" : "Passwörter sind verschlüsselt. Niemand außer dir kann sie sehen, nicht einmal wir." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "30 minutes" + "value" : "Passwords are encrypted. Nobody but you can see them, not even us." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "30 minutos" + "value" : "Las contraseñas están cifradas. Nadie más que tú puede verlas, ni siquiera nosotros." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "30 minutes" + "value" : "Les mots de passe sont cryptés. Personne d'autre que vous ne peut les voir, pas même nous." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "30 minuti" + "value" : "Le password sono crittografate. Nessuno tranne te può vederle, nemmeno noi." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "30 minuten" + "value" : "Wachtwoorden worden versleuteld. Niemand anders kan ze zien, zelfs wij niet." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "30 minut" + "value" : "Hasła są szyfrowane. Nikt poza Tobą ich nie widzi, nawet my." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "30 minutos" + "value" : "As palavras-passe estão encriptadas. Ninguém além de ti pode vê-las, nem mesmo nós." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "30 мин." + "value" : "Пароли подвергаются шифрованию. Никто, кроме вас, их не увидит. Даже мы." } } } }, - "pm.month" : { - "comment" : "Label for Month title", + "pm.empty.default.description.extended.v2.autolock.off" : { + "comment" : "Label for default empty state description when the autolock feature is off", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Monat" + "value" : "Passwörter sind verschlüsselt." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Month" + "value" : "Passwords are encrypted." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mes" + "value" : "Las contraseñas están cifradas." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Mois" + "value" : "Les mots de passe sont cryptés." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mese" + "value" : "Le password sono crittografate." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Maand" + "value" : "Wachtwoorden worden versleuteld." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Miesiąc" + "value" : "Hasła są szyfrowane." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mês" + "value" : "As palavras-passe estão encriptadas." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Месяц" + "value" : "Пароли подвергаются шифрованию." } } } }, - "pm.name.first" : { - "comment" : "Label for first name title", + "pm.empty.default.title" : { + "comment" : "Label for default empty state title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Vorname" + "value" : "Noch keine Passwörter oder Kreditkarten gespeichert" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "First Name" + "value" : "No passwords or credit cards saved yet" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Nombre" + "value" : "Aún no hay contraseñas ni tarjetas de crédito guardadas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Prénom" + "value" : "Aucun mot de passe ni aucune carte bancaire n'a encore été enregistré(e)" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nome" + "value" : "Nessuna password o carta di credito salvata" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Voornaam" + "value" : "Nog geen wachtwoorden of creditcards opgeslagen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Imię" + "value" : "Jeszcze nie zapisano haseł ani kart kredytowych" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nome próprio" + "value" : "Ainda não há palavras-passe ou cartões de crédito guardados" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Имя" + "value" : "Сохраненных паролей или платежных карт пока нет" } } } }, - "pm.name.last" : { - "comment" : "Label for last name title", + "pm.empty.identities.title" : { + "comment" : "Label for identities empty state title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nachname" + "value" : "Keine Identitäten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Last Name" + "value" : "No Identities" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Apellidos" + "value" : "Sin identidades" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nom de famille" + "value" : "Aucune identité" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cognome" + "value" : "Nessuna identità" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Achternaam" + "value" : "Geen identiteiten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nazwisko" + "value" : "Brak tożsamości" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Apelido" + "value" : "Sem identidades" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Фамилия" + "value" : "Нет учетных данных" } } } }, - "pm.name.middle" : { - "comment" : "Label for middle name title", + "pm.empty.learn.more.link" : { + "comment" : "Text for link to learn more about DuckDuckGo password manager", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Mittlerer Name" + "value" : "Mehr erfahren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Middle Name" + "value" : "Learn more" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Segundo nombre" + "value" : "Más información" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Deuxième prénom" + "value" : "En savoir plus" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Secondo nome" + "value" : "Ulteriori informazioni" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Middelste naam" + "value" : "Meer informatie" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Drugie imię" + "value" : "Dowiedz się więcej" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nome do meio" + "value" : "Saiba mais" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Второе имя" + "value" : "Подробнее" } } } }, - "pm.new.card" : { - "comment" : "Label for new card title", + "pm.empty.logins.title" : { + "comment" : "Label for logins empty state title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Kreditkarte" + "value" : "Noch keine Passwörter gespeichert" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Credit Card" + "value" : "No passwords saved yet" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Tarjeta de crédito" + "value" : "Aún no hay contraseñas guardadas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Carte bancaire" + "value" : "Aucun mot de passe n'a été enregistré" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Carta di credito" + "value" : "Nessuna password ancora salvata" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Creditcard" + "value" : "Nog geen wachtwoorden opgeslagen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Karta kredytowa" + "value" : "Nie zapisano jeszcze żadnych haseł" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Cartão de crédito" + "value" : "Ainda não há palavras-passe guardadas" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Платежная карта" + "value" : "Сохраненных паролей пока нет" } } } }, - "pm.new.identity" : { - "comment" : "Label for new identity title", + "pm.empty.notes.title" : { + "comment" : "Label for notes empty state title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Identität" + "value" : "Keine Notizen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Identity" + "value" : "No Notes" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Identidad" + "value" : "Sin notas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Identité" + "value" : "Aucune note" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Identità" + "value" : "Nessuna nota" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Identiteit" + "value" : "Geen notities" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Tożsamość" + "value" : "Brak notatek" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Identidade" + "value" : "Sem notas" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Учетные данные" + "value" : "Нет примечаний" } } } }, - "pm.new.login" : { - "comment" : "Label for new login title", + "pm.enable.email.protection" : { + "comment" : "Text link to email protection website", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwort" + "value" : "Email Protection aktivieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Password" + "value" : "Enable Email Protection" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Contraseña" + "value" : "Activar Email Protection" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Mot de passe" + "value" : "Activez Email Protection" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Password" + "value" : "Abilita Email Protection" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoord" + "value" : "E-mailbeveiliging inschakelen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Hasło" + "value" : "Włącz ochronę poczty Email Protection" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Palavra-passe" + "value" : "Ativa a Email Protection" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Пароль" + "value" : "Включите защиту электронной почты" } } } }, - "pm.new.note" : { - "comment" : "Label for new note title", + "pm.identification" : { + "comment" : "Label for identification title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Hinweis" + "value" : "Identifikation" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Note" + "value" : "Identification" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Nota" + "value" : "Identificación" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Note" + "value" : "Identification" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nota" + "value" : "Identificazione" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Notitie" + "value" : "Identificatie" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Notatka" + "value" : "Identyfikacja" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nota" + "value" : "Identificação" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Примечание" + "value" : "Учетные данные" } } } }, - "pm.note" : { - "comment" : "Label for note title", + "pm.identity.autofill.title.default" : { + "comment" : "Default title for Addresses/Identities", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Hinweis" + "value" : "Adresse" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Note" + "value" : "Address" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Nota" + "value" : "Dirección" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Note" + "value" : "Adresse" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nota" + "value" : "Indirizzo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Opmerking" + "value" : "Adres" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Notatka" + "value" : "Adres" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nota" + "value" : "Morada" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Примечание" + "value" : "Адрес" } } } }, - "pm.note.empty" : { - "comment" : "Label for empty note title", + "pm.last.updated" : { + "comment" : "Label for last updated edit field", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Leerer Hinweis" + "value" : "Zuletzt aktualisiert" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Empty note" + "value" : "Last Updated" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Nota vacía" + "value" : "Última actualización" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Note vide" + "value" : "Dernière mise à jour" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nota vuota" + "value" : "Ultimo aggiornamento" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Lege notitie" + "value" : "Laatst bijgewerkt" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pusta notatka" + "value" : "Ostatnia aktualizacja" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nota vazia" + "value" : "Última atualização" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Пустое примечание" + "value" : "Последнее обновление" } } } }, - "pm.notes" : { - "comment" : "Label for notes edit field", + "pm.lock-screen.duration" : { + "comment" : "Message about the duration for which autofill information remains unlocked on the lock screen.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Notizen" + "value" : "Deine Autovervollständigungsdaten bleiben freigeschaltet, bis dein Computer für %@ inaktiv ist." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Notes" + "value" : "Your autofill info will remain unlocked until your computer is idle for %@." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Notas" + "value" : "Tu información de autocompletar permanecerá desbloqueada hasta que tu ordenador esté inactivo durante %@." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Notes" + "value" : "Vos informations de saisie automatique resteront déverrouillées jusqu'à ce que votre ordinateur soit inactif pendant %@." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Note" + "value" : "La compilazione automatica delle informazioni rimarrà sbloccata per %@ fino a quando il computer non si disattiverà." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Opmerkingen" + "value" : "Je automatisch ingevulde gegevens blijven ontgrendeld totdat je computer %@ inactief is." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Uwagi" + "value" : "Informacje autouzupełniania pozostaną odblokowane do czasu, aż komputer będzie bezczynny przez %@." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Notas" + "value" : "As tuas informações de preenchimento automático permanecerão desbloqueadas durante %@ até o teu computador ficar inativo." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Примечания" + "value" : "Ваши автозаполняемые данные останутся в разблокированном состоянии в течение %@, пока компьютер не перейдет в режим простоя." } } } }, - "pm.password" : { - "comment" : "Label for password edit field", + "pm.lock-screen.preferences.label" : { + "comment" : "Label used for a button that opens preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwort" + "value" : "Änderung in" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Password" + "value" : "Change in" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Contraseña" + "value" : "Cambiar en" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Mot de passe" + "value" : "Modification dans" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Password" + "value" : "Cambiamento di" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoord" + "value" : "Veranderen in" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Hasło" + "value" : "Zmień w obszarze" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Palavra-passe" + "value" : "Alterar nas" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Пароль" + "value" : "Изменить в разделе" } } } }, - "pm.phone-number" : { - "comment" : "Label for phone number title", + "pm.lock-screen.preferences.link" : { + "comment" : "Label used for a button that opens preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Telefonnummer" + "value" : "Einstellungen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Phone Number" + "value" : "Settings" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Número de teléfono" + "value" : "Ajustes" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Numéro de téléphone" + "value" : "Paramètres" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Numero di telefono" + "value" : "Impostazioni" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Telefoonnummer" + "value" : "Instellingen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Numer telefonu" + "value" : "Ustawienia" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Número de telefone" + "value" : "Definições" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Номер телефона" + "value" : "Настройки" } } } }, - "pm.private.email.mesage.activate.confirm.content" : { - "comment" : "Text for the confirmation message displayed when a user tries activate a Private Email Address", + "pm.lock-screen.prompt.autofill" : { + "comment" : "Label presented when autofilling credit card information", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "E-Mails, die an %@ gesendet werden, werden wieder an deinen Posteingang weitergeleitet." + "value" : "Zugang zu deinen Autovervollständigungs-Infos freischalten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Emails sent to %@ will again be forwarded to your inbox." + "value" : "unlock access to your autofill info" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Los correos electrónicos enviados a %@ volverán a reenviarse a tu bandeja de entrada." + "value" : "desbloquear el acceso a tu información de autocompletar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Les e-mails envoyés à %@ seront à nouveau transférés vers votre boîte de réception." + "value" : "déverrouiller l'accès à vos informations de saisie automatique" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Le e-mail inviate a %@ saranno nuovamente inoltrate alla tua casella di posta." + "value" : "sblocca l'accesso alla compilazione automatica delle informazioni" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "E-mails die naar %@ worden gestuurd, worden opnieuw doorgestuurd naar je inbox." + "value" : "toegang tot automatisch ingevulde gegevens ontgrendelen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wiadomości e-mail wysłane do %@ będą ponownie przekazywane do Twojej skrzynki odbiorczej." + "value" : "odblokuj dostęp do informacji autouzupełniania" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Os e-mails enviados para %@ serão encaminhados para a tua caixa de entrada." + "value" : "desbloquear o acesso às tuas informações de preenchimento automático" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Электронные письма, отправленные на адрес %@, снова будут пересылаться на ваш почтовый ящик." + "value" : "Разблокировать доступ к автозаполняемым данным" } } } }, - "pm.private.email.mesage.activate.confirm.title" : { - "comment" : "Title for the confirmation message displayed when a user tries activate a Private Email Address", + "pm.lock-screen.prompt.change-settings" : { + "comment" : "Label presented when changing Auto-Lock settings", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Private Duck Address reaktivieren?" + "value" : "Einstellungen für das automatische Ausfüllen von Informationen ändern" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Reactivate Private Duck Address?" + "value" : "change your autofill info access settings" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Reactivar la Duck Address privada?" + "value" : "cambiar la configuración de acceso a la información de autocompletar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Réactiver la Duck Address privée ?" + "value" : "modifier les paramètres d'accès à vos informations de saisie automatique" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riattivare Duck Address privato?" + "value" : "modifica le impostazioni di accesso alla compilazione automatica delle informazioni" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Privé-Duck Address opnieuw activeren?" + "value" : "toegangsinstellingen voor automatisch ingevulde gegevens wijzigen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ponownie aktywować prywatny adres Duck Address?" + "value" : "zmień ustawienia dostępu do informacji autouzupełniania" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Reativar Duck Address privado?" + "value" : "alterar as tuas definições de acesso às informações de preenchimento automático" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Вновь активировать приватный адрес Duck Address?" + "value" : "Изменить настройки доступа к автозаполняемым данным" } } } }, - "pm.private.email.mesage.active" : { - "comment" : "Mesasage displayed when a private email address is active", + "pm.lock-screen.prompt.export-logins" : { + "comment" : "Label presented when exporting logins", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address aktiv" + "value" : "Deine Benutzernamen und Passwörter exportieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Duck Address Active" + "value" : "export your usernames and passwords" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address activa" + "value" : "exporta tus nombres de usuario y contraseñas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address active" + "value" : "exporter vos noms d'utilisateur et mots de passe" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address attivo" + "value" : "esporta i tuoi nomi utente e le tue password" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Actief Duck Address" + "value" : "je gebruikersnamen en wachtwoorden exporteren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address aktywny" + "value" : "eksportuj swoje nazwy użytkownika i hasła" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address ativo" + "value" : "exportar os nomes de utilizador e as palavras-passe" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Адрес Duck Address активирован" + "value" : "Экспортировать имена пользователей и пароли" } } } }, - "pm.private.email.mesage.deactivate.confirm.content" : { - "comment" : "Text for the confirmation message displayed when a user tries deactivate a Private Email Address", + "pm.lock-screen.prompt.unlock-logins" : { + "comment" : "Label presented when unlocking Autofill", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "E-Mails, die an %@ gesendet werden, werden nicht mehr an deinen Posteingang weitergeleitet." + "value" : "deine Passwörter freischalten und Informationen autovervollständigen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Emails sent to %@ will no longer be forwarded to your inbox." + "value" : "unlock your passwords and autofill info for you" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Los correos electrónicos electrónicos enviados a %@ ya no se se reenviarán a tu bandeja de entrada." + "value" : "desbloquea tus contraseñas y completa automáticamente tu información" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Les e-mails envoyés à %@ ne seront plus transférés vers votre boîte de réception." + "value" : "débloque vos mots de passe et saisit automatiquement les informations pour vous" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Le e-mail inviate a %@ non saranno più inoltrate alla tua casella di posta in arrivo." + "value" : "sblocca le tue password e compila automaticamente le informazioni" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "E-mails die naar %@ worden gestuurd, worden niet meer doorgestuurd naar je inbox." + "value" : "ontgrendel je wachtwoorden en vul gegevens automatisch in" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wiadomości e-mail wysłane do %@ nie będą już przekazywane do Twojej skrzynki odbiorczej." + "value" : "odblokuj hasła i automatycznie uzupełniaj informacje" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Os e-mails enviados para %@ já não serão encaminhados para a tua caixa de entrada." + "value" : "desbloquear as palavras-passe e preencher automaticamente informações por ti" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Электронные письма, отправленные на адрес %@, не будут пересылаться на ваш почтовый ящик." + "value" : "Разблокирует ваши пароли и автоматически заполнит информацию" } } } }, - "pm.private.email.mesage.deactivate.confirm.title" : { - "comment" : "Title for the confirmation message displayed when a user tries deactivate a Private Email Address", + "pm.lock-screen.threshold.1-hour" : { + "comment" : "Label used when selecting the Auto-Lock threshold", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Private Duck Address deaktivieren?" + "value" : "1 Stunde" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Deactivate Private Duck Address?" + "value" : "1 hour" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Desactivar la Duck Address privada?" + "value" : "1 hora" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Désactiver la Duck Address privée ?" + "value" : "1 heure" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Disattivare Duck Address privato?" + "value" : "1 ora" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Privé-Duck Address deactiveren?" + "value" : "1 uur" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dezaktywować prywatny adres Duck Address?" + "value" : "1 godzina" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Desativar Duck Address privado?" + "value" : "1 hora" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Деактивировать приватный адрес Duck Address?" + "value" : "1 ч." } } } }, - "pm.private.email.mesage.error" : { - "comment" : "Mesasage displayed when a user tries to manage a private email address but the service is not available, returns an error or network is down", + "pm.lock-screen.threshold.1-minute" : { + "comment" : "Label used when selecting the Auto-Lock threshold", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Die Verwaltung dieser Adresse ist vorübergehend nicht möglich." + "value" : "1 Minute" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Management of this address is temporarily unavailable." + "value" : "1 minute" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "La gestión de esta dirección no está disponible temporalmente." + "value" : "1 minuto" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "La gestion de cette adresse est temporairement indisponible." + "value" : "1 minute" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "La gestione di questo indirizzo non è al momento disponibile." + "value" : "1 minuto" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Beheren van dit adres is tijdelijk niet beschikbaar." + "value" : "1 minuut" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zarządzanie tym adresem jest chwilowo niedostępne." + "value" : "1 minuta" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "A gestão deste endereço está temporariamente indisponível." + "value" : "1 minuto" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Управление этим адресом временно недоступно." + "value" : "1 мин." } } } }, - "pm.private.email.mesage.inactive" : { - "comment" : "Mesasage displayed when a private email address is inactive", + "pm.lock-screen.threshold.5-minutes" : { + "comment" : "Label used when selecting the Auto-Lock threshold", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address deaktiviert" + "value" : "5 Minuten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Duck Address Deactivated" + "value" : "5 minutes" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address desactivada" + "value" : "5 minutos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address désactivée" + "value" : "5 minutes" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address disattivato" + "value" : "5 minuti" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Gedeactiveerd Duck Address" + "value" : "5 minuten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address dezaktywowany" + "value" : "5 minut" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Address desativado" + "value" : "5 minutos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Адрес Duck Address деактивирован" + "value" : "5 мин." } } } }, - "pm.removed.duck.address.button" : { - "comment" : "Button text for the alert dialog telling the user an updated username is no longer a private email address", + "pm.lock-screen.threshold.12-hours" : { + "comment" : "Label used when selecting the Auto-Lock threshold", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Verstanden" + "value" : "12 Stunden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Got it" + "value" : "12 hours" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Entendido" + "value" : "12 horas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "J'ai compris" + "value" : "12 heures" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ho capito" + "value" : "12 ore" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Ik snap het" + "value" : "12 uur" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Rozumiem" + "value" : "12 godzin" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Entendi" + "value" : "12 horas" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Понятно" + "value" : "12 ч." } } } }, - "pm.removed.duck.address.content" : { - "comment" : "Content for the alert dialog telling the user an updated username is no longer a private email address", + "pm.lock-screen.threshold.15-minutes" : { + "comment" : "Label used when selecting the Auto-Lock threshold", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Du kannst diese Duck Address weiterhin über die E-Mails in deinem persönlichen Posteingang verwalten." + "value" : "15 Minuten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "You can still manage this Duck Address from emails received from it in your personal inbox." + "value" : "15 minutes" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Puedes gestionar esta Duck Address desde los correos electrónicos recibidos en tu bandeja de entrada personal." + "value" : "15 minutos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Vous pouvez toujours gérer cette Duck Address à partir des e-mails reçus de sa part dans votre boîte de réception personnelle." + "value" : "15 minutes" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Puoi comunque gestire questo Duck Address dalle e-mail da esso ricevute nella tua casella di posta personale." + "value" : "15 minuti" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Je kunt dit Duck Address nog steeds beheren via e-mails die je ervan ontvangt in je persoonlijke inbox." + "value" : "15 minuten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nadal możesz zarządzać adresem Duck Address z wiadomości e-mail otrzymanych z tego adresu w swojej osobistej skrzynce odbiorczej." + "value" : "15 minut" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ainda podes gerir este Duck Address a partir dos e-mails recebidos deste endereço na tua caixa de entrada pessoal." + "value" : "15 minutos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Вы по-прежнему можете управлять этим адресом Duck Address через поступившие на него письма в своем почтовом ящике." + "value" : "15 мин." } } } }, - "pm.removed.duck.address.title" : { - "comment" : "Title for the alert dialog telling the user an updated username is no longer a private email address", + "pm.lock-screen.threshold.30-minutes" : { + "comment" : "Label used when selecting the Auto-Lock threshold", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Benutzername von Private Duck Address wurde entfernt" + "value" : "30 Minuten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Private Duck Address username was removed" + "value" : "30 minutes" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Se ha eliminado el nombre de usuario de la Duck Address privada" + "value" : "30 minutos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Le nom d'utilisateur de la Duck Address privée a été supprimé" + "value" : "30 minutes" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Il nome utente Private Duck Address è stato rimosso" + "value" : "30 minuti" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "De persoonlijke gebruikersnaam voor het Duck Address is verwijderd" + "value" : "30 minuten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nazwa użytkownika prywatnego adresu Duck Address została usunięta" + "value" : "30 minut" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O nome de utilizador privado do Duck Address foi removido" + "value" : "30 minutos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Приватное имя пользователя Duck Address удалено" + "value" : "30 мин." } } } }, - "pm.save" : { - "comment" : "Save button", + "pm.month" : { + "comment" : "Label for Month title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Speichern" + "value" : "Monat" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Save" + "value" : "Month" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Guardar" + "value" : "Mes" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Enregistrer" + "value" : "Mois" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Salva" + "value" : "Mese" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Opslaan" + "value" : "Maand" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zapisz" + "value" : "Miesiąc" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Guardar" + "value" : "Mês" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сохранить" + "value" : "Месяц" } } } }, - "pm.save-credentials.editable.title" : { - "comment" : "Title for the editable Save Credentials popover", + "pm.name.first" : { + "comment" : "Label for first name title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwort in DuckDuckGo speichern?" + "value" : "Vorname" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Save password in DuckDuckGo?" + "value" : "First Name" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Guardar contraseña en DuckDuckGo?" + "value" : "Nombre" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Enregistrer le mot de passe dans DuckDuckGo ?" + "value" : "Prénom" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Salvare la password in DuckDuckGo?" + "value" : "Nome" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoord opslaan in DuckDuckGo?" + "value" : "Voornaam" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zapisać hasło w DuckDuckGo?" + "value" : "Imię" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Guardar palavra-passe no DuckDuckGo?" + "value" : "Nome próprio" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сохранить пароль в DuckDuckGo?" + "value" : "Имя" } } } }, - "pm.save-credentials.non-editable.title" : { - "comment" : "Title for the non-editable Save Credentials popover", + "pm.name.last" : { + "comment" : "Label for last name title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neues Passwort gespeichert" + "value" : "Nachname" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "New password saved" + "value" : "Last Name" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Nueva contraseña guardada" + "value" : "Apellidos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nouveau mot de passe enregistré" + "value" : "Nom de famille" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nuova password salvata" + "value" : "Cognome" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nieuw wachtwoord opgeslagen" + "value" : "Achternaam" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zapisano nowe hasło" + "value" : "Nazwisko" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nova palavra-passe guardada" + "value" : "Apelido" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Новый пароль сохранен" + "value" : "Фамилия" } } } }, - "pm.save-credentials.security.info" : { - "comment" : "Info message for the save credentials dialog", + "pm.name.middle" : { + "comment" : "Label for middle name title", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwörter sind verschlüsselt. Niemand außer dir kann sie sehen, nicht einmal wir. [Mehr erfahren](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" + "value" : "Mittlerer Name" } }, "en" : { "stringUnit" : { - "state" : "translated", - "value" : "Passwords are encrypted. Nobody but you can see them, not even us. [Learn More](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" + "state" : "new", + "value" : "Middle Name" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Las contraseñas están cifradas. Nadie más que tú puede verlas, ni siquiera nosotros. [Más información](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" + "value" : "Segundo nombre" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Les mots de passe sont cryptés. Personne d'autre que vous ne peut les voir, pas même nous. [En savoir plus](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" + "value" : "Deuxième prénom" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Le password sono crittografate. Nessuno tranne te può vederle, nemmeno noi. [Scopri di più](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" + "value" : "Secondo nome" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoorden worden versleuteld. Niemand anders dan jij kunt ze zien, zelfs wij niet. [Meer informatie](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" + "value" : "Middelste naam" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Hasła są szyfrowane. Nikt poza Tobą ich nie widzi, nawet my. [Więcek informacji](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" + "value" : "Drugie imię" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "As palavras-passe estão encriptadas. Ninguém além de ti pode vê-las, nem mesmo nós. [Sabe mais](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" + "value" : "Nome do meio" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Пароли подвергаются шифрованию. Никто, кроме вас, их не увидит. Даже мы. [Learn More](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" + "value" : "Второе имя" } } } }, - "pm.save-credentials.security.info.autolock.off" : { - "comment" : "Info message for the save credentials dialog when the autolock feature is off", + "pm.new.card" : { + "comment" : "Label for new card title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" + "value" : "Kreditkarte" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" + "value" : "Credit Card" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" + "value" : "Tarjeta de crédito" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" + "value" : "Carte bancaire" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" + "value" : "Carta di credito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" + "value" : "Creditcard" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" + "value" : "Karta kredytowa" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" + "value" : "Cartão de crédito" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" + "value" : "Платежная карта" } } } }, - "pm.signin.to.manage" : { - "comment" : "Message displayed to the user when they are logged out of Email protection.", + "pm.new.identity" : { + "comment" : "Label for new identity title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "%@, um deine Duck Addresses auf diesem Gerät zu verwalten." + "value" : "Identität" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "%@ to manage your Duck Addresses on this device." + "value" : "Identity" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "%@ para gestionar tus Duck Addresses en este dispositivo." + "value" : "Identidad" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "%@ pour gérer vos Duck Addresses sur cet appareil." + "value" : "Identité" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "%@ per gestire i tuoi Duck Address su questo dispositivo." + "value" : "Identità" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "%@ om je Duck-adressen op dit apparaat te beheren." + "value" : "Identiteit" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "%@, aby zarządzać adresami Duck Address na tym urządzeniu." + "value" : "Tożsamość" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "%@ para gerires os teus Duck Addresses neste dispositivo." + "value" : "Identidade" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "%@ для управления адресами Duck Address с этого устройства." + "value" : "Учетные данные" } } } }, - "pm.sort.date.ascending" : { - "comment" : "Label for Ascending date sort order", + "pm.new.login" : { + "comment" : "Label for new login title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neueste zuerst" + "value" : "Passwort" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Newest First" + "value" : "Password" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Más reciente primero" + "value" : "Contraseña" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Du plus récent au plus ancien" + "value" : "Mot de passe" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Prima il più recente" + "value" : "Password" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nieuwste eerst" + "value" : "Wachtwoord" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Najpierw najnowsze" + "value" : "Hasło" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mais recente primeiro" + "value" : "Palavra-passe" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "От новых к старым" + "value" : "Пароль" } } } }, - "pm.sort.date.descending" : { - "comment" : "Label for Descending date sort order", + "pm.new.note" : { + "comment" : "Label for new note title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Älteste zuerst" + "value" : "Hinweis" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Oldest First" + "value" : "Note" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Más antiguo primero" + "value" : "Nota" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Du plus ancien au plus récent" + "value" : "Note" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Prima il meno recente" + "value" : "Nota" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Oudste eerst" + "value" : "Notitie" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Najpierw najstarsze" + "value" : "Notatka" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mais antigo primeiro" + "value" : "Nota" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "От старых к новым" + "value" : "Примечание" } } } }, - "pm.sort.parameter.date-created" : { - "comment" : "Label for Date Created sort parameter", + "pm.note" : { + "comment" : "Label for note title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Erstellungsdatum" + "value" : "Hinweis" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Date Created" + "value" : "Note" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Fecha de creación" + "value" : "Nota" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Date de création" + "value" : "Note" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Data di creazione" + "value" : "Nota" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Datum aangemaakt" + "value" : "Opmerking" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Data utworzenia" + "value" : "Notatka" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Data de criação" + "value" : "Nota" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "По дате создания" + "value" : "Примечание" } } } }, - "pm.sort.parameter.date-modified" : { - "comment" : "Label for Date Modified sort parameter", + "pm.note.empty" : { + "comment" : "Label for empty note title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Änderungsdatum" + "value" : "Leerer Hinweis" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Date Modified" + "value" : "Empty note" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Fecha de modificación" + "value" : "Nota vacía" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Date de modification" + "value" : "Note vide" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Data modificata" + "value" : "Nota vuota" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Datum gewijzigd" + "value" : "Lege notitie" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Data modyfikacji" + "value" : "Pusta notatka" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Data de modificação" + "value" : "Nota vazia" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "По дате изменения" + "value" : "Пустое примечание" } } } }, - "pm.sort.parameter.title" : { - "comment" : "Label for Title sort parameter", + "pm.notes" : { + "comment" : "Label for notes edit field", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Titel" + "value" : "Notizen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Title" + "value" : "Notes" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Título" + "value" : "Notas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Titre" + "value" : "Notes" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Titolo" + "value" : "Note" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Titel" + "value" : "Opmerkingen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Tytuł" + "value" : "Uwagi" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Título" + "value" : "Notas" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Название" + "value" : "Примечания" } } } }, - "pm.sort.string.ascending" : { - "comment" : "Label for Ascending string sort order", + "pm.password" : { + "comment" : "Label for password edit field", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Alphabetisch" + "value" : "Passwort" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Alphabetically" + "value" : "Password" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "En orden alfabético" + "value" : "Contraseña" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Par ordre alphabétique" + "value" : "Mot de passe" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Alfabeticamente" + "value" : "Password" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Alfabetisch" + "value" : "Wachtwoord" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Alfabetycznie" + "value" : "Hasło" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Por ordem alfabética" + "value" : "Palavra-passe" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "В алфавитном порядке" + "value" : "Пароль" } } } }, - "pm.sort.string.descending" : { - "comment" : "Label for Descending string sort order", + "pm.phone-number" : { + "comment" : "Label for phone number title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Alphabetisch rückwärts" + "value" : "Telefonnummer" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Reverse Alphabetically" + "value" : "Phone Number" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "En orden alfabético inverso" + "value" : "Número de teléfono" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Dans le sens inverse de l'alphabet" + "value" : "Numéro de téléphone" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Inverti l'ordine alfabetico" + "value" : "Numero di telefono" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Alfabetisch omdraaien" + "value" : "Telefoonnummer" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Alfabetycznie od końca" + "value" : "Numer telefonu" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Inverter a ordem alfabética" + "value" : "Número de telefone" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "В обратном алфавитном порядке" + "value" : "Номер телефона" } } } }, - "pm.update-credentials.title" : { - "comment" : "Title for the Update Credentials popover", + "pm.private.email.mesage.activate.confirm.content" : { + "comment" : "Text for the confirmation message displayed when a user tries activate a Private Email Address", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwort aktualisieren?" + "value" : "E-Mails, die an %@ gesendet werden, werden wieder an deinen Posteingang weitergeleitet." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Update password?" + "value" : "Emails sent to %@ will again be forwarded to your inbox." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿Actualizar contraseña?" + "value" : "Los correos electrónicos enviados a %@ volverán a reenviarse a tu bandeja de entrada." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Modifier le mot de passe ?" + "value" : "Les e-mails envoyés à %@ seront à nouveau transférés vers votre boîte de réception." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiornare password?" + "value" : "Le e-mail inviate a %@ saranno nuovamente inoltrate alla tua casella di posta." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoord bijwerken?" + "value" : "E-mails die naar %@ worden gestuurd, worden opnieuw doorgestuurd naar je inbox." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zaktualizować hasło?" + "value" : "Wiadomości e-mail wysłane do %@ będą ponownie przekazywane do Twojej skrzynki odbiorczej." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Atualizar palavra-passe?" + "value" : "Os e-mails enviados para %@ serão encaminhados para a tua caixa de entrada." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Обновить пароль?" + "value" : "Электронные письма, отправленные на адрес %@, снова будут пересылаться на ваш почтовый ящик." } } } }, - "pm.username" : { - "comment" : "Label for username edit field", + "pm.private.email.mesage.activate.confirm.title" : { + "comment" : "Title for the confirmation message displayed when a user tries activate a Private Email Address", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Benutzername" + "value" : "Private Duck Address reaktivieren?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Username" + "value" : "Reactivate Private Duck Address?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Nombre de usuario" + "value" : "¿Reactivar la Duck Address privada?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nom d'utilisateur" + "value" : "Réactiver la Duck Address privée ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nome utente" + "value" : "Riattivare Duck Address privato?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Gebruikersnaam" + "value" : "Privé-Duck Address opnieuw activeren?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nazwa użytkownika" + "value" : "Ponownie aktywować prywatny adres Duck Address?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nome de utilizador" + "value" : "Reativar Duck Address privado?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Имя пользователя" + "value" : "Вновь активировать приватный адрес Duck Address?" } } } }, - "pm.website" : { - "comment" : "Label for website edit field", + "pm.private.email.mesage.active" : { + "comment" : "Mesasage displayed when a private email address is active", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "URL der Website" + "value" : "Duck Address aktiv" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Website URL" + "value" : "Duck Address Active" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "URL del sitio web" + "value" : "Duck Address activa" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "URL du site Web" + "value" : "Duck Address active" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "URL del sito Web" + "value" : "Duck Address attivo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "URL van de website" + "value" : "Actief Duck Address" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Adres URL witryny" + "value" : "Duck Address aktywny" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "URL do site" + "value" : "Duck Address ativo" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Адрес сайта" + "value" : "Адрес Duck Address активирован" } } } }, - "pm.year" : { - "comment" : "Label for Year title", + "pm.private.email.mesage.deactivate.confirm.content" : { + "comment" : "Text for the confirmation message displayed when a user tries deactivate a Private Email Address", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Jahr" + "value" : "E-Mails, die an %@ gesendet werden, werden nicht mehr an deinen Posteingang weitergeleitet." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Year" + "value" : "Emails sent to %@ will no longer be forwarded to your inbox." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Año" + "value" : "Los correos electrónicos electrónicos enviados a %@ ya no se se reenviarán a tu bandeja de entrada." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Année" + "value" : "Les e-mails envoyés à %@ ne seront plus transférés vers votre boîte de réception." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Anno" + "value" : "Le e-mail inviate a %@ non saranno più inoltrate alla tua casella di posta in arrivo." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Jaar" + "value" : "E-mails die naar %@ worden gestuurd, worden niet meer doorgestuurd naar je inbox." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Rok" + "value" : "Wiadomości e-mail wysłane do %@ nie będą już przekazywane do Twojej skrzynki odbiorczej." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ano" + "value" : "Os e-mails enviados para %@ já não serão encaminhados para a tua caixa de entrada." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Год" + "value" : "Электронные письма, отправленные на адрес %@, не будут пересылаться на ваш почтовый ящик." } } } }, - "preferences-homepage-address" : { - "comment" : "Homepage address field label", + "pm.private.email.mesage.deactivate.confirm.title" : { + "comment" : "Title for the confirmation message displayed when a user tries deactivate a Private Email Address", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Adresse:" + "value" : "Private Duck Address deaktivieren?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Address:" + "value" : "Deactivate Private Duck Address?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Dirección:" + "value" : "¿Desactivar la Duck Address privada?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Adresse :" + "value" : "Désactiver la Duck Address privée ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Indirizzo:" + "value" : "Disattivare Duck Address privato?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Adres:" + "value" : "Privé-Duck Address deactiveren?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Adres:" + "value" : "Dezaktywować prywatny adres Duck Address?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Endereço:" + "value" : "Desativar Duck Address privado?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Адрес:" + "value" : "Деактивировать приватный адрес Duck Address?" } } } }, - "preferences-homepage-customPage" : { - "comment" : "Option to control Specific Home Page", + "pm.private.email.mesage.error" : { + "comment" : "Mesasage displayed when a user tries to manage a private email address but the service is not available, returns an error or network is down", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bestimmte Seite" + "value" : "Die Verwaltung dieser Adresse ist vorübergehend nicht möglich." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Specific page" + "value" : "Management of this address is temporarily unavailable." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Página específica" + "value" : "La gestión de esta dirección no está disponible temporalmente." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Page spécifique" + "value" : "La gestion de cette adresse est temporairement indisponible." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Pagina specifica" + "value" : "La gestione di questo indirizzo non è al momento disponibile." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Specifieke pagina" + "value" : "Beheren van dit adres is tijdelijk niet beschikbaar." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Określona strona" + "value" : "Zarządzanie tym adresem jest chwilowo niedostępne." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Página específica" + "value" : "A gestão deste endereço está temporariamente indisponível." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Конкретная страница" + "value" : "Управление этим адресом временно недоступно." } } } }, - "preferences-homepage-newTab" : { - "comment" : "Option to open a new tab", + "pm.private.email.mesage.inactive" : { + "comment" : "Mesasage displayed when a private email address is inactive", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neue Tab-Seite" + "value" : "Duck Address deaktiviert" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "New Tab page" + "value" : "Duck Address Deactivated" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Página de nueva pestaña" + "value" : "Duck Address desactivada" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nouvelle page d'onglet" + "value" : "Duck Address désactivée" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Pagina della nuova scheda" + "value" : "Duck Address disattivato" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nieuwe tabbladpagina" + "value" : "Gedeactiveerd Duck Address" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Strona nowej karty" + "value" : "Duck Address dezaktywowany" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nova página de separador" + "value" : "Duck Address desativado" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Страница новой вкладки" + "value" : "Адрес Duck Address деактивирован" } } } }, - "preferences-homepage-set-homePage" : { - "comment" : "Set Homepage dialog title", + "pm.removed.duck.address.button" : { + "comment" : "Button text for the alert dialog telling the user an updated username is no longer a private email address", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Startseite festlegen" + "value" : "Verstanden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Set Homepage" + "value" : "Got it" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Configurar página de inicio" + "value" : "Entendido" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Définir la page d'accueil" + "value" : "J'ai compris" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Imposta la homepage" + "value" : "Ho capito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Startpagina instellen" + "value" : "Ik snap het" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ustaw stronę główną" + "value" : "Rozumiem" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Definir página inicial" + "value" : "Entendi" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Выбор стартовой страницы" + "value" : "Понятно" } } } }, - "preferences-homepage-set-page" : { - "comment" : "Option to control the Specific Page", + "pm.removed.duck.address.content" : { + "comment" : "Content for the alert dialog telling the user an updated username is no longer a private email address", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Seite festlegen …" + "value" : "Du kannst diese Duck Address weiterhin über die E-Mails in deinem persönlichen Posteingang verwalten." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Set Page…" + "value" : "You can still manage this Duck Address from emails received from it in your personal inbox." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Configurar página…" + "value" : "Puedes gestionar esta Duck Address desde los correos electrónicos recibidos en tu bandeja de entrada personal." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Définir la page…" + "value" : "Vous pouvez toujours gérer cette Duck Address à partir des e-mails reçus de sa part dans votre boîte de réception personnelle." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Imposta pagina…" + "value" : "Puoi comunque gestire questo Duck Address dalle e-mail da esso ricevute nella tua casella di posta personale." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Pagina instellen ..." + "value" : "Je kunt dit Duck Address nog steeds beheren via e-mails die je ervan ontvangt in je persoonlijke inbox." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ustaw stronę…" + "value" : "Nadal możesz zarządzać adresem Duck Address z wiadomości e-mail otrzymanych z tego adresu w swojej osobistej skrzynce odbiorczej." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Definir página…" + "value" : "Ainda podes gerir este Duck Address a partir dos e-mails recebidos deste endereço na tua caixa de entrada pessoal." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Назначить страницу..." + "value" : "Вы по-прежнему можете управлять этим адресом Duck Address через поступившие на него письма в своем почтовом ящике." } } } }, - "preferences-homepage.description" : { - "comment" : "Homepage behavior description", + "pm.removed.duck.address.title" : { + "comment" : "Title for the alert dialog telling the user an updated username is no longer a private email address", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Wenn du nach Hause navigierst oder neue Fenster öffnest." + "value" : "Benutzername von Private Duck Address wurde entfernt" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "When navigating home or opening new windows." + "value" : "Private Duck Address username was removed" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Al navegar por la página de inicio o abrir nuevas ventanas." + "value" : "Se ha eliminado el nombre de usuario de la Duck Address privada" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Lors du retour à l'accueil ou lors de l'ouverture de nouvelles fenêtres." + "value" : "Le nom d'utilisateur de la Duck Address privée a été supprimé" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Quando navighi nella home o apri nuove finestre." + "value" : "Il nome utente Private Duck Address è stato rimosso" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wanneer je naar de startpagina surft of nieuwe vensters opent." + "value" : "De persoonlijke gebruikersnaam voor het Duck Address is verwijderd" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Podczas przechodzenia na stronę główną lub otwierania nowych okien." + "value" : "Nazwa użytkownika prywatnego adresu Duck Address została usunięta" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ao navegar na página inicial ou ao abrir novas janelas." + "value" : "O nome de utilizador privado do Duck Address foi removido" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "При переходе на стартовую страницу или открытии нового окна." + "value" : "Приватное имя пользователя Duck Address удалено" } } } }, - "preferences-homepage.title" : { - "comment" : "Title for Homepage section in settings", + "pm.save" : { + "comment" : "Save button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Startseite" + "value" : "Speichern" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Homepage" + "value" : "Save" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Página de inicio" + "value" : "Guardar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Page d'accueil" + "value" : "Enregistrer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Homepage" + "value" : "Salva" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Startpagina" + "value" : "Opslaan" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Strona główna" + "value" : "Zapisz" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Página inicial" + "value" : "Guardar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Стартовая страница" + "value" : "Сохранить" } } } }, - "preferences-tabs.new.tab.position.title" : { - "comment" : "Title for new tab positioning", + "pm.save-credentials.editable.title" : { + "comment" : "Title for the editable Save Credentials popover", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Beim Erstellen eines neuen Tabs" + "value" : "Passwort in DuckDuckGo speichern?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "When creating a new tab" + "value" : "Save password in DuckDuckGo?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Al crear una nueva pestaña" + "value" : "¿Guardar contraseña en DuckDuckGo?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Lors de la création d'un nouvel onglet" + "value" : "Enregistrer le mot de passe dans DuckDuckGo ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Quando si crea una nuova scheda" + "value" : "Salvare la password in DuckDuckGo?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bij het maken van een nieuw tabblad" + "value" : "Wachtwoord opslaan in DuckDuckGo?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Podczas tworzenia nowej karty" + "value" : "Zapisać hasło w DuckDuckGo?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ao criar um novo separador" + "value" : "Guardar palavra-passe no DuckDuckGo?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "При создании новой вкладки" + "value" : "Сохранить пароль в DuckDuckGo?" } } } }, - "preferences-tabs.prefer.new.tabs.to.windows" : { - "comment" : "Option to prefer opening new tabs instead of windows when opening links", - "extractionState" : "extracted_with_value", + "pm.save-credentials.non-editable.title" : { + "comment" : "Title for the non-editable Save Credentials popover", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Links nach Möglichkeit in neuen Tabs statt in neuen Fenstern öffnen" + "value" : "Neues Passwort gespeichert" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open links in new tabs instead of new windows whenever possible" + "value" : "New password saved" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir enlaces en nuevas pestañas en lugar de nuevas ventanas siempre que sea posible" + "value" : "Nueva contraseña guardada" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir les liens dans de nouveaux onglets plutôt que dans de nouvelles fenêtres si possible" + "value" : "Nouveau mot de passe enregistré" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri i collegamenti in nuove schede anziché in nuove finestre quando possibile" + "value" : "Nuova password salvata" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Links waar mogelijk openen in nieuwe tabbladen in plaats van in nieuwe vensters" + "value" : "Nieuw wachtwoord opgeslagen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwieraj linki w nowych kartach zamiast w nowych oknach, gdy tylko jest to możliwe" + "value" : "Zapisano nowe hasło" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir links em separadores novos em vez de novas janelas sempre que possível" + "value" : "Nova palavra-passe guardada" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "По возможности открывать ссылки в новых вкладках, а не окнах" + "value" : "Новый пароль сохранен" } } } }, - "preferences-tabs.switch.tab.when.opened" : { - "comment" : "Option to switch to a new tab/window when it is opened", - "extractionState" : "extracted_with_value", + "pm.save-credentials.security.info" : { + "comment" : "Info message for the save credentials dialog", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Beim Öffnen von Links sofort zu einem neuen Tab oder Fenster wechseln" + "value" : "Passwörter sind verschlüsselt. Niemand außer dir kann sie sehen, nicht einmal wir. [Mehr erfahren](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" } }, "en" : { "stringUnit" : { - "state" : "new", - "value" : "When opening links, switch to the new tab or window immediately" + "state" : "translated", + "value" : "Passwords are encrypted. Nobody but you can see them, not even us. [Learn More](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Al abrir enlaces, cambiar a la nueva pestaña o ventana inmediatamente" + "value" : "Las contraseñas están cifradas. Nadie más que tú puede verlas, ni siquiera nosotros. [Más información](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "À l'ouverture des liens, basculer immédiatement sur le nouvel onglet ou la nouvelle fenêtre" + "value" : "Les mots de passe sont cryptés. Personne d'autre que vous ne peut les voir, pas même nous. [En savoir plus](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Quando apri i collegamenti, passa immediatamente alla nuova scheda o finestra" + "value" : "Le password sono crittografate. Nessuno tranne te può vederle, nemmeno noi. [Scopri di più](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Meteen overschakelen naar het nieuwe tabblad of venster bij het openen van links" + "value" : "Wachtwoorden worden versleuteld. Niemand anders dan jij kunt ze zien, zelfs wij niet. [Meer informatie](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwierając linki, natychmiast przełącz na nową kartę lub nowe okno" + "value" : "Hasła są szyfrowane. Nikt poza Tobą ich nie widzi, nawet my. [Więcek informacji](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ao abrir links, mudar imediatamente para o novo separador ou janela" + "value" : "As palavras-passe estão encriptadas. Ninguém além de ti pode vê-las, nem mesmo nós. [Sabe mais](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "При открытии ссылки сразу переключаться на ее вкладку или окно" + "value" : "Пароли подвергаются шифрованию. Никто, кроме вас, их не увидит. Даже мы. [Learn More](https://duckduckgo.com/duckduckgo-help-pages/sync-and-backup/password-manager-security/)" } } } }, - "preferences-tabs.title" : { - "comment" : "Title for tabs section in settings", + "pm.save-credentials.security.info.autolock.off" : { + "comment" : "Info message for the save credentials dialog when the autolock feature is off", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Tabs" + "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Tabs" + "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Pestañas" + "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Onglets" + "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Schede" + "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Tabbladen" + "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Karty" + "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Separadores" + "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Вкладки" + "value" : "Passwords are encrypted. We recommend setting up Auto-lock to keep your passwords even more secure. [Go to Settings](duck://settings/autofill)" } } } }, - "preferences.about" : { - "comment" : "Title of the option to show the About screen", + "pm.signin.to.manage" : { + "comment" : "Message displayed to the user when they are logged out of Email protection.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Über" + "value" : "%@, um deine Duck Addresses auf diesem Gerät zu verwalten." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "About" + "value" : "%@ to manage your Duck Addresses on this device." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Acerca de" + "value" : "%@ para gestionar tus Duck Addresses en este dispositivo." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "À propos" + "value" : "%@ pour gérer vos Duck Addresses sur cet appareil." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Informazioni" + "value" : "%@ per gestire i tuoi Duck Address su questo dispositivo." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Over" + "value" : "%@ om je Duck-adressen op dit apparaat te beheren." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Informacje" + "value" : "%@, aby zarządzać adresami Duck Address na tym urządzeniu." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Acerca de" + "value" : "%@ para gerires os teus Duck Addresses neste dispositivo." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "О нас" + "value" : "%@ для управления адресами Duck Address с этого устройства." } } } }, - "preferences.about.about-duckduckgo" : { - "comment" : "About screen", + "pm.sort.date.ascending" : { + "comment" : "Label for Ascending date sort order", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Über DuckDuckGo" + "value" : "Neueste zuerst" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "About DuckDuckGo" + "value" : "Newest First" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Acerca de DuckDuckGo" + "value" : "Más reciente primero" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "À propos de DuckDuckGo" + "value" : "Du plus récent au plus ancien" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Info su DuckDuckGo" + "value" : "Prima il più recente" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Over DuckDuckGo" + "value" : "Nieuwste eerst" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "O DuckDuckGo" + "value" : "Najpierw najnowsze" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sobre o DuckDuckGo" + "value" : "Mais recente primeiro" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "О приложении DuckDuckGo" + "value" : "От новых к старым" } } } }, - "preferences.about.duckduckgo-tagline" : { - "comment" : "About screen", + "pm.sort.date.descending" : { + "comment" : "Label for Descending date sort order", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Dein Schutz, unsere Priorität." + "value" : "Älteste zuerst" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Your protection, our priority." + "value" : "Oldest First" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Tu protección, nuestra prioridad." + "value" : "Más antiguo primero" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Votre protection, notre priorité." + "value" : "Du plus ancien au plus récent" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "La tua protezione, la nostra priorità." + "value" : "Prima il meno recente" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Jouw bescherming, onze prioriteit." + "value" : "Oudste eerst" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Twoje bezpieczeństwo jest naszym priorytetem." + "value" : "Najpierw najstarsze" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "A tua proteção, a nossa prioridade." + "value" : "Mais antigo primeiro" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Ваша защита — наш приоритет." + "value" : "От старых к новым" } } } }, - "preferences.about.more-at" : { - "comment" : "Link to the about page", + "pm.sort.parameter.date-created" : { + "comment" : "Label for Date Created sort parameter", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Mehr bei %@" + "value" : "Erstellungsdatum" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "More at %@" + "value" : "Date Created" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Más en %@" + "value" : "Fecha de creación" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Plus sur %@" + "value" : "Date de création" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ulteriori informazioni su %@" + "value" : "Data di creazione" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Meer op % @" + "value" : "Datum aangemaakt" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Więcej na %@" + "value" : "Data utworzenia" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mais em %@" + "value" : "Data de criação" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Подробности: %@" + "value" : "По дате создания" } } } }, - "preferences.about.privacy-policy" : { - "comment" : "Link to privacy policy page", + "pm.sort.parameter.date-modified" : { + "comment" : "Label for Date Modified sort parameter", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Datenschutzrichtlinie" + "value" : "Änderungsdatum" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Privacy Policy" + "value" : "Date Modified" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Política de privacidad" + "value" : "Fecha de modificación" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Politique de confidentialité" + "value" : "Date de modification" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Privacy policy" + "value" : "Data modificata" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Privacybeleid" + "value" : "Datum gewijzigd" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Polityka prywatności" + "value" : "Data modyfikacji" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Política de Privacidade" + "value" : "Data de modificação" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Политика конфиденциальности" + "value" : "По дате изменения" } } } }, - "preferences.about.privacy-simplified" : { - "comment" : "About screen", - "extractionState" : "stale", + "pm.sort.parameter.title" : { + "comment" : "Label for Title sort parameter", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Datenschutz leicht gemacht." + "value" : "Titel" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Privacy, simplified." + "value" : "Title" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Privacidad, simplificada." + "value" : "Título" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "La confidentialité, simplifiée." + "value" : "Titre" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "La privacy, semplificata." + "value" : "Titolo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Privacy, vereenvoudigd." + "value" : "Titel" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Prywatność — jeszcze prostsza." + "value" : "Tytuł" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Privacidade, simplificada." + "value" : "Título" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Максимум конфиденциальности, минимум усилий." + "value" : "Название" } } } }, - "preferences.about.send-feedback" : { - "comment" : "Feedback button in the about preferences page", + "pm.sort.string.ascending" : { + "comment" : "Label for Ascending string sort order", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Rückmeldung senden" + "value" : "Alphabetisch" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Send Feedback" + "value" : "Alphabetically" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Enviar comentarios" + "value" : "En orden alfabético" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Envoyer vos remarques" + "value" : "Par ordre alphabétique" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Invia feedback" + "value" : "Alfabeticamente" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Verstuur feedback" + "value" : "Alfabetisch" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyślij opinię" + "value" : "Alfabetycznie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Enviar comentário" + "value" : "Por ordem alfabética" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Отправить отзыв" + "value" : "В алфавитном порядке" } } } }, - "preferences.about.unsupported-device-info1" : { - "comment" : "This string represents a message informing the user that DuckDuckGo is no longer providing browser updates for their version of macOS", + "pm.sort.string.descending" : { + "comment" : "Label for Descending string sort order", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo bietet keine Browser-Updates mehr für deine Version von macOS an." + "value" : "Alphabetisch rückwärts" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "DuckDuckGo is no longer providing browser updates for your version of macOS." + "value" : "Reverse Alphabetically" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo ya no proporciona actualizaciones del navegador para tu versión de macOS." + "value" : "En orden alfabético inverso" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo ne propose plus de mises à jour de navigateur pour votre version de macOS." + "value" : "Dans le sens inverse de l'alphabet" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo non fornisce più aggiornamenti del browser per la tua versione di macOS." + "value" : "Inverti l'ordine alfabetico" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo biedt geen browserupdates meer voor je versie van macOS." + "value" : "Alfabetisch omdraaien" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo już nie udostępnia aktualizacji przeglądarki dla Twojej wersji systemu macOS." + "value" : "Alfabetycznie od końca" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O DuckDuckGo já não fornece atualizações para a tua versão do macOS." + "value" : "Inverter a ordem alfabética" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сервис DuckDuckGo перестал выпускать обновления браузера для вашей версии macOS." + "value" : "В обратном алфавитном порядке" } } } }, - "preferences.about.unsupported-device-info2" : { - "comment" : "Copy in section that tells the user to update their macOS version since their current version is unsupported", + "pm.update-credentials.title" : { + "comment" : "Title for the Update Credentials popover", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bitte aktualisiere auf macOS %@ oder höher, um die neueste Version von DuckDuckGo zu nutzen. Du kannst auch deine aktuelle Version des Browsers weiter benutzen, aber sie wird keine weiteren Updates erhalten." + "value" : "Passwort aktualisieren?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Please update to macOS %@ or later to use the most recent version of DuckDuckGo. You can also keep using your current version of the browser, but it will not receive further updates." + "value" : "Update password?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Actualiza a macOS %@ o posterior para usar la versión más reciente de DuckDuckGo. También puedes seguir utilizando tu versión actual del navegador, pero no recibirás más actualizaciones." + "value" : "¿Actualizar contraseña?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Veuillez installer macOS %@ ou une version ultérieure pour utiliser la version la plus récente de DuckDuckGo. Vous pouvez également continuer à utiliser votre version actuelle du navigateur, mais elle ne recevra plus de mises à jour." + "value" : "Modifier le mot de passe ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiorna a macOS %@ o a una versione successiva per utilizzare la versione più recente di DuckDuckGo. Puoi anche continuare a utilizzare la versione attuale del browser, ma non riceverai ulteriori aggiornamenti." + "value" : "Aggiornare password?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Update naar macOS %@ of hoger om de meest recente versie van DuckDuckGo te gebruiken. Je kunt ook de huidige versie van de browser blijven gebruiken, maar die wordt niet verder bijgewerkt." + "value" : "Wachtwoord bijwerken?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zaktualizuj system macOS do wersji %@ lub nowszej, aby móc korzystać z najnowszej wersji DuckDuckGo. Możesz też nadal korzystać z obecnej wersji przeglądarki, ale nie będziesz otrzymywać dalszych aktualizacji." + "value" : "Zaktualizować hasło?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Atualiza para o macOS %@ ou posterior para utilizares a versão mais recente do DuckDuckGo. Também podes continuar a utilizar a tua versão atual do navegador, mas esta não receberá mais atualizações." + "value" : "Atualizar palavra-passe?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Чтобы пользоваться новейшей версией DuckDuckGo, обновите операционную систему до macOS %@ или более поздней версии. Вы также можете продолжить пользоваться текущей версией браузера – просто она больше не будет обновляться." + "value" : "Обновить пароль?" } } } }, - "preferences.accessibility" : { - "comment" : "Title of the option to show the Accessibility browser preferences", + "pm.username" : { + "comment" : "Label for username edit field", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Barrierefreiheit" + "value" : "Benutzername" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Accessibility" + "value" : "Username" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Accesibilidad" + "value" : "Nombre de usuario" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Accessibilité" + "value" : "Nom d'utilisateur" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Accessibilità" + "value" : "Nome utente" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Toegankelijkheid" + "value" : "Gebruikersnaam" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dostępność" + "value" : "Nazwa użytkownika" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Acessibilidade" + "value" : "Nome de utilizador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Универсальный доступ" + "value" : "Имя пользователя" } } } }, - "preferences.add-to-dock" : { - "comment" : "Action button to add the app to the Dock", + "pm.website" : { + "comment" : "Label for website edit field", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zum Dock hinzufügen …" + "value" : "URL der Website" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Add to Dock…" + "value" : "Website URL" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Añadir al Dock…" + "value" : "URL del sitio web" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ajouter au Dock…" + "value" : "URL du site Web" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiungi al dock…" + "value" : "URL del sito Web" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "App toevoegen aan je dock…" + "value" : "URL van de website" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dodaj do Docka…" + "value" : "Adres URL witryny" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Adicionar à Dock…" + "value" : "URL do site" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Добавить на док-панель…" + "value" : "Адрес сайта" } } } }, - "preferences.ai-chat" : { - "comment" : "Title of the option to show AI Chat in preferences", + "pm.year" : { + "comment" : "Label for Year title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "KI-Chat" + "value" : "Jahr" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "AI Chat" + "value" : "Year" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Chat de IA" + "value" : "Año" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Chat IA" + "value" : "Année" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Chat IA" + "value" : "Anno" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "AI-chat" + "value" : "Jaar" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Czat AI" + "value" : "Rok" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Chat com IA" + "value" : "Ano" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Чат с ИИ" + "value" : "Год" } } } }, - "preferences.always-on" : { - "comment" : "Status indicator of a browser privacy protection feature.", + "ppro.feedback-form.button.cancel" : { + "comment" : "Title for the Cancel button of the PPro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Immer aktiviert" + "value" : "Abbrechen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Always On" + "value" : "Cancel" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Siempre activado" + "value" : "Cancelar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Toujours activé" + "value" : "Annuler" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sempre attiva" + "value" : "Annulla" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Altijd aan" + "value" : "Annuleren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zawsze włączone" + "value" : "Anuluj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sempre ligada" + "value" : "Cancelar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Всегда включено" + "value" : "Отменить" } } } }, - "preferences.appearance" : { - "comment" : "Title of the option to show the Appearance preferences", + "ppro.feedback-form.button.done" : { + "comment" : "Title for the Done button of the PPro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Aussehen" + "value" : "Fertig" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Appearance" + "value" : "Done" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Apariencia" + "value" : "Hecho" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Apparence" + "value" : "Terminé" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aspetto" + "value" : "Fatto" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Uiterlijk" + "value" : "Klaar" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wygląd" + "value" : "Gotowe" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Aparência" + "value" : "Feito" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Внешний вид" + "value" : "Готово" } } } }, - "preferences.appearance.address-bar" : { - "comment" : "Theme preferences", + "ppro.feedback-form.button.submit" : { + "comment" : "Title for the Submit button of the PPro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Adresszeile" + "value" : "Abschicken" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Address Bar" + "value" : "Submit" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Barra de direcciones" + "value" : "Enviar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Barre d'adresse" + "value" : "Envoyer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Barra degli indirizzi" + "value" : "Invia" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Adresbalk" + "value" : "Verzenden" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pasek adresu" + "value" : "Prześlij" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Barra de endereço" + "value" : "Submeter" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Адресная строка" + "value" : "Отправить" } } } }, - "preferences.appearance.customize-background" : { - "comment" : "Button to open home page background customization options", + "ppro.feedback-form.button.submitting" : { + "comment" : "Title for the Submitting state of the PPro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Hintergrund anpassen" + "value" : "Wird gesendet ..." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Customize Background" + "value" : "Submitting…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Personalizar fondo" + "value" : "Enviando..." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Personnaliser l'arrière-plan" + "value" : "Envoi en cours…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Personalizza sfondo" + "value" : "Invio in corso..." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Achtergrond aanpassen" + "value" : "Bezig met verzenden …" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dostosuj tło" + "value" : "Przesyłanie..." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Personalizar fundo" + "value" : "A enviar…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Настроить фон" + "value" : "Отправка..." } } } }, - "preferences.appearance.show-autocomplete-suggestions" : { - "comment" : "Option to show autocomplete suggestions in the address bar", + "ppro.feedback-form.category.otp" : { + "comment" : "Description for the feedback form when there is an issue with the one-time password", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Vorschläge für die Autovervollständigung" + "value" : "Problem mit dem Einmal-Passwort" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Autocomplete suggestions" + "value" : "Issue with one-time password" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Sugerencias de autocompletado" + "value" : "Problema con la contraseña de un solo uso" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher les suggestions de saisie semi-automatique" + "value" : "Problème lié au mot de passe à usage unique" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra suggerimenti di completamento automatico" + "value" : "Problema con la password monouso" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Suggesties voor automatisch aanvullen weergeven" + "value" : "Probleem met eenmalig wachtwoord" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż sugestie autouzupełniania" + "value" : "Problem z hasłem jednorazowym" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar sugestões de preenchimento automático" + "value" : "Problema com a palavra-passe de utilização única" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать предложения автозаполнения" + "value" : "Проблема с одноразовым паролем" } } } }, - "preferences.appearance.show-full-url" : { - "comment" : "Option to show full URL in the address bar", + "ppro.feedback-form.category.select-category" : { + "comment" : "Title for the category selection state of the feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Vollständige Website-Adresse" + "value" : "EINE KATEGORIE AUSWÄHLEN" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Full website address" + "value" : "Select a category" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Dirección completa del sitio web" + "value" : "SELECCIONA UNA CATEGORÍA" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Adresse complète du site Web" + "value" : "SÉLECTIONNER UNE CATÉGORIE" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Indirizzo completo del sito web" + "value" : "SELEZIONA UNA CATEGORIA" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Volledig websiteadres" + "value" : "SELECTEER EEN CATEGORIE" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pełny adres witryny internetowej" + "value" : "WYBIERZ KATEGORIĘ" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Endereço completo do site" + "value" : "SELECIONA UMA CATEGORIA" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Полный адрес сайта" + "value" : "ВЫБЕРИТЕ КАТЕГОРИЮ" } } } }, - "preferences.appearance.theme" : { - "comment" : "Theme preferences", + "ppro.feedback-form.category.something-else" : { + "comment" : "Description for the feedback form when the user has an issue not categorized in other options", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Design" + "value" : "Etwas anderes" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Theme" + "value" : "Something else" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Tema" + "value" : "Otro problema" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Thème" + "value" : "Autre chose" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Tema" + "value" : "Qualcos'altro" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Thema" + "value" : "Iets anders" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Motyw" + "value" : "Coś innego" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Tema" + "value" : "Outra coisa" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Тема" + "value" : "Что-то другое" } } } }, - "preferences.appearance.theme.dark" : { - "comment" : "In the preferences for themes, the option to select for activating dark mode in the app.", + "ppro.feedback-form.disclaimer" : { + "comment" : "Text for the disclaimer of the PPro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Dunkel" + "value" : "Berichte sind anonym und werden an DuckDuckGo gesendet, um unseren Dienst zu verbessern." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Dark" + "value" : "Reports are anonymous and sent to DuckDuckGo to help improve our service" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Oscuro" + "value" : "Los informes son anónimos y se envían a DuckDuckGo para ayudar a mejorar nuestro servicio" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Sombre" + "value" : "Les rapports sont anonymes et envoyés à DuckDuckGo pour nous aider à améliorer notre service" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Scuro" + "value" : "Le segnalazioni sono anonime e inviate a DuckDuckGo per contribuire a migliorare il nostro servizio" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Donker" + "value" : "Meldingen zijn anoniem en worden naar DuckDuckGo gestuurd om onze service te helpen verbeteren." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ciemny" + "value" : "Zgłoszenia są anonimowe i wysyłane do DuckDuckGo w celu ulepszenia naszych usług" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Escuro" + "value" : "As denúncias são anónimas e enviadas para a DuckDuckGo para ajudar a melhorar o nosso serviço" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Тёмная" + "value" : "Отчеты носят анонимный характер и отправляются в DuckDuckGo для повышения качества услуг." } } } }, - "preferences.appearance.theme.light" : { - "comment" : "In the preferences for themes, the option to select for activating light mode in the app.", + "ppro.feedback-form.email.label" : { + "comment" : "Label for the email field of the PPro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Hell" + "value" : "Gib eine E-Mail-Adresse an, wenn du möchtest, dass wir dich zu diesem Problem kontaktieren (wir können möglicherweise nicht auf alle Anfragen antworten):" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Light" + "value" : "Provide an email if you’d like us to contact you about this issue (we may not be able to respond to all issues):" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Claro" + "value" : "Indica una dirección de correo electrónico si quieres que nos pongamos en contacto contigo en relación con esta incidencia (es posible que no podamos responder a todas las incidencias):" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Clair" + "value" : "Indiquez une adresse e-mail si vous souhaitez que nous vous contactions à propos de ce problème (il se peut que nous ne soyons pas en mesure de répondre à tous les problèmes) :" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Chiaro" + "value" : "Indica un indirizzo e-mail se vuoi che ti contattiamo in merito a questo problema (potremmo non essere in grado di rispondere a tutti i problemi):" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Licht" + "value" : "Geef een e-mailadres op als je wilt dat we contact met je opnemen over dit probleem (het is mogelijk dat we niet op alle problemen kunnen reageren):" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Jasny" + "value" : "Podaj adres e-mail, jeśli wyrażasz zgodę na kontakt w tej sprawie (możemy nie być w stanie odpowiedzieć na wszystkie zgłoszenia):" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Claro" + "value" : "Fornece um e-mail se quiseres que te contactemos sobre este problema (podemos não conseguir responder a todos os problemas):" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Светлая" + "value" : "Укажите адрес эл. почты, если вы хотите, чтобы мы связались с вами по этому вопросу (возможно, мы не ответим на все вопросы):" } } } }, - "preferences.appearance.theme.system" : { - "comment" : "In the preferences for themes, the option to select for use the change the mode based on the system preferences.", + "ppro.feedback-form.email.placeholder" : { + "comment" : "Placeholder for the email field of the PPro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Standard" + "value" : "E-Mail (optional)" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "System" + "value" : "Email (optional)" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Sistema" + "value" : "Correo electrónico (opcional)" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Système" + "value" : "E-mail (facultatif)" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sistema" + "value" : "Email (facoltativo)" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Systeem" + "value" : "E-mailadres (optioneel)" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Systemowy" + "value" : "Adres e-mail (opcjonalnie)" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sistema" + "value" : "E-mail (opcional)" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Тема системы" + "value" : "Электронная почта (необязательно)" } } } }, - "preferences.appearance.zoom-picker" : { - "comment" : "Default page zoom picker title", + "ppro.feedback-form.general-feedback.placeholder" : { + "comment" : "Placeholder for the General Feedback step in the Privacy Pro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Standardmäßiger Seitenzoom" + "value" : "Bitte gib uns dein Feedback:" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Default page zoom" + "value" : "Please give us your feedback:" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Zoom de página predeterminado" + "value" : "Danos tu opinión:" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Zoom par défaut de la page" + "value" : "Veuillez nous faire part de vos commentaires :" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Zoom pagina predefinito" + "value" : "Comunicaci la tua opinione:" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Standaard zoomniveau van de pagina" + "value" : "Geef ons je feedback:" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Domyślne powiększenie strony" + "value" : "Przekaż nam swoją opinię:" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Zoom da página predefinida" + "value" : "Envia-nos o teu feedback:" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Масштаб страницы по умолчанию" + "value" : "Оставьте комментарий здесь:" } } } }, - "preferences.autofill" : { - "comment" : "Show Autofill preferences", + "ppro.feedback-form.request-feature.placeholder" : { + "comment" : "Placeholder for the Feature Request step in the Privacy Pro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwörter" + "value" : "Welche Funktion möchtest du sehen?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Passwords" + "value" : "What feature would you like to see?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Contraseñas" + "value" : "¿Qué función te gustaría ver?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Mots de passe" + "value" : "Quelle fonctionnalité aimeriez-vous voir ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Password" + "value" : "Quale funzionalità vorresti vedere?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoorden" + "value" : "Welke functie wil je zien?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Hasła" + "value" : "Na jakiej funkcji Ci zależy?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Palavras-passe" + "value" : "Que funcionalidade gostarias de ver?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Пароли" + "value" : "Какую функцию вы хотели бы увидеть?" } } } }, - "preferences.autofill-enabled-for" : { - "comment" : "Label presented before the email account in email protection preferences", + "ppro.feedback-form.sending-confirmation.description" : { + "comment" : "Title for the feedback sent view description of the feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Autovervollständigen in diesem Browser aktiviert für:" + "value" : "Dein Feedback hilft uns, Privacy Pro zu verbessern." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Autofill enabled in this browser for:" + "value" : "Your Feedback will help us improve Privacy Pro." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Autocompletar habilitado en este navegador para:" + "value" : "Tus comentarios nos ayudarán a mejorar Privacy Pro." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "La saisie automatique est activée dans ce navigateur pour :" + "value" : "Vos commentaires nous aideront à améliorer Privacy Pro." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Compilazione automatica abilitata in questo browser per:" + "value" : "La tua opinione ci aiuterà a migliorare Privacy Pro." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "'Automatisch aanvullen' is ingeschakeld in deze browser voor:" + "value" : "Jouw feedback helpt ons Privacy Pro te verbeteren." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Autouzupełnianie włączone w tej przeglądarce dla:" + "value" : "Twoja opinia pomoże nam udoskonalić Privacy Pro." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Preenchimento automático ativado neste navegador para:" + "value" : "O teu Feedback ajuda-nos a melhorar o Privacy Pro." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "В этом браузере включено автозаполнение для:" + "value" : "Ваш отзыв поможет нам улучшить тариф Privacy Pro." } } } }, - "preferences.cookie-pop-up-protection" : { - "comment" : "Title of the option to show the Cookie Pop-Up Protection preferences", + "ppro.feedback-form.sending-confirmation.error" : { + "comment" : "Title for the feedback sending error text of the feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Cookie-Pop-up-Schutz" + "value" : "Dein Feedback konnte nicht gesendet werden. Bitte versuche es erneut." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Cookie Pop-Up Protection" + "value" : "We couldn't send your feedback right now, please try again." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Protección contra ventanas emergentes de cookies" + "value" : "No hemos podido enviar tus comentarios ahora mismo, inténtalo de nuevo." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Protection contre les fenêtres contextuelles des cookies" + "value" : "Nous n'avons pas pu envoyer vos commentaires pour le moment ; veuillez réessayer." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Protezione pop-up dei cookie" + "value" : "Non siamo riusciti a inviare il tuo feedback in questo momento, riprova." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bescherming tegen cookiepop-ups" + "value" : "We kunnen je feedback op dit moment niet verzenden. Probeer het opnieuw." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ochrona przed wyskakującymi okienkami dotyczącymi plików cookie" + "value" : "Nie udało się teraz przesłać Twojej opinii, spróbuj ponownie." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Proteção contra pop-ups de cookies" + "value" : "Não foi possível enviar o teu feedback, tenta novamente." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Защита от всплывающих окон куки" + "value" : "Отправить ваш отзыв прямо сейчас не удалось. Повторите попытку." } } } }, - "preferences.data-clearing" : { - "comment" : "Title of the option to show the Data Clearing preferences", + "ppro.feedback-form.sending-confirmation.title" : { + "comment" : "Title for the feedback sent view title of the feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Datenlöschung" + "value" : "Vielen Dank!" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Data Clearing" + "value" : "Thank you!" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Eliminación de datos" + "value" : "¡Gracias!" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Effacement des données" + "value" : "Merci !" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cancellazione dati" + "value" : "Grazie!" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Gegevens wissen" + "value" : "Bedankt!" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Czyszczenie danych" + "value" : "Dziękujemy!" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Limpeza de Dados" + "value" : "Obrigado!" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Очистка данных" + "value" : "Спасибо!" } } } }, - "preferences.default-browser" : { - "comment" : "Title of the option to show the Default Browser Preferences", + "ppro.feedback-form.text-1" : { + "comment" : "Text for the body of the PPro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Standard-Browser" + "value" : "Hast du ein Problem, das in unserem [Hilfecenter](duck://) nicht behandelt wird? Wir wollen auf jeden Fall davon erfahren.\n\nSag uns, worum es geht:" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Default Browser" + "value" : "Found an issue not covered in our [help center](duck://)? We definitely want to know about it.\n\nTell us what's going on:" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Navegador predeterminado" + "value" : "¿Has encontrado una incidencia que no aparece en nuestro [centro de ayuda] (duck://)? Nos interesa mucho saberlo.\n\nCuéntanos qué está pasando:" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Navigateur par défaut" + "value" : "Vous avez rencontré un problème qui n'est pas traité dans notre [centre d'aide](duck://) ? Nous tenons vraiment à savoir de quoi il s'agit.\n\nDites-nous ce qui se passe :" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Browser predefinito" + "value" : "Hai trovato un problema non trattato nel nostro [centro assistenza](duck://)? Ci piacerebbe saperlo.\n\nComunicaci cosa sta succedendo:" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Standaardbrowser" + "value" : "Heb je een probleem gevonden dat niet in ons [helpcentrum](duck://) wordt besproken? We willen er zeker meer over weten.\n\nVertel ons wat er aan de hand is:" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Domyślna przeglądarka" + "value" : "Wystąpił problem, który nie został omówiony w naszym [centrum pomocy](duck://)? Zdecydowanie chcemy o tym wiedzieć.\n\nPowiedz nam, co się dzieje:" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Navegador predefinido" + "value" : "Encontraste um problema que não é abordado no nosso [centro de ajuda](duck://)? Queremos perceber do que se trata.\n\nDiz-nos o que se passa:" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Браузер по умолчанию" + "value" : "Столкнулись с проблемой, которая не затронута в нашем [справочном центре](duck://)? Мы просто обязаны о ней знать.\n\nСообщите, что происходит:" } } } }, - "preferences.default-browser.active" : { - "comment" : "Indicate that the browser is the default", + "ppro.feedback-form.text-2" : { + "comment" : "Text for the body of the PPro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo ist dein Standard-Browser" + "value" : "Zusätzlich zu den in diesem Formular angegebenen Details enthält dein App-Fehlerbericht:" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "DuckDuckGo is your default browser" + "value" : "In addition to the details entered into this form, your app issue report will contain:" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo es tu navegador predeterminado" + "value" : "Además de los detalles introducidos en este formulario, tu informe de problemas de la aplicación contendrá:" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo est votre navigateur par défaut" + "value" : "Outre les renseignements saisis dans ce formulaire, votre rapport sur les problèmes de l'application contiendra les informations suivantes :" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo è il tuo browser predefinito" + "value" : "Oltre ai dettagli inseriti in questo modulo, la segnalazione sui problemi dell'app conterrà le seguenti informazioni:" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo is je standaardbrowser" + "value" : "Naast de gegevens die in dit formulier zijn ingevoerd, bevat je foutrapport:" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo to Twoja domyślna przeglądarka" + "value" : "Oprócz szczegółów wprowadzonych w tym formularzu zgłoszenie problemu z aplikacją będzie zawierać:" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo é o teu navegador predefinido" + "value" : "Para além dos detalhes introduzidos neste formulário, o teu relatório de problemas na aplicação vai incluir:" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo — ваш браузер по умолчанию" + "value" : "Помимо информации, внесенной в эту форму, в отчет войдет следующее:" } } } }, - "preferences.default-browser.button.make-default" : { - "comment" : "represents a prompt message asking the user to make DuckDuckGo their default browser.", + "ppro.feedback-form.text-3" : { + "comment" : "Bullet text for the body of the PPro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo zum Standard machen …" + "value" : "• Ob bestimmte DuckDuckGo-Funktionen aktiviert sind" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Make DuckDuckGo Default…" + "value" : "• Whether specific DuckDuckGo features are enabled" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Establecer DuckDuckGo como predeterminado…" + "value" : "• Si están habilitadas funciones específicas de DuckDuckGo" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Faire de DuckDuckGo votre navigateur par défaut…" + "value" : "• Si des fonctionnalités spécifiques de DuckDuckGo sont actives" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Rendi DuckDuckGo predefinito..." + "value" : "• Comunicherà se specifiche funzioni di DuckDuckGo sono attive" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo instellen als standaardbrowser ..." + "value" : "• Of er specifieke functies in DuckDuckGo zijn ingeschakeld" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ustaw przeglądarkę DuckDuckGo jako domyślną…" + "value" : "• Czy określone funkcje DuckDuckGo są włączone" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Tornar o DuckDuckGo a predefinição…" + "value" : "• Se tens funcionalidades específicas do DuckDuckGo ativas" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Назначить DuckDuckGo браузером по умолчанию..." + "value" : "• сведения о том, были ли активированы конкретные функции DuckDuckGo;" } } } }, - "preferences.default-browser.inactive" : { - "comment" : "Indicate that the browser is not the default", + "ppro.feedback-form.text-4" : { + "comment" : "Bullet text for the body of the PPro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo ist nicht dein Standard-Browser." + "value" : "• Aggregierte DuckDuckGo-App-Diagnose" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "DuckDuckGo is not your default browser." + "value" : "• Aggregate DuckDuckGo app diagnostics" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo no es tu navegador predeterminado." + "value" : "• Diagnósticos agregados de la aplicación DuckDuckGo" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo n'est pas votre navigateur par défaut." + "value" : "• Les diagnostics agrégés de l'application DuckDuckGo" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo non è il tuo browser predefinito." + "value" : "• Aggregherà le diagnostiche dell'app DuckDuckGo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo is niet je standaardbrowser." + "value" : "• Verzamelde diagnostische gegevens voor de DuckDuckGo-app" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo nie jest Twoją domyślną przeglądarką." + "value" : "• Zbiorcze dane diagnostyczne aplikacji DuckDuckGo" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O DuckDuckGo não é o teu navegador predefinido." + "value" : "• Diagnósticos da aplicação DuckDuckGo agregados" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo не является вашим браузером по умолчанию." + "value" : "• обобщенные результаты диагностики приложения DuckDuckGo." } } } }, - "preferences.downloads" : { - "comment" : "Title of the downloads browser preferences", + "ppro.feedback-form.text-5" : { + "comment" : "Text for the body of the PPro feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Downloads" + "value" : "Durch Klicken auf „Absenden“ erkläre ich mich damit einverstanden, dass DuckDuckGo die Informationen in diesem Bericht zur Verbesserung der Funktionen der App verwenden darf." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Downloads" + "value" : "By clicking \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Descargas" + "value" : "Al hacer clic en \"Enviar\", acepto que DuckDuckGo pueda utilizar la información de este informe para mejorar las funciones de la aplicación." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Téléchargements" + "value" : "En cliquant sur « Envoyer », j'accepte que DuckDuckGo puisse utiliser les informations contenues dans ce rapport afin d'améliorer les fonctionnalités de l'application." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Download" + "value" : "Cliccando su \"Invia\" accetto che DuckDuckGo possa usare le informazioni in questo rapporto per migliorare le funzionalità dell'app." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Downloads" + "value" : "Door op 'Verzenden' te klikken, ga ik ermee akkoord dat DuckDuckGo de informatie in dit rapport kan gebruiken om de functies van de app te verbeteren." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pobrane" + "value" : "Klikając opcję „Prześlij”, zgadzam się na wykorzystanie przez DuckDuckGo informacji zawartych w tym zgłoszeniu w celu ulepszenia funkcji aplikacji." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Transferências" + "value" : "Ao clicar em \"Enviar\", concordo que o DuckDuckGo pode utilizar as informações neste relatório para melhorar as funcionalidades da aplicação." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Загрузки" + "value" : "Нажимая кнопку «Отправить», я разрешаю DuckDuckGo использовать данные в этом отчете для улучшения работы приложения." } } } }, - "preferences.duck-player" : { - "comment" : "Title of the option to show the Duck Player browser preferences", + "preferences-homepage-address" : { + "comment" : "Homepage address field label", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Player" + "value" : "Adresse:" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Duck Player" + "value" : "Address:" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Player" + "value" : "Dirección:" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Player" + "value" : "Adresse :" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Player" + "value" : "Indirizzo:" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Player" + "value" : "Adres:" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Player" + "value" : "Adres:" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Duck Player" + "value" : "Endereço:" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Проигрыватель Duck Player" + "value" : "Адрес:" } } } }, - "preferences.duckduckgo-on-other-platforms" : { - "comment" : "Button presented to users to navigate them to our product page which presents all other products for other platforms", + "preferences-homepage-customPage" : { + "comment" : "Option to control Specific Home Page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo auf anderen Plattformen" + "value" : "Bestimmte Seite" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "DuckDuckGo on Other Platforms" + "value" : "Specific page" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo en otras plataformas" + "value" : "Página específica" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo sur d'autres plateformes" + "value" : "Page spécifique" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo su altre piattaforme" + "value" : "Pagina specifica" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo op andere platforms" + "value" : "Specifieke pagina" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo na innych platformach" + "value" : "Określona strona" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo Noutras Plataformas" + "value" : "Página específica" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo для других платформ" + "value" : "Конкретная страница" } } } }, - "preferences.email-protection" : { - "comment" : "Title of the option to show the Email Protection preferences", + "preferences-homepage-newTab" : { + "comment" : "Option to open a new tab", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "E-Mail-Schutz" + "value" : "Neue Tab-Seite" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Email Protection" + "value" : "New Tab page" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Protección del correo electrónico" + "value" : "Página de nueva pestaña" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Protection des e-mails" + "value" : "Nouvelle page d'onglet" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Protezione email" + "value" : "Pagina della nuova scheda" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "E-mailbescherming" + "value" : "Nieuwe tabbladpagina" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ochrona poczty e-mail" + "value" : "Strona nowej karty" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Proteção de e-mail" + "value" : "Nova página de separador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Защита электронной почты" + "value" : "Страница новой вкладки" } } } }, - "preferences.general" : { - "comment" : "Title of the option to show the General preferences", + "preferences-homepage-set-homePage" : { + "comment" : "Set Homepage dialog title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Allgemein" + "value" : "Startseite festlegen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "General" + "value" : "Set Homepage" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "General" + "value" : "Configurar página de inicio" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Général" + "value" : "Définir la page d'accueil" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Generale" + "value" : "Imposta la homepage" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Algemeen" + "value" : "Startpagina instellen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ogólne" + "value" : "Ustaw stronę główną" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Geral" + "value" : "Definir página inicial" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Основные" + "value" : "Выбор стартовой страницы" } } } }, - "preferences.is-added-to-dock" : { - "comment" : "Indicates that the browser is added to the macOS system Dock", + "preferences-homepage-set-page" : { + "comment" : "Option to control the Specific Page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo wird zum Dock hinzugefügt." + "value" : "Seite festlegen …" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "DuckDuckGo is added to the Dock." + "value" : "Set Page…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo se ha añadido al Dock." + "value" : "Configurar página…" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo a été ajouté au Dock." + "value" : "Définir la page…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo è stato aggiunto al dock." + "value" : "Imposta pagina…" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo is toegevoegd aan het Dock." + "value" : "Pagina instellen ..." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przeglądarka DuckDuckGo została dodana do Docka." + "value" : "Ustaw stronę…" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O DuckDuckGo foi adicionado à Dock." + "value" : "Definir página…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Ярлык DuckDuckGo добавлен на док-панель." + "value" : "Назначить страницу..." } } } }, - "preferences.main-settings" : { - "comment" : "Section header in Preferences for main settings", + "preferences-homepage.description" : { + "comment" : "Homepage behavior description", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Haupteinstellungen" + "value" : "Wenn du nach Hause navigierst oder neue Fenster öffnest." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Main Settings" + "value" : "When navigating home or opening new windows." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ajustes principales" + "value" : "Al navegar por la página de inicio o abrir nuevas ventanas." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Réglages principaux" + "value" : "Lors du retour à l'accueil ou lors de l'ouverture de nouvelles fenêtres." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Impostazioni principali" + "value" : "Quando navighi nella home o apri nuove finestre." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Hoofdinstellingen" + "value" : "Wanneer je naar de startpagina surft of nieuwe vensters opent." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ustawienia główne" + "value" : "Podczas przechodzenia na stronę główną lub otwierania nowych okien." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Definições Principais" + "value" : "Ao navegar na página inicial ou ao abrir novas janelas." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Основные настройки" + "value" : "При переходе на стартовую страницу или открытии нового окна." } } } }, - "preferences.not-added-to-dock" : { - "comment" : "Indicate that the browser is not added to macOS system Dock", + "preferences-homepage.title" : { + "comment" : "Title for Homepage section in settings", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo wird nicht zum Dock hinzugefügt." + "value" : "Startseite" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "DuckDuckGo is not added to the Dock." + "value" : "Homepage" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo no se ha añadido al Dock." + "value" : "Página de inicio" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo n'a pas été ajouté au Dock." + "value" : "Page d'accueil" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo non è stato aggiunto al dock." + "value" : "Homepage" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo is niet toegevoegd aan het Dock." + "value" : "Startpagina" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przeglądarka DuckDuckGo nie została dodana do Docka." + "value" : "Strona główna" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O DuckDuckGo não foi adicionado à Dock." + "value" : "Página inicial" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Ярлык DuckDuckGo не добавлен на док-панель." + "value" : "Стартовая страница" } } } }, - "preferences.off" : { - "comment" : "Status indicator of a browser privacy protection feature.", + "preferences-tabs.new.tab.position.title" : { + "comment" : "Title for new tab positioning", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Aus" + "value" : "Beim Erstellen eines neuen Tabs" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Off" + "value" : "When creating a new tab" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desactivado" + "value" : "Al crear una nueva pestaña" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Désactivé" + "value" : "Lors de la création d'un nouvel onglet" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Disattivato" + "value" : "Quando si crea una nuova scheda" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Uit" + "value" : "Bij het maken van een nieuw tabblad" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wył." + "value" : "Podczas tworzenia nowej karty" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Desligado" + "value" : "Ao criar um novo separador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Выкл." + "value" : "При создании новой вкладки" } } } }, - "preferences.on" : { - "comment" : "Status indicator of a browser privacy protection feature.", + "preferences-tabs.prefer.new.tabs.to.windows" : { + "comment" : "Option to prefer opening new tabs instead of windows when opening links", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "An" + "value" : "Links nach Möglichkeit in neuen Tabs statt in neuen Fenstern öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "On" + "value" : "Open links in new tabs instead of new windows whenever possible" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Activado" + "value" : "Abrir enlaces en nuevas pestañas en lugar de nuevas ventanas siempre que sea posible" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Activé" + "value" : "Ouvrir les liens dans de nouveaux onglets plutôt que dans de nouvelles fenêtres si possible" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "On" + "value" : "Apri i collegamenti in nuove schede anziché in nuove finestre quando possibile" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Aan" + "value" : "Links waar mogelijk openen in nieuwe tabbladen in plaats van in nieuwe vensters" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wł." + "value" : "Otwieraj linki w nowych kartach zamiast w nowych oknach, gdy tylko jest to możliwe" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ligado" + "value" : "Abrir links em separadores novos em vez de novas janelas sempre que possível" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Вкл." + "value" : "По возможности открывать ссылки в новых вкладках, а не окнах" } } } }, - "preferences.on-startup" : { - "comment" : "Name of the preferences section related to app startup", + "preferences-tabs.switch.tab.when.opened" : { + "comment" : "Option to switch to a new tab/window when it is opened", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Beim Start" + "value" : "Beim Öffnen von Links sofort zu einem neuen Tab oder Fenster wechseln" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "On Startup" + "value" : "When opening links, switch to the new tab or window immediately" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Al iniciar" + "value" : "Al abrir enlaces, cambiar a la nueva pestaña o ventana inmediatamente" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Au démarrage" + "value" : "À l'ouverture des liens, basculer immédiatement sur le nouvel onglet ou la nouvelle fenêtre" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "All'avvio" + "value" : "Quando apri i collegamenti, passa immediatamente alla nuova scheda o finestra" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bij opstarten" + "value" : "Meteen overschakelen naar het nieuwe tabblad of venster bij het openen van links" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przy uruchomieniu" + "value" : "Otwierając linki, natychmiast przełącz na nową kartę lub nowe okno" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "No arranque" + "value" : "Ao abrir links, mudar imediatamente para o novo separador ou janela" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "При запуске" + "value" : "При открытии ссылки сразу переключаться на ее вкладку или окно" } } } }, - "preferences.privacy-protections" : { - "comment" : "The section header in Preferences representing browser features related to privacy protection", + "preferences-tabs.title" : { + "comment" : "Title for tabs section in settings", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Datenschutz" + "value" : "Tabs" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Privacy Protections" + "value" : "Tabs" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Protecciones de privacidad" + "value" : "Pestañas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Protections de la confidentialité" + "value" : "Onglets" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Protezioni della Privacy" + "value" : "Schede" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Privacybescherming" + "value" : "Tabbladen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Mechanizmy Ochrony Prywatności" + "value" : "Karty" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Proteções de Privacidade" + "value" : "Separadores" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Защита конфиденциальности" + "value" : "Вкладки" } } } }, - "preferences.private-search" : { - "comment" : "Title of the option to show the Private Search preferences", + "preferences.about" : { + "comment" : "Title of the option to show the About screen", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Private Suche" + "value" : "Über" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Private Search" + "value" : "About" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Búsqueda privada" + "value" : "Acerca de" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Recherche privée" + "value" : "À propos" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ricerca Privata" + "value" : "Informazioni" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Privézoekopdracht" + "value" : "Over" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Prywatne wyszukiwanie" + "value" : "Informacje" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Pesquisa Privada" + "value" : "Acerca de" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Частный поиск" + "value" : "О нас" } } } }, - "preferences.reopen-windows" : { - "comment" : "Option to control session restoration", + "preferences.about.about-duckduckgo" : { + "comment" : "About screen", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Alle Fenster der letzten Sitzung wieder öffnen" + "value" : "Über DuckDuckGo" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Reopen all windows from last session" + "value" : "About DuckDuckGo" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Volver a abrir todas las ventanas de la última sesión" + "value" : "Acerca de DuckDuckGo" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Rouvrir toutes les fenêtres de la dernière session" + "value" : "À propos de DuckDuckGo" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riapri tutte le finestre dell'ultima sessione" + "value" : "Info su DuckDuckGo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Alle vensters van vorige sessie opnieuw openen" + "value" : "Over DuckDuckGo" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ponownie otwórz wszystkie okna z ostatniej sesji" + "value" : "O DuckDuckGo" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Reabrir todas as janelas da última sessão" + "value" : "Sobre o DuckDuckGo" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Заново открыть все окна из последнего сеанса" + "value" : "О приложении DuckDuckGo" } } } }, - "preferences.set-as-default" : { - "comment" : "Menu option to set the browser as default", + "preferences.about.duckduckgo-tagline" : { + "comment" : "About screen", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo als Standard-Browser festlegen" + "value" : "Dein Schutz, unsere Priorität." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Set DuckDuckGo As Default Browser" + "value" : "Your protection, our priority." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Establece DuckDuckGo como tu navegador predeterminado" + "value" : "Tu protección, nuestra prioridad." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Définir DuckDuckGo comme navigateur par défaut" + "value" : "Votre protection, notre priorité." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Imposta DuckDuckGo come browser predefinito" + "value" : "La tua protezione, la nostra priorità." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo instellen als standaardbrowser" + "value" : "Jouw bescherming, onze prioriteit." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ustaw DuckDuckGo jako domyślną przeglądarkę" + "value" : "Twoje bezpieczeństwo jest naszym priorytetem." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Definir o DuckDuckGo como navegador predefinido" + "value" : "A tua proteção, a nossa prioridade." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сделать DuckDuckGo браузером по умолчанию" + "value" : "Ваша защита — наш приоритет." } } } }, - "preferences.shortcuts" : { - "comment" : "Name of the preferences section related to shortcuts", + "preferences.about.more-at" : { + "comment" : "Link to the about page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Shortcuts" + "value" : "Mehr bei %@" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Shortcuts" + "value" : "More at %@" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Accesos directos" + "value" : "Más en %@" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Raccourcis" + "value" : "Plus sur %@" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Scorciatoie" + "value" : "Ulteriori informazioni su %@" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Sneltoetsen" + "value" : "Meer op % @" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Skróty" + "value" : "Więcej na %@" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Atalhos" + "value" : "Mais em %@" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Ярлыки" + "value" : "Подробности: %@" } } } }, - "preferences.show-home" : { - "comment" : "Option to control session startup", + "preferences.about.privacy-policy" : { + "comment" : "Link to privacy policy page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ein neues Fenster öffnen" + "value" : "Datenschutzrichtlinie" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open a new window" + "value" : "Privacy Policy" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir una ventana nueva" + "value" : "Política de privacidad" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir une nouvelle fenêtre" + "value" : "Politique de confidentialité" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri una nuova finestra" + "value" : "Privacy policy" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Een nieuw venster openen" + "value" : "Privacybeleid" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz nowe okno" + "value" : "Polityka prywatności" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir uma nova janela" + "value" : "Política de Privacidade" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть новое окно" + "value" : "Политика конфиденциальности" } } } }, - "preferences.support" : { - "comment" : "Open support page", - "extractionState" : "extracted_with_value", + "preferences.about.privacy-simplified" : { + "comment" : "About screen", + "extractionState" : "stale", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Unterstützung" + "value" : "Datenschutz leicht gemacht." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Support" + "value" : "Privacy, simplified." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ayuda" + "value" : "Privacidad, simplificada." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Aide" + "value" : "La confidentialité, simplifiée." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Supporto" + "value" : "La privacy, semplificata." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Support" + "value" : "Privacy, vereenvoudigd." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wsparcie" + "value" : "Prywatność — jeszcze prostsza." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Assistência" + "value" : "Privacidade, simplificada." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Поддержка" + "value" : "Максимум конфиденциальности, минимум усилий." } } } }, - "preferences.sync" : { - "comment" : "Title of the option to show the Sync preferences", + "preferences.about.send-feedback" : { + "comment" : "Feedback button in the about preferences page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronisieren und sichern" + "value" : "Rückmeldung senden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Sync & Backup" + "value" : "Send Feedback" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Sincronización y copia de seguridad" + "value" : "Enviar comentarios" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronisation et sauvegarde" + "value" : "Envoyer vos remarques" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sincronizzazione e backup" + "value" : "Invia feedback" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronisatie en back-up" + "value" : "Verstuur feedback" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronizacja i kopia zapasowa" + "value" : "Wyślij opinię" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sincronização e cópia de segurança" + "value" : "Enviar comentário" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Синхронизация и резервное копирование" + "value" : "Отправить отзыв" } } } }, - "preferences.sync.auto-lock-prompt" : { - "comment" : "Reason for auth when setting up Sync", + "preferences.about.unsupported-device-info1" : { + "comment" : "This string represents a message informing the user that DuckDuckGo is no longer providing browser updates for their version of macOS", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Gerät entsperren, um Sync & Backup einzurichten" + "value" : "DuckDuckGo bietet keine Browser-Updates mehr für deine Version von macOS an." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Unlock device to setup Sync & Backup" + "value" : "DuckDuckGo is no longer providing browser updates for your version of macOS." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desbloquea el dispositivo para configurar Sincronización y copia de seguridad" + "value" : "DuckDuckGo ya no proporciona actualizaciones del navegador para tu versión de macOS." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Déverrouiller l'appareil pour configurer Sync & Backup" + "value" : "DuckDuckGo ne propose plus de mises à jour de navigateur pour votre version de macOS." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sblocca il dispositivo per configurare Sync & Backup" + "value" : "DuckDuckGo non fornisce più aggiornamenti del browser per la tua versione di macOS." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Ontgrendel het apparaat om synchronisatie en back-up in te stellen" + "value" : "DuckDuckGo biedt geen browserupdates meer voor je versie van macOS." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Odblokuj urządzenie, aby skonfigurować funkcję Sync & Backup" + "value" : "DuckDuckGo już nie udostępnia aktualizacji przeglądarki dla Twojej wersji systemu macOS." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Desbloquear dispositivo para configurar a Sync & Backup" + "value" : "O DuckDuckGo já não fornece atualizações para a tua versão do macOS." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Для настройки синхронизации и резервного копирования нужно разблокировать устройство." + "value" : "Сервис DuckDuckGo перестал выпускать обновления браузера для вашей версии macOS." } } } }, - "preferences.vpn" : { - "comment" : "Title of the option to show the VPN preferences", + "preferences.about.unsupported-device-info2" : { + "comment" : "Copy in section that tells the user to update their macOS version since their current version is unsupported", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "VPN" + "value" : "Bitte aktualisiere auf macOS %@ oder höher, um die neueste Version von DuckDuckGo zu nutzen. Du kannst auch deine aktuelle Version des Browsers weiter benutzen, aber sie wird keine weiteren Updates erhalten." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "VPN" + "value" : "Please update to macOS %@ or later to use the most recent version of DuckDuckGo. You can also keep using your current version of the browser, but it will not receive further updates." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "VPN" + "value" : "Actualiza a macOS %@ o posterior para usar la versión más reciente de DuckDuckGo. También puedes seguir utilizando tu versión actual del navegador, pero no recibirás más actualizaciones." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "VPN" + "value" : "Veuillez installer macOS %@ ou une version ultérieure pour utiliser la version la plus récente de DuckDuckGo. Vous pouvez également continuer à utiliser votre version actuelle du navigateur, mais elle ne recevra plus de mises à jour." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "VPN" + "value" : "Aggiorna a macOS %@ o a una versione successiva per utilizzare la versione più recente di DuckDuckGo. Puoi anche continuare a utilizzare la versione attuale del browser, ma non riceverai ulteriori aggiornamenti." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "VPN" + "value" : "Update naar macOS %@ of hoger om de meest recente versie van DuckDuckGo te gebruiken. Je kunt ook de huidige versie van de browser blijven gebruiken, maar die wordt niet verder bijgewerkt." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "VPN" + "value" : "Zaktualizuj system macOS do wersji %@ lub nowszej, aby móc korzystać z najnowszej wersji DuckDuckGo. Możesz też nadal korzystać z obecnej wersji przeglądarki, ale nie będziesz otrzymywać dalszych aktualizacji." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "VPN" + "value" : "Atualiza para o macOS %@ ou posterior para utilizares a versão mais recente do DuckDuckGo. Também podes continuar a utilizar a tua versão atual do navegador, mas esta não receberá mais atualizações." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "VPN" + "value" : "Чтобы пользоваться новейшей версией DuckDuckGo, обновите операционную систему до macOS %@ или более поздней версии. Вы также можете продолжить пользоваться текущей версией браузера – просто она больше не будет обновляться." } } } }, - "preferences.web-tracking-protection" : { - "comment" : "Title of the option to show the Web Tracking Protection preferences", + "preferences.accessibility" : { + "comment" : "Title of the option to show the Accessibility browser preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Web Tracking Protection" + "value" : "Barrierefreiheit" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Web Tracking Protection" + "value" : "Accessibility" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Protección de rastreo en la web" + "value" : "Accesibilidad" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Protection contre le pistage sur le Web" + "value" : "Accessibilité" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Protezione dal tracciamento web" + "value" : "Accessibilità" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bescherming tegen webtracking" + "value" : "Toegankelijkheid" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ochrona przed śledzeniem w sieci" + "value" : "Dostępność" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Proteção contra rastreamento na internet" + "value" : "Acessibilidade" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Защита от отслеживания онлайн" + "value" : "Универсальный доступ" } } } }, - "prefrences.sync.bad.request.description" : { - "comment" : "Description of incorrectly formatted data error when syncing.", + "preferences.add-to-dock" : { + "comment" : "Action button to add the app to the Dock", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Einige Lesezeichen sind falsch formatiert oder zu lang und wurden nicht synchronisiert." + "value" : "Zum Dock hinzufügen …" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Some bookmarks are formatted incorrectly or too long and were not synced." + "value" : "Add to Dock…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Algunos marcadores tienen un formato incorrecto o demasiado largo y no se han sincronizado." + "value" : "Añadir al Dock…" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Certains signets sont mal formatés ou trop longs et n'ont pas été synchronisés." + "value" : "Ajouter au Dock…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Alcuni segnalibri sono formattati in modo errato o sono troppo lunghi e non sono stati sincronizzati." + "value" : "Aggiungi al dock…" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Sommige bladwijzers hebben de verkeerde indeling of zijn te lang en werden niet gesynchroniseerd." + "value" : "App toevoegen aan je dock…" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Niektóre zakładki mają niepoprawny format lub są zbyt długie i nie zostały zsynchronizowane." + "value" : "Dodaj do Docka…" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Alguns marcadores estão formatados incorretamente ou são demasiado longos e não foram sincronizados." + "value" : "Adicionar à Dock…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Некоторые закладки не синхронизируются из-за неверного формата или превышения ограничений по длине." + "value" : "Добавить на док-панель…" } } } }, - "prefrences.sync.bookmarks-limit-exceeded-action" : { - "comment" : "Button title for sync bookmarks limits exceeded warning to go to manage bookmarks", + "preferences.ai-chat" : { + "comment" : "Title of the option to show AI Chat in preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Lesezeichen verwalten" + "value" : "KI-Chat" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Manage Bookmarks" + "value" : "AI Chat" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Gestionar marcadores" + "value" : "Chat de IA" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Gérer les signets" + "value" : "Chat IA" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Gestisci segnalibri" + "value" : "Chat IA" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bladwijzers beheren" + "value" : "AI-chat" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zarządzaj zakładkami" + "value" : "Czat AI" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Gerir marcadores" + "value" : "Chat com IA" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Управление закладками" + "value" : "Чат с ИИ" } } } }, - "prefrences.sync.bookmarks-limit-exceeded-description" : { - "comment" : "Description for sync bookmarks limits exceeded warning", + "preferences.always-on" : { + "comment" : "Status indicator of a browser privacy protection feature.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Du hast die maximale Anzahl von Lesezeichen erreicht. Lösche Lesezeichen, um die Synchronisierung fortzusetzen." + "value" : "Immer aktiviert" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "You've reached the maximum number of bookmarks. Please delete some to resume sync." + "value" : "Always On" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Has alcanzado el número máximo de marcadores. Elimina algunos para reanudar la sincronización." + "value" : "Siempre activado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Vous avez atteint le nombre maximal de signets. Veuillez en supprimer quelques-uns pour reprendre la synchronisation." + "value" : "Toujours activé" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Hai raggiunto il numero massimo di segnalibri. Eliminane alcuni per riprendere la sincronizzazione." + "value" : "Sempre attiva" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Je hebt het maximumaantal bladwijzers bereikt. Verwijder er een paar om de synchronisatie te hervatten." + "value" : "Altijd aan" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Osiągnięto maksymalną liczbę zakładek. Usuń część z nich, aby wznowić synchronizację." + "value" : "Zawsze włączone" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Atingiste o número máximo de marcadores. Elimina algumas para retomar a sincronização." + "value" : "Sempre ligada" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Достигнуто максимальное число закладок. Чтобы возобновить синхронизацию, удалите некоторые из них." + "value" : "Всегда включено" } } } }, - "prefrences.sync.bookmarks.too-many-requests" : { - "comment" : "Description of too many requests error when syncing.", + "preferences.appearance" : { + "comment" : "Title of the option to show the Appearance preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Sync & Backup ist vorübergehend nicht verfügbar." + "value" : "Aussehen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Sync & Backup is temporarily unavailable." + "value" : "Appearance" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "La sincronización y la copia de seguridad no están disponibles temporalmente." + "value" : "Apariencia" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Sync & Backup est temporairement indisponible." + "value" : "Apparence" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sync & Backup non è temporaneamente disponibile." + "value" : "Aspetto" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "'Synchronisatie en back-up' is tijdelijk niet beschikbaar." + "value" : "Uiterlijk" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Funkcja Sync & Backup jest tymczasowo niedostępna." + "value" : "Wygląd" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O Sync & Backup está temporariamente indisponível." + "value" : "Aparência" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Функция «Синхронизация и резервное копирование» временно недоступна." + "value" : "Внешний вид" } } } }, - "prefrences.sync.credentials-limit-exceeded-action" : { - "comment" : "Button title for sync credentials limits exceeded warning to go to manage passwords", + "preferences.appearance.address-bar" : { + "comment" : "Theme preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwörter verwalten …" + "value" : "Adresszeile" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Manage passwords…" + "value" : "Address Bar" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Administrar contraseñas..." + "value" : "Barra de direcciones" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Gérer les mots de passe…" + "value" : "Barre d'adresse" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Gestisci password…" + "value" : "Barra degli indirizzi" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Wachtwoorden beheren …" + "value" : "Adresbalk" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zarządzaj hasłami…" + "value" : "Pasek adresu" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Gerir palavras-passe…" + "value" : "Barra de endereço" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Управление паролями..." + "value" : "Адресная строка" } } } }, - "prefrences.sync.credentials-limit-exceeded-description" : { - "comment" : "Description for sync credentials limits exceeded warning", + "preferences.appearance.customize-background" : { + "comment" : "Button to open home page background customization options", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Du hast die maximale Anzahl von Passwörtern erreicht. Lösche einige, um die Synchronisierung fortzusetzen." + "value" : "Hintergrund anpassen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "You've reached the maximum number of passwords. Please delete some to resume sync." + "value" : "Customize Background" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Has alcanzado el número máximo de contraseñas. Elimina algunas para reanudar la sincronización." + "value" : "Personalizar fondo" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Vous avez atteint le nombre maximal de mots de passe. Veuillez en supprimer quelques-uns pour reprendre la synchronisation." + "value" : "Personnaliser l'arrière-plan" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Hai raggiunto il numero massimo di password. Eliminane alcuni per riprendere la sincronizzazione." + "value" : "Personalizza sfondo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Je hebt het maximumaantal wachtwoorden bereikt. Verwijder er een paar om de synchronisatie te hervatten." + "value" : "Achtergrond aanpassen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Osiągnięto maksymalną liczbę haseł. Usuń część z nich, aby wznowić synchronizację." + "value" : "Dostosuj tło" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Atingiste o número máximo de palavras-passe. Elimina algumas para retomar a sincronização." + "value" : "Personalizar fundo" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Достигнуто максимальное число паролей. Чтобы возобновить синхронизацию, удалите некоторые из них." + "value" : "Настроить фон" } } } }, - "prefrences.sync.credentials.bad.request.description" : { - "comment" : "Description of incorrectly formatted data error when syncing.", + "preferences.appearance.show-autocomplete-suggestions" : { + "comment" : "Option to show autocomplete suggestions in the address bar", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Einige Passwörter sind falsch formatiert oder zu lang und wurden nicht synchronisiert." + "value" : "Vorschläge für die Autovervollständigung" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Some passwords are formatted incorrectly or too long and were not synced." + "value" : "Autocomplete suggestions" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Algunas contraseñas tienen un formato incorrecto o demasiado largo y no se han sincronizado." + "value" : "Sugerencias de autocompletado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Certains mots de passe sont mal formatés ou trop longs et n'ont pas été synchronisés." + "value" : "Afficher les suggestions de saisie semi-automatique" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Alcune password sono formattate in modo errato o sono troppo lunghe e non sono state sincronizzate." + "value" : "Mostra suggerimenti di completamento automatico" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Sommige wachtwoorden hebben de verkeerde indeling of zijn te lang en werden niet gesynchroniseerd." + "value" : "Suggesties voor automatisch aanvullen weergeven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Niektóre hasła mają niepoprawny format lub są zbyt długie i nie zostały zsynchronizowane." + "value" : "Pokaż sugestie autouzupełniania" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Algumas palavras-passe estão formatadas incorretamente ou são demasiado longas e não foram sincronizadas." + "value" : "Mostrar sugestões de preenchimento automático" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Некоторые пароли не синхронизируются из-за неверного формата или превышения ограничений по длине." + "value" : "Показать предложения автозаполнения" } } } }, - "prefrences.sync.invalid-login-description" : { - "comment" : "Description invalid credentials error when syncing.", + "preferences.appearance.show-full-url" : { + "comment" : "Option to show full URL in the address bar", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bei der Synchronisierung ist ein Fehler aufgetreten. Versuche, die Synchronisierung auf diesem Gerät zu deaktivieren, und stelle dann die Verbindung mit einem anderen Gerät oder deinem Wiederherstellungscode wieder her." + "value" : "Vollständige Website-Adresse" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Sync encountered an error. Try disabling sync on this device and then reconnect using another device or your recovery code." + "value" : "Full website address" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Se ha producido un error en la sincronización. Intenta desactivar la sincronización en este dispositivo y, a continuación, vuelve a conectarte con otro dispositivo o con tu código de recuperación." + "value" : "Dirección completa del sitio web" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "La synchronisation a rencontré une erreur. Essayez de désactiver la synchronisation sur cet appareil, puis reconnectez-vous à l’aide d’un autre appareil ou de votre code de récupération." + "value" : "Adresse complète du site Web" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sync ha riscontrato un errore. Prova a disattivare la sincronizzazione su questo dispositivo e riconnettiti utilizzando un altro dispositivo o il codice di ripristino." + "value" : "Indirizzo completo del sito web" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Er is een fout opgetreden bij het synchroniseren. Probeer synchronisatie op dit apparaat uit te schakelen en maak dan opnieuw verbinding met een ander apparaat of met je herstelcode." + "value" : "Volledig websiteadres" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Podczas synchronizacji wystąpił błąd. Spróbuj wyłączyć synchronizację na tym urządzeniu, a następnie ponownie nawiąż połączenie za pomocą innego urządzenia lub kodu odzyskiwania." + "value" : "Pełny adres witryny internetowej" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Erro durante a sincronização. Experimenta desativar a sincronização neste dispositivo e, em seguida, inicia sessão novamente noutro dispositivo ou com o teu código de recuperação." + "value" : "Endereço completo do site" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Произошла ошибка синхронизации. Попробуйте отключить синхронизацию на этом устройстве, а затем выполнить повторную привязку с помощью другого устройства или кода восстановления." + "value" : "Полный адрес сайта" } } } }, - "prefrences.sync.limit-exceeded-title" : { - "comment" : "Title for sync limits exceeded warning", + "preferences.appearance.theme" : { + "comment" : "Theme preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronisierung angehalten" + "value" : "Design" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Sync Paused" + "value" : "Theme" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Sincronización pausada" + "value" : "Tema" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronisation suspendue" + "value" : "Thème" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sincronizzazione in pausa" + "value" : "Tema" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronisatie onderbroken" + "value" : "Thema" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronizacja wstrzymana" + "value" : "Motyw" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sincronização em pausa" + "value" : "Tema" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Синхронизация на паузе" + "value" : "Тема" } } } }, - "print.menu.item" : { - "comment" : "Menu item title", + "preferences.appearance.theme.dark" : { + "comment" : "In the preferences for themes, the option to select for activating dark mode in the app.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Drucken …" + "value" : "Dunkel" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Print…" + "value" : "Dark" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Imprimir…" + "value" : "Oscuro" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Imprimer…" + "value" : "Sombre" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Stampa…" + "value" : "Scuro" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Afdrukken ..." + "value" : "Donker" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Drukuj…" + "value" : "Ciemny" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Imprimir…" + "value" : "Escuro" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Печать…" + "value" : "Тёмная" } } } }, - "Privacy Pro" : { + "preferences.appearance.theme.light" : { + "comment" : "In the preferences for themes, the option to select for activating light mode in the app.", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Privacy Pro" + "value" : "Hell" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Light" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Privacy Pro" + "value" : "Claro" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Privacy Pro" + "value" : "Clair" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Privacy Pro" + "value" : "Chiaro" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Privacy Pro" + "value" : "Licht" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Privacy Pro" + "value" : "Jasny" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Privacy Pro" + "value" : "Claro" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Privacy Pro" + "value" : "Светлая" } } } }, - "private.search.explenation" : { - "comment" : "feature explanation in settings", + "preferences.appearance.theme.system" : { + "comment" : "In the preferences for themes, the option to select for use the change the mode based on the system preferences.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo Private Search ist deine Standardsuchmaschine – du kannst also das Web durchsuchen, ohne getrackt zu werden." + "value" : "Standard" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "DuckDuckGo Private Search is your default search engine, so you can search the web without being tracked." + "value" : "System" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "La búsqueda privada de DuckDuckGo es tu motor de búsqueda predeterminado para que puedas buscar en la web sin que te rastreen." + "value" : "Sistema" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo Private Search est votre moteur de recherche par défaut, qui vous permet d'effectuer des recherches sur le Web sans être suivi(e)." + "value" : "Système" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo Private Search è il tuo motore di ricerca predefinito, quindi puoi effettuare ricerche sul Web senza essere tracciato." + "value" : "Sistema" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo Private Search is je standaardzoekmachine, zodat je op het web kunt zoeken zonder gevolgd te worden." + "value" : "Systeem" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo Private Search to domyślna wyszukiwarka, dzięki której możesz wyszukiwać treści w sieci, unikając śledzenia." + "value" : "Systemowy" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O DuckDuckGo Private Search é o teu motor de pesquisa predefinido, para que possas pesquisar a web sem seres rastreado." + "value" : "Sistema" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo Private Search — ваша поисковая система по умолчанию. Вы можете пользоваться поиском в интернете, не опасаясь слежки." + "value" : "Тема системы" } } } }, - "quit" : { - "comment" : "Quit button", + "preferences.appearance.zoom-picker" : { + "comment" : "Default page zoom picker title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Verlassen" + "value" : "Standardmäßiger Seitenzoom" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Quit" + "value" : "Default page zoom" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Salir" + "value" : "Zoom de página predeterminado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Quitter" + "value" : "Zoom par défaut de la page" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Uscire" + "value" : "Zoom pagina predefinito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Afsluiten" + "value" : "Standaard zoomniveau van de pagina" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyjdź" + "value" : "Domyślne powiększenie strony" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sair" + "value" : "Zoom da página predefinida" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Выйти" + "value" : "Масштаб страницы по умолчанию" } } } }, - "quit.without.clearing" : { - "comment" : "Button to quit the application without clearing data", + "preferences.autofill" : { + "comment" : "Show Autofill preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Beenden ohne Löschen" + "value" : "Passwörter" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Quit Without Clearing" + "value" : "Passwords" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Salir sin borrar" + "value" : "Contraseñas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Quitter sans effacer" + "value" : "Mots de passe" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Esci senza cancellare" + "value" : "Password" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Stoppen zonder wissen" + "value" : "Wachtwoorden" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyjdź bez czyszczenia" + "value" : "Hasła" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sair sem limpar" + "value" : "Palavras-passe" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Выйти без очистки" + "value" : "Пароли" } } } }, - "Recently Closed" : { - "comment" : "Main Menu History item", + "preferences.autofill-enabled-for" : { + "comment" : "Label presented before the email account in email protection preferences", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Kürzlich geschlossen" + "value" : "Autovervollständigen in diesem Browser aktiviert für:" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Autofill enabled in this browser for:" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Cerrado recientemente" + "value" : "Autocompletar habilitado en este navegador para:" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Récemment clôturé" + "value" : "La saisie automatique est activée dans ce navigateur pour :" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Chiusa di recente" + "value" : "Compilazione automatica abilitata in questo browser per:" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Onlangs gesloten" + "value" : "'Automatisch aanvullen' is ingeschakeld in deze browser voor:" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Niedawno zamknięte" + "value" : "Autouzupełnianie włączone w tej przeglądarce dla:" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Fechados recentemente" + "value" : "Preenchimento automático ativado neste navegador para:" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Недавно закрытые" + "value" : "В этом браузере включено автозаполнение для:" } } } }, - "release.notes.menu.item" : { - "comment" : "Title of the dialog menu item that opens release notes", + "preferences.cookie-pop-up-protection" : { + "comment" : "Title of the option to show the Cookie Pop-Up Protection preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Versionshinweise" + "value" : "Cookie-Pop-up-Schutz" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Release Notes" + "value" : "Cookie Pop-Up Protection" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Notas de la versión" + "value" : "Protección contra ventanas emergentes de cookies" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Notes de mise à jour" + "value" : "Protection contre les fenêtres contextuelles des cookies" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Note di rilascio" + "value" : "Protezione pop-up dei cookie" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Release-opmerkingen" + "value" : "Bescherming tegen cookiepop-ups" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Informacje o wersji" + "value" : "Ochrona przed wyskakującymi okienkami dotyczącymi plików cookie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Notas de lançamento" + "value" : "Proteção contra pop-ups de cookies" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Примечания к релизу" + "value" : "Защита от всплывающих окон куки" } } } }, - "Reload Page" : { - "comment" : "Main Menu View item", + "preferences.data-clearing" : { + "comment" : "Title of the option to show the Data Clearing preferences", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Seite neu laden" + "value" : "Datenlöschung" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Data Clearing" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Volver a cargar página" + "value" : "Eliminación de datos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Recharger la page" + "value" : "Effacement des données" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ricarica pagina" + "value" : "Cancellazione dati" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Pagina opnieuw laden" + "value" : "Gegevens wissen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Załaduj ponownie stronę" + "value" : "Czyszczenie danych" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Recarregar página" + "value" : "Limpeza de Dados" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Перезагрузить страницу" + "value" : "Очистка данных" } } } }, - "reload.page" : { - "comment" : "Context menu item", + "preferences.default-browser" : { + "comment" : "Title of the option to show the Default Browser Preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Seite neu laden" + "value" : "Standard-Browser" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Reload Page" + "value" : "Default Browser" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Volver a cargar página" + "value" : "Navegador predeterminado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Recharger la page" + "value" : "Navigateur par défaut" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ricarica pagina" + "value" : "Browser predefinito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Pagina opnieuw laden" + "value" : "Standaardbrowser" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Załaduj ponownie stronę" + "value" : "Domyślna przeglądarka" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Recarregar página" + "value" : "Navegador predefinido" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Перезагрузить страницу" + "value" : "Браузер по умолчанию" } } } }, - "remove-favorite" : { - "comment" : "Remove Favorite button", + "preferences.default-browser.active" : { + "comment" : "Indicate that the browser is the default", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Favorit entfernen" + "value" : "DuckDuckGo ist dein Standard-Browser" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Remove Favorite" + "value" : "DuckDuckGo is your default browser" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Eliminar favorito" + "value" : "DuckDuckGo es tu navegador predeterminado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Supprimer le favori" + "value" : "DuckDuckGo est votre navigateur par défaut" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Rimuovi Preferito" + "value" : "DuckDuckGo è il tuo browser predefinito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Favoriet verwijderen" + "value" : "DuckDuckGo is je standaardbrowser" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Usuń ulubione" + "value" : "DuckDuckGo to Twoja domyślna przeglądarka" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Remover favorito" + "value" : "DuckDuckGo é o teu navegador predefinido" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Удалить из избранного" + "value" : "DuckDuckGo — ваш браузер по умолчанию" } } } }, - "remove.from.favorites" : { - "comment" : "Button for removing bookmarks from favorites", + "preferences.default-browser.button.make-default" : { + "comment" : "represents a prompt message asking the user to make DuckDuckGo their default browser.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Aus Favoriten entfernen" + "value" : "DuckDuckGo zum Standard machen …" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Remove from Favorites" + "value" : "Make DuckDuckGo Default…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Eliminar de favoritos" + "value" : "Establecer DuckDuckGo como predeterminado…" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Supprimer des favoris" + "value" : "Faire de DuckDuckGo votre navigateur par défaut…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Rimuovi dai preferiti" + "value" : "Rendi DuckDuckGo predefinito..." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Verwijderen uit favorieten" + "value" : "DuckDuckGo instellen als standaardbrowser ..." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Usuń z ulubionych" + "value" : "Ustaw przeglądarkę DuckDuckGo jako domyślną…" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Remover dos favoritos" + "value" : "Tornar o DuckDuckGo a predefinição…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Удалить из избранного" + "value" : "Назначить DuckDuckGo браузером по умолчанию..." } } } }, - "remove.suggestion.tooltip" : { - "comment" : "Tooltip for the button which removes the history entry from the history", + "preferences.default-browser.inactive" : { + "comment" : "Indicate that the browser is not the default", "extractionState" : "extracted_with_value", - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "Remove from browsing history" - } - } - } - }, - "Reopen All Windows from Last Session" : { - "comment" : "Main Menu History item", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Alle Fenster der letzten Sitzung wieder öffnen" + "value" : "DuckDuckGo ist nicht dein Standard-Browser." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "DuckDuckGo is not your default browser." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Volver a abrir todas las ventanas de la última sesión" + "value" : "DuckDuckGo no es tu navegador predeterminado." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Rouvrir toutes les fenêtres de la dernière session" + "value" : "DuckDuckGo n'est pas votre navigateur par défaut." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riapri tutte le finestre dell'ultima sessione" + "value" : "DuckDuckGo non è il tuo browser predefinito." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Alle vensters van de laatste sessie opnieuw openen" + "value" : "DuckDuckGo is niet je standaardbrowser." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz ponownie wszystkie okna z ostatniej sesji" + "value" : "DuckDuckGo nie jest Twoją domyślną przeglądarką." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Reabrir todas as janelas da última sessão" + "value" : "O DuckDuckGo não é o teu navegador predefinido." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Заново открыть все окна из последнего сеанса" + "value" : "DuckDuckGo не является вашим браузером по умолчанию." } } } }, - "reopen.last.closed.tab" : { - "comment" : "This string represents an action to reopen the last closed tab in the browser", + "preferences.downloads" : { + "comment" : "Title of the downloads browser preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Letzten geschlossenen Tab erneut öffnen" + "value" : "Downloads" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Reopen Last Closed Tab" + "value" : "Downloads" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Volver a abrir la última pestaña cerrada" + "value" : "Descargas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Rouvrir le dernier onglet fermé" + "value" : "Téléchargements" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riapri l'ultima scheda chiusa" + "value" : "Download" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Laatste gesloten tabblad opnieuw openen" + "value" : "Downloads" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz ponownie ostatnio zamkniętą kartę" + "value" : "Pobrane" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Reabrir o último separador fechado" + "value" : "Transferências" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Заново открыть последнюю закрытую вкладку" + "value" : "Загрузки" } } } }, - "reopen.last.closed.window" : { - "comment" : "This string represents an action to reopen the last closed window in the browser", + "preferences.duck-player" : { + "comment" : "Title of the option to show the Duck Player browser preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Letztes geschlossenes Fenster erneut öffnen" + "value" : "Duck Player" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Reopen Last Closed Window" + "value" : "Duck Player" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Volver a abrir la última ventana cerrada" + "value" : "Duck Player" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Rouvrir la dernière fenêtre fermée" + "value" : "Duck Player" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riapri l'ultima finestra chiusa" + "value" : "Duck Player" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Laatste gesloten venster opnieuw openen" + "value" : "Duck Player" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz ponownie ostatnio zamknięte okno" + "value" : "Duck Player" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Reabrir a última janela fechada" + "value" : "Duck Player" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Заново открыть последнее закрытое окно" + "value" : "Проигрыватель Duck Player" } } } }, - "report.broken.site" : { - "comment" : "Menu with feedback commands", + "preferences.duckduckgo-on-other-platforms" : { + "comment" : "Button presented to users to navigate them to our product page which presents all other products for other platforms", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Fehlerhafte Website melden" + "value" : "DuckDuckGo auf anderen Plattformen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Report Broken Site" + "value" : "DuckDuckGo on Other Platforms" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Informar de sitio web dañado" + "value" : "DuckDuckGo en otras plataformas" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Signaler un problème de site" + "value" : "DuckDuckGo sur d'autres plateformes" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Segnala sito danneggiato" + "value" : "DuckDuckGo su altre piattaforme" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Defecte website melden" + "value" : "DuckDuckGo op andere platforms" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zgłoś uszkodzoną witrynę" + "value" : "DuckDuckGo na innych platformach" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Denunciar site danificado" + "value" : "DuckDuckGo Noutras Plataformas" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сообщить о неработающем сайте" + "value" : "DuckDuckGo для других платформ" } } } }, - "reset-zoom" : { - "comment" : "Button that allows the user to reset the zoom level of the browser page", + "preferences.email-protection" : { + "comment" : "Title of the option to show the Email Protection preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zurücksetzen" + "value" : "E-Mail-Schutz" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Reset" + "value" : "Email Protection" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Reiniciar" + "value" : "Protección del correo electrónico" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Réinitialiser" + "value" : "Protection des e-mails" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ripristina" + "value" : "Protezione email" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Herstel" + "value" : "E-mailbescherming" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Resetowanie" + "value" : "Ochrona poczty e-mail" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Reset" + "value" : "Proteção de e-mail" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сбросить" + "value" : "Защита электронной почты" } } } }, - "restart.bitwarden" : { - "comment" : "Button to restart Bitwarden application", + "preferences.general" : { + "comment" : "Title of the option to show the General preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bitwarden neu starten" + "value" : "Allgemein" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Restart Bitwarden" + "value" : "General" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Reiniciar bitwarden" + "value" : "General" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Redémarrer Bitwarden" + "value" : "Général" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riavvia Bitwarden" + "value" : "Generale" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bitwarden opnieuw opstarten" + "value" : "Algemeen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Uruchom ponownie Bitwarden" + "value" : "Ogólne" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Reiniciar o Bitwarden" + "value" : "Geral" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Перезапустить Bitwarden" + "value" : "Основные" } } } }, - "restart.bitwarden.info" : { - "comment" : "This string represents a message informing the user that Bitwarden is not responding and prompts them to restart the application to initiate communication again.", + "preferences.is-added-to-dock" : { + "comment" : "Indicates that the browser is added to the macOS system Dock", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bitwarden reagiert nicht. Bitte neu starten, um die Kommunikation erneut zu starten" + "value" : "DuckDuckGo wird zum Dock hinzugefügt." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Bitwarden is not responding. Please restart it to initiate the communication again" + "value" : "DuckDuckGo is added to the Dock." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Bitwarden no responde. Reinícialo para volver a iniciar la comunicación" + "value" : "DuckDuckGo se ha añadido al Dock." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Bitwarden ne répond pas. Veuillez redémarrer l'application pour relancer la communication." + "value" : "DuckDuckGo a été ajouté au Dock." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Bitwarden non risponde. Riavviala per iniziare nuovamente la comunicazione" + "value" : "DuckDuckGo è stato aggiunto al dock." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bitwarden reageert niet. Start het opnieuw op om de communicatie opnieuw te starten" + "value" : "DuckDuckGo is toegevoegd aan het Dock." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Aplikacja Bitwarden nie odpowiada. Uruchom ją ponownie, aby ponownie zainicjować komunikację" + "value" : "Przeglądarka DuckDuckGo została dodana do Docka." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O Bitwarden não está a responder. Reinicia-o para reiniciar a comunicação" + "value" : "O DuckDuckGo foi adicionado à Dock." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Приложение Bitwarden не отвечает. Перезапустите его, чтобы возобновить связь." + "value" : "Ярлык DuckDuckGo добавлен на док-панель." } } } }, - "save" : { - "comment" : "Save button", + "preferences.main-settings" : { + "comment" : "Section header in Preferences for main settings", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Speichern" + "value" : "Haupteinstellungen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Save" + "value" : "Main Settings" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Guardar" + "value" : "Ajustes principales" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Enregistrer" + "value" : "Réglages principaux" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Salva" + "value" : "Impostazioni principali" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Opslaan" + "value" : "Hoofdinstellingen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zapisz" + "value" : "Ustawienia główne" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Guardar" + "value" : "Definições Principais" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сохранить" + "value" : "Основные настройки" } } } }, - "save.image.as" : { - "comment" : "Context menu item", + "preferences.not-added-to-dock" : { + "comment" : "Indicate that the browser is not added to macOS system Dock", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bild speichern unter …" + "value" : "DuckDuckGo wird nicht zum Dock hinzugefügt." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Save Image As…" + "value" : "DuckDuckGo is not added to the Dock." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Guardar imagen como..." + "value" : "DuckDuckGo no se ha añadido al Dock." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Enregistrer l'image sous…" + "value" : "DuckDuckGo n'a pas été ajouté au Dock." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Salva immagine come…" + "value" : "DuckDuckGo non è stato aggiunto al dock." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Afbeelding opslaan als..." + "value" : "DuckDuckGo is niet toegevoegd aan het Dock." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zapisz obraz jako…" + "value" : "Przeglądarka DuckDuckGo nie została dodana do Docka." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Guardar imagem como…" + "value" : "O DuckDuckGo não foi adicionado à Dock." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сохранить изображение как..." + "value" : "Ярлык DuckDuckGo не добавлен на док-панель." } } } }, - "scroll.to.find.app.settings" : { - "comment" : "Setup of the integration with Bitwarden app", + "preferences.off" : { + "comment" : "Status indicator of a browser privacy protection feature.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Scrolle, um den Abschnitt App-Einstellungen (Alle Konten) zu finden." + "value" : "Aus" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Scroll to find the App Settings (All Accounts) section." + "value" : "Off" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desplázate para buscar la sección Configuración de la aplicación (todas las cuentas)." + "value" : "Desactivado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Faites défiler pour trouver la section Réglages de l'application (Tous les comptes)." + "value" : "Désactivé" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Scorri per trovare la sezione Impostazioni app (tutti gli account)." + "value" : "Disattivato" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Scroll naar de sectie app-instellingen (Alle accounts)." + "value" : "Uit" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przewiń, aby znaleźć sekcję ustawień aplikacji (wszystkie konta)." + "value" : "Wył." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Desloca-te até encontrares a secção Definições da aplicação (todas as contas)." + "value" : "Desligado" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Прокрутите страницу вниз до раздела «Настройки приложения (все учетные записи)»." + "value" : "Выкл." } } } }, - "search.with.DuckDuckGo" : { - "comment" : "Context menu item", + "preferences.on" : { + "comment" : "Status indicator of a browser privacy protection feature.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Suchen mit DuckDuckGo" + "value" : "An" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Search with DuckDuckGo" + "value" : "On" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Buscar con DuckDuckGo" + "value" : "Activado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Rechercher avec DuckDuckGo" + "value" : "Activé" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cerca con DuckDuckGo" + "value" : "On" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Zoeken met DuckDuckGo" + "value" : "Aan" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyszukaj z DuckDuckGo" + "value" : "Wł." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Pesquisar com o DuckDuckGo" + "value" : "Ligado" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Поиск в DuckDuckGo" + "value" : "Вкл." } } } }, - "Select %@ Folder…" : { + "preferences.on-startup" : { + "comment" : "Name of the preferences section related to app startup", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Wähle den Ordner %@ ..." + "value" : "Beim Start" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "On Startup" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Seleccionar Carpeta %@..." + "value" : "Al iniciar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Sélectionner le dossier %@…" + "value" : "Au démarrage" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Seleziona %@ cartella…" + "value" : "All'avvio" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Map %@ selecteren ..." + "value" : "Bij opstarten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wybierz folder %@…" + "value" : "Przy uruchomieniu" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Selecionar pasta %@…" + "value" : "No arranque" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Выбрать папку %@..." + "value" : "При запуске" } } } }, - "Select Data to Import:" : { - "comment" : "Data Import section title for checkboxes of data type to import: Passwords or Bookmarks.", - "extractionState" : "stale", + "preferences.privacy-protections" : { + "comment" : "The section header in Preferences representing browser features related to privacy protection", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zu importierende Daten auswählen:" + "value" : "Datenschutz" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Privacy Protections" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Selecciona los datos a importar:" + "value" : "Protecciones de privacidad" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Sélectionner les données à importer :" + "value" : "Protections de la confidentialité" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Seleziona i dati da importare:" + "value" : "Protezioni della Privacy" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Selecteer gegevens om te importeren:" + "value" : "Privacybescherming" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wybierz dane do zaimportowania:" + "value" : "Mechanizmy Ochrony Prywatności" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Selecionar dados para importar:" + "value" : "Proteções de Privacidade" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Выберите данные для импорта:" + "value" : "Защита конфиденциальности" } } } }, - "Select Profile:" : { - "comment" : "Browser Profile picker title for Data Import", + "preferences.private-search" : { + "comment" : "Title of the option to show the Private Search preferences", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Profil auswählen:" + "value" : "Private Suche" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Private Search" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Selecciona perfil:" + "value" : "Búsqueda privada" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Sélectionner le profil :" + "value" : "Recherche privée" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Seleziona profilo:" + "value" : "Ricerca Privata" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Profiel selecteren:" + "value" : "Privézoekopdracht" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wybierz profil:" + "value" : "Prywatne wyszukiwanie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Selecionar perfil:" + "value" : "Pesquisa Privada" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Выберите профиль:" + "value" : "Частный поиск" } } } }, - "select.bitwarden.preferences" : { - "comment" : "Setup of the integration with Bitwarden app (up to and including macOS 12)", + "preferences.reopen-windows" : { + "comment" : "Option to control session restoration", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Wähle Bitwarden → Einstellungen in der Mac-Menüleiste aus." + "value" : "Alle Fenster der letzten Sitzung wieder öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Select Bitwarden → Preferences from the Mac menu bar." + "value" : "Reopen all windows from last session" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Selecciona Bitwarden → Preferencias en la barra de menú de Mac." + "value" : "Volver a abrir todas las ventanas de la última sesión" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Sélectionnez Bitwarden → Préférences dans la barre de menu Mac." + "value" : "Rouvrir toutes les fenêtres de la dernière session" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Seleziona Bitwarden → Preferenze dalla barra dei menu del Mac." + "value" : "Riapri tutte le finestre dell'ultima sessione" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Selecteer Bitwarden → Voorkeuren in de Mac-menubalk." + "value" : "Alle vensters van vorige sessie opnieuw openen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wybierz Bitwarden → Preferencje na pasku menu komputera Mac." + "value" : "Ponownie otwórz wszystkie okna z ostatniej sesji" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Seleciona Bitwarden → Preferências na barra de menus do Mac." + "value" : "Reabrir todas as janelas da última sessão" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "В строке меню Mac выберите Bitwarden → Предпочтения." + "value" : "Заново открыть все окна из последнего сеанса" } } } }, - "select.bitwarden.settings" : { - "comment" : "Setup of the integration with Bitwarden app (macOS 13 and above)", + "preferences.set-as-default" : { + "comment" : "Menu option to set the browser as default", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Wähle Bitwarden → Einstellungen in der Mac-Menüleiste aus." + "value" : "DuckDuckGo als Standard-Browser festlegen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Select Bitwarden → Settings from the Mac menu bar." + "value" : "Set DuckDuckGo As Default Browser" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Selecciona Bitwarden → Configuración en la barra de menú de Mac." + "value" : "Establece DuckDuckGo como tu navegador predeterminado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Sélectionnez Bitwarden → Réglages dans la barre de menus Mac." + "value" : "Définir DuckDuckGo comme navigateur par défaut" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Seleziona Bitwarden → Impostazioni dalla barra dei menu del Mac." + "value" : "Imposta DuckDuckGo come browser predefinito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Selecteer Bitwarden → Instellingen in de Mac-menubalk." + "value" : "DuckDuckGo instellen als standaardbrowser" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wybierz Bitwarden → Ustawienia na pasku menu komputera Mac." + "value" : "Ustaw DuckDuckGo jako domyślną przeglądarkę" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Seleciona Bitwarden → Definições na barra de menus do Mac." + "value" : "Definir o DuckDuckGo como navegador predefinido" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "В строке меню Mac выберите Bitwarden → Настройки." + "value" : "Сделать DuckDuckGo браузером по умолчанию" } } } }, - "send.browser.feedback" : { - "comment" : "Menu with feedback commands", + "preferences.shortcuts" : { + "comment" : "Name of the preferences section related to shortcuts", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Browser-Feedback senden" + "value" : "Shortcuts" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Send Browser Feedback" + "value" : "Shortcuts" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Enviar comentarios del navegador" + "value" : "Accesos directos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Envoyer des commentaires sur le navigateur" + "value" : "Raccourcis" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Invia feedback sul browser" + "value" : "Scorciatoie" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Feedback over browser sturen" + "value" : "Sneltoetsen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyślij opinię o przeglądarce" + "value" : "Skróty" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Enviar feedback sobre o navegador" + "value" : "Atalhos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Отправить отзыв о браузере" + "value" : "Ярлыки" } } } }, - "send.browser.feedback.feedback-helps" : { - "comment" : "Text shown to the user when they provide feedback.", + "preferences.show-home" : { + "comment" : "Option to control session startup", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Dein Feedback hilft uns, den DuckDuckGo-Browser zu verbessern." + "value" : "Ein neues Fenster öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Your feedback will help us improve the DuckDuckGo browser." + "value" : "Open a new window" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Tus comentarios nos ayudarán a mejorar el navegador DuckDuckGo." + "value" : "Abrir una ventana nueva" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Vos commentaires nous aideront à améliorer le navigateur DuckDuckGo." + "value" : "Ouvrir une nouvelle fenêtre" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Il tuo feedback ci aiuterà a migliorare il browser DuckDuckGo." + "value" : "Apri una nuova finestra" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Jouw feedback helpt ons de DuckDuckGo-browser te verbeteren." + "value" : "Een nieuw venster openen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Twoja opinia pomoże nam ulepszyć przeglądarkę DuckDuckGo." + "value" : "Otwórz nowe okno" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O teu feedback ajuda-nos a melhorar o navegador DuckDuckGo." + "value" : "Abrir uma nova janela" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Ваш ответ поможет браузеру DuckDuckGo стать еще лучше." + "value" : "Открыть новое окно" } } } }, - "send.browser.feedback.general-feedback" : { - "comment" : "Name of the option the user can chose to give general browser feedback", + "preferences.support" : { + "comment" : "Open support page", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Allgemeines Feedback" + "value" : "Unterstützung" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "General feedback" + "value" : "Support" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Comentarios generales" + "value" : "Ayuda" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Commentaires d'ordre général" + "value" : "Aide" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Feedback generale" + "value" : "Supporto" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Algemene feedback" + "value" : "Support" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Opinia ogólna" + "value" : "Wsparcie" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Feedback geral" + "value" : "Assistência" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Общий комментарий" + "value" : "Поддержка" } } } }, - "send.browser.feedback.report-problem" : { - "comment" : "Name of the option the user can chose to give browser feedback about a problem they enountered", + "preferences.sync" : { + "comment" : "Title of the option to show the Sync preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Problem melden" + "value" : "Synchronisieren und sichern" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Report a problem" + "value" : "Sync & Backup" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Informar de un problema" + "value" : "Sincronización y copia de seguridad" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Signaler un problème" + "value" : "Synchronisation et sauvegarde" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Segnala un problema" + "value" : "Sincronizzazione e backup" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Een probleem melden" + "value" : "Synchronisatie en back-up" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zgłoś problem" + "value" : "Synchronizacja i kopia zapasowa" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Comunicar um problema" + "value" : "Sincronização e cópia de segurança" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Отчет о проблеме" + "value" : "Синхронизация и резервное копирование" } } } }, - "send.browser.feedback.request-feature" : { - "comment" : "Name of the option the user can chose to give browser feedback about a feature they would like", + "preferences.sync.auto-lock-prompt" : { + "comment" : "Reason for auth when setting up Sync", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Eine Funktion anfordern" + "value" : "Gerät entsperren, um Sync & Backup einzurichten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Request a feature" + "value" : "Unlock device to setup Sync & Backup" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Solicitar una función" + "value" : "Desbloquea el dispositivo para configurar Sincronización y copia de seguridad" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Demander une fonctionnalité" + "value" : "Déverrouiller l'appareil pour configurer Sync & Backup" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Richiedi una funzionalità" + "value" : "Sblocca il dispositivo per configurare Sync & Backup" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Een functie aanvragen" + "value" : "Ontgrendel het apparaat om synchronisatie en back-up in te stellen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Poproś o funkcję" + "value" : "Odblokuj urządzenie, aby skonfigurować funkcję Sync & Backup" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Pedir uma funcionalidade" + "value" : "Desbloquear dispositivo para configurar a Sync & Backup" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Запрос функции" + "value" : "Для настройки синхронизации и резервного копирования нужно разблокировать устройство." } } } }, - "send.browser.feedback.select-category" : { - "comment" : "Title of the picker where the user can chose the category of the feedback they want ot send.", + "preferences.vpn" : { + "comment" : "Title of the option to show the VPN preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "EINE KATEGORIE AUSWÄHLEN" + "value" : "VPN" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Select a category" + "value" : "VPN" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "SELECCIONA UNA CATEGORÍA" + "value" : "VPN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "SÉLECTIONNER UNE CATÉGORIE" + "value" : "VPN" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "SELEZIONA UNA CATEGORIA" + "value" : "VPN" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "SELECTEER EEN CATEGORIE" + "value" : "VPN" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "WYBIERZ KATEGORIĘ" + "value" : "VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "SELECIONA UMA CATEGORIA" + "value" : "VPN" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "ВЫБЕРИТЕ КАТЕГОРИЮ" + "value" : "VPN" } } } }, - "send.browser.feedback.thankyou" : { - "comment" : "Thanks the user for sending feedback", + "preferences.web-tracking-protection" : { + "comment" : "Title of the option to show the Web Tracking Protection preferences", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Vielen Dank!" + "value" : "Web Tracking Protection" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Thank you!" + "value" : "Web Tracking Protection" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¡Gracias!" + "value" : "Protección de rastreo en la web" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Merci !" + "value" : "Protection contre le pistage sur le Web" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Grazie!" + "value" : "Protezione dal tracciamento web" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bedankt!" + "value" : "Bescherming tegen webtracking" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dziękujemy!" + "value" : "Ochrona przed śledzeniem w sieci" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Obrigado!" + "value" : "Proteção contra rastreamento na internet" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Спасибо!" + "value" : "Защита от отслеживания онлайн" } } } }, - "send.browser.feedback.title" : { - "comment" : "Title of the interface to send feedback on the browser", + "prefrences.sync.bad.request.description" : { + "comment" : "Description of incorrectly formatted data error when syncing.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Hilf mit, den DuckDuckGo-Browser zu verbessern" + "value" : "Einige Lesezeichen sind falsch formatiert oder zu lang und wurden nicht synchronisiert." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Help Improve the DuckDuckGo Browser" + "value" : "Some bookmarks are formatted incorrectly or too long and were not synced." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ayuda a mejorar el navegador DuckDuckGo" + "value" : "Algunos marcadores tienen un formato incorrecto o demasiado largo y no se han sincronizado." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Contribuer à l'amélioration du navigateur DuckDuckGo" + "value" : "Certains signets sont mal formatés ou trop longs et n'ont pas été synchronisés." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Contribuisci a migliorare il browser DuckDuckGo" + "value" : "Alcuni segnalibri sono formattati in modo errato o sono troppo lunghi e non sono stati sincronizzati." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Help de DuckDuckGo-browser te verbeteren" + "value" : "Sommige bladwijzers hebben de verkeerde indeling of zijn te lang en werden niet gesynchroniseerd." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pomóż ulepszać przeglądarkę DuckDuckGo" + "value" : "Niektóre zakładki mają niepoprawny format lub są zbyt długie i nie zostały zsynchronizowane." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ajudar a melhorar o navegador DuckDuckGo" + "value" : "Alguns marcadores estão formatados incorretamente ou são demasiado longos e não foram sincronizados." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Помогите улучшить браузер DuckDuckGo" + "value" : "Некоторые закладки не синхронизируются из-за неверного формата или превышения ограничений по длине." } } } }, - "send.ppro.feedback" : { - "comment" : "Menu with feedback commands", + "prefrences.sync.bookmarks-limit-exceeded-action" : { + "comment" : "Button title for sync bookmarks limits exceeded warning to go to manage bookmarks", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Feedback von Privacy Pro senden" + "value" : "Lesezeichen verwalten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Send Privacy Pro Feedback" + "value" : "Manage Bookmarks" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Enviar comentarios sobre Privacy Pro" + "value" : "Gestionar marcadores" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Envoyer des commentaires sur Privacy Pro" + "value" : "Gérer les signets" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Invia feedback su Privacy Pro" + "value" : "Gestisci segnalibri" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Feedback sturen naar Privacy Pro" + "value" : "Bladwijzers beheren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyślij opinię na temat Privacy Pro" + "value" : "Zarządzaj zakładkami" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Enviar feedback sobre o Privacy Pro" + "value" : "Gerir marcadores" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Отправить отзыв о Privacy Pro" + "value" : "Управление закладками" } } } }, - "settings" : { - "comment" : "Menu item for opening settings", + "prefrences.sync.bookmarks-limit-exceeded-description" : { + "comment" : "Description for sync bookmarks limits exceeded warning", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Einstellungen" + "value" : "Du hast die maximale Anzahl von Lesezeichen erreicht. Lösche Lesezeichen, um die Synchronisierung fortzusetzen." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Settings" + "value" : "You've reached the maximum number of bookmarks. Please delete some to resume sync." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ajustes" + "value" : "Has alcanzado el número máximo de marcadores. Elimina algunos para reanudar la sincronización." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Paramètres" + "value" : "Vous avez atteint le nombre maximal de signets. Veuillez en supprimer quelques-uns pour reprendre la synchronisation." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Impostazioni" + "value" : "Hai raggiunto il numero massimo di segnalibri. Eliminane alcuni per riprendere la sincronizzazione." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Instellingen" + "value" : "Je hebt het maximumaantal bladwijzers bereikt. Verwijder er een paar om de synchronisatie te hervatten." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ustawienia" + "value" : "Osiągnięto maksymalną liczbę zakładek. Usuń część z nich, aby wznowić synchronizację." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Definições" + "value" : "Atingiste o número máximo de marcadores. Elimina algumas para retomar a sincronização." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Настройки" + "value" : "Достигнуто максимальное число закладок. Чтобы возобновить синхронизацию, удалите некоторые из них." } } } }, - "Settings…" : { - "comment" : "Menu item", + "prefrences.sync.bookmarks.too-many-requests" : { + "comment" : "Description of too many requests error when syncing.", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Einstellungen …" + "value" : "Sync & Backup ist vorübergehend nicht verfügbar." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Sync & Backup is temporarily unavailable." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ajustes" + "value" : "La sincronización y la copia de seguridad no están disponibles temporalmente." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Réglages…" + "value" : "Sync & Backup est temporairement indisponible." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Impostazioni…" + "value" : "Sync & Backup non è temporaneamente disponibile." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Instellingen …" + "value" : "'Synchronisatie en back-up' is tijdelijk niet beschikbaar." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ustawienia…" + "value" : "Funkcja Sync & Backup jest tymczasowo niedostępna." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Definições…" + "value" : "O Sync & Backup está temporariamente indisponível." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Настройки..." + "value" : "Функция «Синхронизация и резервное копирование» временно недоступна." } } } }, - "settings.automatic.updates" : { - "comment" : "Title of the checkbox item to set up automatic updates of the browser", + "prefrences.sync.credentials-limit-exceeded-action" : { + "comment" : "Button title for sync credentials limits exceeded warning to go to manage passwords", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Updates automatisch installieren (empfohlen)" + "value" : "Passwörter verwalten …" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Automatically install updates (recommended)" + "value" : "Manage passwords…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Instalar actualizaciones automáticamente (recomendado)" + "value" : "Administrar contraseñas..." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Installer automatiquement les mises à jour (recommandé)" + "value" : "Gérer les mots de passe…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Installa automaticamente gli aggiornamenti (scelta consigliata)" + "value" : "Gestisci password…" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Updates automatisch installeren (aanbevolen)" + "value" : "Wachtwoorden beheren …" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Automatyczne instalowanie aktualizacji (zalecane)" + "value" : "Zarządzaj hasłami…" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Instalar atualizações automaticamente (recomendado)" + "value" : "Gerir palavras-passe…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Автоматически устанавливать обновления (рекомендуется)" + "value" : "Управление паролями..." } } } }, - "settings.browser.updates.title" : { - "comment" : "Title of the section in Settings where people set up automatic vs manual updates", + "prefrences.sync.credentials-limit-exceeded-description" : { + "comment" : "Description for sync credentials limits exceeded warning", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Browser-Updates" + "value" : "Du hast die maximale Anzahl von Passwörtern erreicht. Lösche einige, um die Synchronisierung fortzusetzen." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Browser Updates" + "value" : "You've reached the maximum number of passwords. Please delete some to resume sync." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Actualizaciones del navegador" + "value" : "Has alcanzado el número máximo de contraseñas. Elimina algunas para reanudar la sincronización." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Mises à jour du navigateur" + "value" : "Vous avez atteint le nombre maximal de mots de passe. Veuillez en supprimer quelques-uns pour reprendre la synchronisation." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiornamenti del browser" + "value" : "Hai raggiunto il numero massimo di password. Eliminane alcuni per riprendere la sincronizzazione." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Browserupdates" + "value" : "Je hebt het maximumaantal wachtwoorden bereikt. Verwijder er een paar om de synchronisatie te hervatten." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Aktualizacje przeglądarki" + "value" : "Osiągnięto maksymalną liczbę haseł. Usuń część z nich, aby wznowić synchronizację." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Atualizações do navegador" + "value" : "Atingiste o número máximo de palavras-passe. Elimina algumas para retomar a sincronização." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Обновления браузера" + "value" : "Достигнуто максимальное число паролей. Чтобы возобновить синхронизацию, удалите некоторые из них." } } } }, - "settings.checking.for.update" : { - "comment" : "Label informing users the app is currently checking for new update", + "prefrences.sync.credentials.bad.request.description" : { + "comment" : "Description of incorrectly formatted data error when syncing.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nach Update suchen" + "value" : "Einige Passwörter sind falsch formatiert oder zu lang und wurden nicht synchronisiert." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Checking for update" + "value" : "Some passwords are formatted incorrectly or too long and were not synced." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Buscando actualización" + "value" : "Algunas contraseñas tienen un formato incorrecto o demasiado largo y no se han sincronizado." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Vérification de la mise à jour" + "value" : "Certains mots de passe sont mal formatés ou trop longs et n'ont pas été synchronisés." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Controllo della presenza di aggiornamenti" + "value" : "Alcune password sono formattate in modo errato o sono troppo lunghe e non sono state sincronizzate." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Controleren op updates" + "value" : "Sommige wachtwoorden hebben de verkeerde indeling of zijn te lang en werden niet gesynchroniseerd." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Sprawdzanie dostępności aktualizacji" + "value" : "Niektóre hasła mają niepoprawny format lub są zbyt długie i nie zostały zsynchronizowane." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "A verificar atualizações…" + "value" : "Algumas palavras-passe estão formatadas incorretamente ou são demasiado longas e não foram sincronizadas." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Проверка обновлений" + "value" : "Некоторые пароли не синхронизируются из-за неверного формата или превышения ограничений по длине." } } } }, - "settings.downloading.update" : { - "comment" : "Label informing users the app is currently downloading the update. This will contain a percentage", + "prefrences.sync.invalid-login-description" : { + "comment" : "Description invalid credentials error when syncing.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Update wird heruntergeladen %@" + "value" : "Bei der Synchronisierung ist ein Fehler aufgetreten. Versuche, die Synchronisierung auf diesem Gerät zu deaktivieren, und stelle dann die Verbindung mit einem anderen Gerät oder deinem Wiederherstellungscode wieder her." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Downloading update %@" + "value" : "Sync encountered an error. Try disabling sync on this device and then reconnect using another device or your recovery code." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Descargando actualización %@" + "value" : "Se ha producido un error en la sincronización. Intenta desactivar la sincronización en este dispositivo y, a continuación, vuelve a conectarte con otro dispositivo o con tu código de recuperación." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Téléchargement de la mise à jour %@" + "value" : "La synchronisation a rencontré une erreur. Essayez de désactiver la synchronisation sur cet appareil, puis reconnectez-vous à l’aide d’un autre appareil ou de votre code de récupération." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Download dell'aggiornamento %@" + "value" : "Sync ha riscontrato un errore. Prova a disattivare la sincronizzazione su questo dispositivo e riconnettiti utilizzando un altro dispositivo o il codice di ripristino." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Update %@ downloaden" + "value" : "Er is een fout opgetreden bij het synchroniseren. Probeer synchronisatie op dit apparaat uit te schakelen en maak dan opnieuw verbinding met een ander apparaat of met je herstelcode." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pobieranie aktualizacji %@" + "value" : "Podczas synchronizacji wystąpił błąd. Spróbuj wyłączyć synchronizację na tym urządzeniu, a następnie ponownie nawiąż połączenie za pomocą innego urządzenia lub kodu odzyskiwania." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "A transferir a atualização %@" + "value" : "Erro durante a sincronização. Experimenta desativar a sincronização neste dispositivo e, em seguida, inicia sessão novamente noutro dispositivo ou com o teu código de recuperação." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Загрузка обновления %@" + "value" : "Произошла ошибка синхронизации. Попробуйте отключить синхронизацию на этом устройстве, а затем выполнить повторную привязку с помощью другого устройства или кода восстановления." } } } }, - "settings.last.checked" : { - "comment" : "Label informing users what is the last time the app checked for the update.", + "prefrences.sync.limit-exceeded-title" : { + "comment" : "Title for sync limits exceeded warning", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zuletzt nach Update gesucht" + "value" : "Synchronisierung angehalten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Last checked" + "value" : "Sync Paused" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Última comprobación" + "value" : "Sincronización pausada" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Dernière vérification" + "value" : "Synchronisation suspendue" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ultimo controllo" + "value" : "Sincronizzazione in pausa" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Laatst gecontroleerd" + "value" : "Synchronisatie onderbroken" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ostatnio sprawdzane" + "value" : "Synchronizacja wstrzymana" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Última verificação" + "value" : "Sincronização em pausa" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Последняя проверка" + "value" : "Синхронизация на паузе" } } } }, - "settings.manual.updates" : { - "comment" : "Title of the checkbox item to set up manual updates of the browser", + "print.menu.item" : { + "comment" : "Menu item title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nach Updates suchen, aber selbst entscheiden, ob du sie installieren möchtest" + "value" : "Drucken …" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Check for updates but let you choose to install them" + "value" : "Print…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Comprueba las actualizaciones, pero deja que tú decidas si las instalas" + "value" : "Imprimir…" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Rechercher les mises à jour sans les installer automatiquement" + "value" : "Imprimer…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Controlla gli aggiornamenti, ma ti fa scegliere se installarli" + "value" : "Stampa…" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Controleren op updates, maar keuze om te installeren of niet" + "value" : "Afdrukken ..." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Sprawdź dostępność aktualizacji, ale użytkownik decyduje o instalacji" + "value" : "Drukuj…" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Verificar se existem atualizações, mas deixa-te escolher instalá-las" + "value" : "Imprimir…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Проверять на обновления, но доверить установку вам" + "value" : "Печать…" } } } }, - "settings.newer.critical.update.available" : { - "comment" : "Label informing users the critical update of the app is available to install.", - "extractionState" : "extracted_with_value", + "Privacy Pro" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Kritisches Update erforderlich" - } - }, - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "Critical update needed" + "value" : "Privacy Pro" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Se necesita una actualización crítica" + "value" : "Privacy Pro" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Une mise à jour critique est nécessaire" + "value" : "Privacy Pro" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiornamento critico necessario" + "value" : "Privacy Pro" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Kritieke update nodig" + "value" : "Privacy Pro" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wymagana krytyczna aktualizacja" + "value" : "Privacy Pro" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Atualização crítica necessária" + "value" : "Privacy Pro" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Требуется критическое обновление" + "value" : "Privacy Pro" } } } }, - "settings.newer.version.available" : { - "comment" : "Label informing users the newer version of the app is available to install.", + "private.search.explenation" : { + "comment" : "feature explanation in settings", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neuere Version verfügbar" + "value" : "DuckDuckGo Private Search ist deine Standardsuchmaschine – du kannst also das Web durchsuchen, ohne getrackt zu werden." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Newer version available" + "value" : "DuckDuckGo Private Search is your default search engine, so you can search the web without being tracked." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Versión más reciente disponible" + "value" : "La búsqueda privada de DuckDuckGo es tu motor de búsqueda predeterminado para que puedas buscar en la web sin que te rastreen." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Une version plus récente est disponible" + "value" : "DuckDuckGo Private Search est votre moteur de recherche par défaut, qui vous permet d'effectuer des recherches sur le Web sans être suivi(e)." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "È disponibile una versione più recente" + "value" : "DuckDuckGo Private Search è il tuo motore di ricerca predefinito, quindi puoi effettuare ricerche sul Web senza essere tracciato." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nieuwere versie beschikbaar" + "value" : "DuckDuckGo Private Search is je standaardzoekmachine, zodat je op het web kunt zoeken zonder gevolgd te worden." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dostępna nowsza wersja" + "value" : "DuckDuckGo Private Search to domyślna wyszukiwarka, dzięki której możesz wyszukiwać treści w sieci, unikając śledzenia." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Versão mais recente disponível" + "value" : "O DuckDuckGo Private Search é o teu motor de pesquisa predefinido, para que possas pesquisar a web sem seres rastreado." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Доступна более новая версия" + "value" : "DuckDuckGo Private Search — ваша поисковая система по умолчанию. Вы можете пользоваться поиском в интернете, не опасаясь слежки." } } } }, - "settings.preparing.update" : { - "comment" : "Label informing users the app is preparing to update.", + "quit" : { + "comment" : "Quit button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Update vorbereiten" + "value" : "Verlassen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Preparing update" + "value" : "Quit" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Preparando la actualización" + "value" : "Salir" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Préparation de la mise à jour" + "value" : "Quitter" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Preparazione dell'aggiornamento" + "value" : "Uscire" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Update voorbereiden" + "value" : "Afsluiten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przygotowanie aktualizacji" + "value" : "Wyjdź" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "A preparar a atualização" + "value" : "Sair" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Подготовка обновления" + "value" : "Выйти" } } } }, - "settings.restart.to.update" : { - "comment" : "Button label triggering restart and update of the application.", + "quit.without.clearing" : { + "comment" : "Button to quit the application without clearing data", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zum Aktualisieren neu starten" + "value" : "Beenden ohne Löschen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Restart To Update" + "value" : "Quit Without Clearing" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Reiniciar para actualizar" + "value" : "Salir sin borrar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Redémarrer pour mettre à jour" + "value" : "Quitter sans effacer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riavvia per aggiornare" + "value" : "Esci senza cancellare" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Start opnieuw om bij te werken" + "value" : "Stoppen zonder wissen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Uruchom ponownie, aby zaktualizować" + "value" : "Wyjdź bez czyszczenia" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Reiniciar para atualizar" + "value" : "Sair sem limpar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Перезапустите для обновления" + "value" : "Выйти без очистки" } } } }, - "settings.retry.update" : { - "comment" : "Button label triggering a retry of the update.", - "extractionState" : "extracted_with_value", + "Recently Closed" : { + "comment" : "Main Menu History item", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Update nochmal versuchen" - } - }, - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "Retry Update" + "value" : "Kürzlich geschlossen" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Reintentar actualización" + "value" : "Cerrado recientemente" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Réessayer la mise à jour" + "value" : "Récemment clôturé" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riprova l'aggiornamento" + "value" : "Chiusa di recente" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Update opnieuw proberen" + "value" : "Onlangs gesloten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ponów próbę aktualizacji" + "value" : "Niedawno zamknięte" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Repetir atualização" + "value" : "Fechados recentemente" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Повторить попытку обновления" + "value" : "Недавно закрытые" } } } }, - "settings.run.update" : { - "comment" : "Button label triggering update of the application.", + "release.notes.menu.item" : { + "comment" : "Title of the dialog menu item that opens release notes", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo aktualisieren" + "value" : "Versionshinweise" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Update DuckDuckGo" + "value" : "Release Notes" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Actualizar DuckDuckGo" + "value" : "Notas de la versión" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Mettre à jour DuckDuckGo" + "value" : "Notes de mise à jour" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiorna DuckDuckGo" + "value" : "Note di rilascio" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo bijwerken" + "value" : "Release-opmerkingen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zaktualizuj DuckDuckGo" + "value" : "Informacje o wersji" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Atualizar o DuckDuckGo" + "value" : "Notas de lançamento" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Обновить DuckDuckGo" + "value" : "Примечания к релизу" } } } }, - "settings.up.to.date" : { - "comment" : "Label informing users the app is currently up to date and no update is required.", - "extractionState" : "extracted_with_value", + "Reload Page" : { + "comment" : "Main Menu View item", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo ist auf dem neuesten Stand" - } - }, - "en" : { - "stringUnit" : { - "state" : "new", - "value" : "DuckDuckGo is up to date" + "value" : "Seite neu laden" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo está actualizado" + "value" : "Volver a cargar página" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo est à jour" + "value" : "Recharger la page" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo è aggiornato" + "value" : "Ricarica pagina" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo is up-to-date" + "value" : "Pagina opnieuw laden" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przeglądarka DuckDuckGo jest aktualna" + "value" : "Załaduj ponownie stronę" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O DuckDuckGo está atualizado" + "value" : "Recarregar página" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "DuckDuckGo обновлен" + "value" : "Перезагрузить страницу" } } } }, - "settings.update.failed" : { - "comment" : "Label informing users the app is unable to update.", + "reload.page" : { + "comment" : "Context menu item", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Update fehlgeschlagen" + "value" : "Seite neu laden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Update failed" + "value" : "Reload Page" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Actualización fallida" + "value" : "Volver a cargar página" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Échec de la mise à jour" + "value" : "Recharger la page" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiornamento non riuscito" + "value" : "Ricarica pagina" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Update mislukt" + "value" : "Pagina opnieuw laden" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Niepowodzenie aktualizacji" + "value" : "Załaduj ponownie stronę" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "A atualização falhou" + "value" : "Recarregar página" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Не удалось обновить" + "value" : "Перезагрузить страницу" } } } }, - "share.menu.item" : { - "comment" : "Menu item title", + "remove-favorite" : { + "comment" : "Remove Favorite button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Teilen" + "value" : "Favorit entfernen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Share" + "value" : "Remove Favorite" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Compartir" + "value" : "Eliminar favorito" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Partager" + "value" : "Supprimer le favori" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Condividi" + "value" : "Rimuovi Preferito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Delen" + "value" : "Favoriet verwijderen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Udostępnij" + "value" : "Usuń ulubione" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Partilhar" + "value" : "Remover favorito" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Поделиться" + "value" : "Удалить из избранного" } } } }, - "share.menu.item.qr.code" : { - "comment" : "Menu item title", + "remove.from.favorites" : { + "comment" : "Button for removing bookmarks from favorites", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "QR-Code erstellen" + "value" : "Aus Favoriten entfernen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Create QR Code" + "value" : "Remove from Favorites" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Crear código QR" + "value" : "Eliminar de favoritos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Créer un code QR" + "value" : "Supprimer des favoris" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Crea codice QR" + "value" : "Rimuovi dai preferiti" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "QR-code maken" + "value" : "Verwijderen uit favorieten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Utwórz kod QR" + "value" : "Usuń z ulubionych" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Criar código QR" + "value" : "Remover dos favoritos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Создать QR-код" + "value" : "Удалить из избранного" } } } }, - "sharing.more" : { - "comment" : "Sharing Menu -> More…", + "remove.suggestion.tooltip" : { + "comment" : "Tooltip for the button which removes the history entry from the history", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Mehr …" + "value" : "Remove from browsing history" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "More…" + "value" : "Remove from browsing history" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Más…" + "value" : "Remove from browsing history" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Plus…" + "value" : "Remove from browsing history" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ulteriori informazioni..." + "value" : "Remove from browsing history" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Meer …" + "value" : "Remove from browsing history" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Więcej…" + "value" : "Remove from browsing history" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mais…" + "value" : "Remove from browsing history" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Еще..." + "value" : "Remove from browsing history" } } } }, - "Show Autofill Shortcut" : { - "comment" : "Main Menu View item", + "Reopen All Windows from Last Session" : { + "comment" : "Main Menu History item", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Autofill-Verknüpfung anzeigen" + "value" : "Alle Fenster der letzten Sitzung wieder öffnen" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar acceso directo a Autocompletar" + "value" : "Volver a abrir todas las ventanas de la última sesión" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rouvrir toutes les fenêtres de la dernière session" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Riapri tutte le finestre dell'ultima sessione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Alle vensters van de laatste sessie opnieuw openen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz ponownie wszystkie okna z ostatniej sesji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reabrir todas as janelas da última sessão" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Заново открыть все окна из последнего сеанса" + } + } + } + }, + "reopen.last.closed.tab" : { + "comment" : "This string represents an action to reopen the last closed tab in the browser", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Letzten geschlossenen Tab erneut öffnen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Reopen Last Closed Tab" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volver a abrir la última pestaña cerrada" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rouvrir le dernier onglet fermé" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Riapri l'ultima scheda chiusa" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Laatste gesloten tabblad opnieuw openen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz ponownie ostatnio zamkniętą kartę" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reabrir o último separador fechado" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Заново открыть последнюю закрытую вкладку" + } + } + } + }, + "reopen.last.closed.window" : { + "comment" : "This string represents an action to reopen the last closed window in the browser", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Letztes geschlossenes Fenster erneut öffnen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Reopen Last Closed Window" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volver a abrir la última ventana cerrada" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rouvrir la dernière fenêtre fermée" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Riapri l'ultima finestra chiusa" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Laatste gesloten venster opnieuw openen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz ponownie ostatnio zamknięte okno" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reabrir a última janela fechada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Заново открыть последнее закрытое окно" + } + } + } + }, + "report.broken.site" : { + "comment" : "Menu with feedback commands", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fehlerhafte Website melden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Report Broken Site" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Informar de sitio web dañado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Signaler un problème de site" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Segnala sito danneggiato" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Defecte website melden" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zgłoś uszkodzoną witrynę" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Denunciar site danificado" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сообщить о неработающем сайте" + } + } + } + }, + "reset-zoom" : { + "comment" : "Button that allows the user to reset the zoom level of the browser page", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zurücksetzen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Reset" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reiniciar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réinitialiser" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ripristina" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Herstel" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Resetowanie" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reset" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сбросить" + } + } + } + }, + "restart.bitwarden" : { + "comment" : "Button to restart Bitwarden application", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bitwarden neu starten" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Restart Bitwarden" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reiniciar bitwarden" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Redémarrer Bitwarden" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Riavvia Bitwarden" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bitwarden opnieuw opstarten" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Uruchom ponownie Bitwarden" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reiniciar o Bitwarden" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Перезапустить Bitwarden" + } + } + } + }, + "restart.bitwarden.info" : { + "comment" : "This string represents a message informing the user that Bitwarden is not responding and prompts them to restart the application to initiate communication again.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bitwarden reagiert nicht. Bitte neu starten, um die Kommunikation erneut zu starten" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Bitwarden is not responding. Please restart it to initiate the communication again" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bitwarden no responde. Reinícialo para volver a iniciar la comunicación" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bitwarden ne répond pas. Veuillez redémarrer l'application pour relancer la communication." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bitwarden non risponde. Riavviala per iniziare nuovamente la comunicazione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bitwarden reageert niet. Start het opnieuw op om de communicatie opnieuw te starten" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aplikacja Bitwarden nie odpowiada. Uruchom ją ponownie, aby ponownie zainicjować komunikację" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "O Bitwarden não está a responder. Reinicia-o para reiniciar a comunicação" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Приложение Bitwarden не отвечает. Перезапустите его, чтобы возобновить связь." + } + } + } + }, + "save" : { + "comment" : "Save button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Speichern" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Save" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Guardar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enregistrer" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Salva" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Opslaan" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zapisz" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Guardar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сохранить" + } + } + } + }, + "save.image.as" : { + "comment" : "Context menu item", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bild speichern unter …" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Save Image As…" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Guardar imagen como..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enregistrer l'image sous…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Salva immagine come…" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afbeelding opslaan als..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zapisz obraz jako…" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Guardar imagem como…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сохранить изображение как..." + } + } + } + }, + "scroll.to.find.app.settings" : { + "comment" : "Setup of the integration with Bitwarden app", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scrolle, um den Abschnitt App-Einstellungen (Alle Konten) zu finden." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Scroll to find the App Settings (All Accounts) section." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desplázate para buscar la sección Configuración de la aplicación (todas las cuentas)." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Faites défiler pour trouver la section Réglages de l'application (Tous les comptes)." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scorri per trovare la sezione Impostazioni app (tutti gli account)." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Scroll naar de sectie app-instellingen (Alle accounts)." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przewiń, aby znaleźć sekcję ustawień aplikacji (wszystkie konta)." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desloca-te até encontrares a secção Definições da aplicação (todas as contas)." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Прокрутите страницу вниз до раздела «Настройки приложения (все учетные записи)»." + } + } + } + }, + "search.with.DuckDuckGo" : { + "comment" : "Context menu item", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suchen mit DuckDuckGo" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Search with DuckDuckGo" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Buscar con DuckDuckGo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rechercher avec DuckDuckGo" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cerca con DuckDuckGo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zoeken met DuckDuckGo" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyszukaj z DuckDuckGo" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pesquisar com o DuckDuckGo" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Поиск в DuckDuckGo" + } + } + } + }, + "Select %@ Folder…" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wähle den Ordner %@ ..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seleccionar Carpeta %@..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sélectionner le dossier %@…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seleziona %@ cartella…" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Map %@ selecteren ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wybierz folder %@…" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecionar pasta %@…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Выбрать папку %@..." + } + } + } + }, + "Select Data to Import:" : { + "comment" : "Data Import section title for checkboxes of data type to import: Passwords or Bookmarks.", + "extractionState" : "stale", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zu importierende Daten auswählen:" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecciona los datos a importar:" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sélectionner les données à importer :" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seleziona i dati da importare:" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecteer gegevens om te importeren:" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wybierz dane do zaimportowania:" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecionar dados para importar:" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Выберите данные для импорта:" + } + } + } + }, + "Select Profile:" : { + "comment" : "Browser Profile picker title for Data Import", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Profil auswählen:" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecciona perfil:" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sélectionner le profil :" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seleziona profilo:" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Profiel selecteren:" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wybierz profil:" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecionar perfil:" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Выберите профиль:" + } + } + } + }, + "select.bitwarden.preferences" : { + "comment" : "Setup of the integration with Bitwarden app (up to and including macOS 12)", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wähle Bitwarden → Einstellungen in der Mac-Menüleiste aus." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Select Bitwarden → Preferences from the Mac menu bar." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecciona Bitwarden → Preferencias en la barra de menú de Mac." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sélectionnez Bitwarden → Préférences dans la barre de menu Mac." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seleziona Bitwarden → Preferenze dalla barra dei menu del Mac." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecteer Bitwarden → Voorkeuren in de Mac-menubalk." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wybierz Bitwarden → Preferencje na pasku menu komputera Mac." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seleciona Bitwarden → Preferências na barra de menus do Mac." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "В строке меню Mac выберите Bitwarden → Предпочтения." + } + } + } + }, + "select.bitwarden.settings" : { + "comment" : "Setup of the integration with Bitwarden app (macOS 13 and above)", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wähle Bitwarden → Einstellungen in der Mac-Menüleiste aus." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Select Bitwarden → Settings from the Mac menu bar." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecciona Bitwarden → Configuración en la barra de menú de Mac." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sélectionnez Bitwarden → Réglages dans la barre de menus Mac." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seleziona Bitwarden → Impostazioni dalla barra dei menu del Mac." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecteer Bitwarden → Instellingen in de Mac-menubalk." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wybierz Bitwarden → Ustawienia na pasku menu komputera Mac." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seleciona Bitwarden → Definições na barra de menus do Mac." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "В строке меню Mac выберите Bitwarden → Настройки." + } + } + } + }, + "send.browser.feedback" : { + "comment" : "Menu with feedback commands", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Browser-Feedback senden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Send Browser Feedback" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar comentarios del navegador" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer des commentaires sur le navigateur" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invia feedback sul browser" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feedback over browser sturen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyślij opinię o przeglądarce" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar feedback sobre o navegador" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отправить отзыв о браузере" + } + } + } + }, + "send.browser.feedback.feedback-helps" : { + "comment" : "Text shown to the user when they provide feedback.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dein Feedback hilft uns, den DuckDuckGo-Browser zu verbessern." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your feedback will help us improve the DuckDuckGo browser." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tus comentarios nos ayudarán a mejorar el navegador DuckDuckGo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vos commentaires nous aideront à améliorer le navigateur DuckDuckGo." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il tuo feedback ci aiuterà a migliorare il browser DuckDuckGo." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jouw feedback helpt ons de DuckDuckGo-browser te verbeteren." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twoja opinia pomoże nam ulepszyć przeglądarkę DuckDuckGo." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "O teu feedback ajuda-nos a melhorar o navegador DuckDuckGo." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ваш ответ поможет браузеру DuckDuckGo стать еще лучше." + } + } + } + }, + "send.browser.feedback.general-feedback" : { + "comment" : "Name of the option the user can chose to give general browser feedback", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Allgemeines Feedback" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "General feedback" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comentarios generales" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Commentaires d'ordre général" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feedback generale" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Algemene feedback" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Opinia ogólna" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feedback geral" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Общий комментарий" + } + } + } + }, + "send.browser.feedback.report-problem" : { + "comment" : "Name of the option the user can chose to give browser feedback about a problem they enountered", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Problem melden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Report a problem" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Informar de un problema" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Signaler un problème" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Segnala un problema" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Een probleem melden" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zgłoś problem" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comunicar um problema" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отчет о проблеме" + } + } + } + }, + "send.browser.feedback.request-feature" : { + "comment" : "Name of the option the user can chose to give browser feedback about a feature they would like", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Eine Funktion anfordern" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Request a feature" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Solicitar una función" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Demander une fonctionnalité" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Richiedi una funzionalità" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Een functie aanvragen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Poproś o funkcję" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pedir uma funcionalidade" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Запрос функции" + } + } + } + }, + "send.browser.feedback.select-category" : { + "comment" : "Title of the picker where the user can chose the category of the feedback they want ot send.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "EINE KATEGORIE AUSWÄHLEN" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Select a category" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "SELECCIONA UNA CATEGORÍA" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "SÉLECTIONNER UNE CATÉGORIE" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "SELEZIONA UNA CATEGORIA" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "SELECTEER EEN CATEGORIE" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "WYBIERZ KATEGORIĘ" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "SELECIONA UMA CATEGORIA" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "ВЫБЕРИТЕ КАТЕГОРИЮ" + } + } + } + }, + "send.browser.feedback.thankyou" : { + "comment" : "Thanks the user for sending feedback", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vielen Dank!" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Thank you!" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¡Gracias!" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Merci !" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Grazie!" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bedankt!" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dziękujemy!" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obrigado!" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Спасибо!" + } + } + } + }, + "send.browser.feedback.title" : { + "comment" : "Title of the interface to send feedback on the browser", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hilf mit, den DuckDuckGo-Browser zu verbessern" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Help Improve the DuckDuckGo Browser" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ayuda a mejorar el navegador DuckDuckGo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contribuer à l'amélioration du navigateur DuckDuckGo" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contribuisci a migliorare il browser DuckDuckGo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Help de DuckDuckGo-browser te verbeteren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pomóż ulepszać przeglądarkę DuckDuckGo" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajudar a melhorar o navegador DuckDuckGo" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Помогите улучшить браузер DuckDuckGo" + } + } + } + }, + "send.ppro.feedback" : { + "comment" : "Menu with feedback commands", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feedback von Privacy Pro senden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Send Privacy Pro Feedback" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar comentarios sobre Privacy Pro" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer des commentaires sur Privacy Pro" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invia feedback su Privacy Pro" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feedback sturen naar Privacy Pro" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyślij opinię na temat Privacy Pro" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar feedback sobre o Privacy Pro" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отправить отзыв о Privacy Pro" + } + } + } + }, + "settings" : { + "comment" : "Menu item for opening settings", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Einstellungen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Settings" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajustes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paramètres" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impostazioni" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instellingen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ustawienia" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Definições" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Настройки" + } + } + } + }, + "Settings…" : { + "comment" : "Menu item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Einstellungen …" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajustes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réglages…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impostazioni…" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instellingen …" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ustawienia…" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Definições…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Настройки..." + } + } + } + }, + "settings.automatic.updates" : { + "comment" : "Title of the checkbox item to set up automatic updates of the browser", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Updates automatisch installieren (empfohlen)" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Automatically install updates (recommended)" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instalar actualizaciones automáticamente (recomendado)" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Installer automatiquement les mises à jour (recommandé)" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Installa automaticamente gli aggiornamenti (scelta consigliata)" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Updates automatisch installeren (aanbevolen)" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatyczne instalowanie aktualizacji (zalecane)" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instalar atualizações automaticamente (recomendado)" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Автоматически устанавливать обновления (рекомендуется)" + } + } + } + }, + "settings.browser.updates.title" : { + "comment" : "Title of the section in Settings where people set up automatic vs manual updates", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Browser-Updates" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Browser Updates" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actualizaciones del navegador" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mises à jour du navigateur" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aggiornamenti del browser" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Browserupdates" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aktualizacje przeglądarki" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Atualizações do navegador" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Обновления браузера" + } + } + } + }, + "settings.checking.for.update" : { + "comment" : "Label informing users the app is currently checking for new update", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nach Update suchen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Checking for update" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Buscando actualización" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vérification de la mise à jour" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Controllo della presenza di aggiornamenti" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Controleren op updates" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sprawdzanie dostępności aktualizacji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A verificar atualizações…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Проверка обновлений" + } + } + } + }, + "settings.downloading.update" : { + "comment" : "Label informing users the app is currently downloading the update. This will contain a percentage", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update wird heruntergeladen %@" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Downloading update %@" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Descargando actualización %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Téléchargement de la mise à jour %@" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Download dell'aggiornamento %@" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update %@ downloaden" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pobieranie aktualizacji %@" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A transferir a atualização %@" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Загрузка обновления %@" + } + } + } + }, + "settings.last.checked" : { + "comment" : "Label informing users what is the last time the app checked for the update.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zuletzt nach Update gesucht" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Last checked" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Última comprobación" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dernière vérification" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ultimo controllo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Laatst gecontroleerd" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ostatnio sprawdzane" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Última verificação" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Последняя проверка" + } + } + } + }, + "settings.manual.updates" : { + "comment" : "Title of the checkbox item to set up manual updates of the browser", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nach Updates suchen, aber selbst entscheiden, ob du sie installieren möchtest" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Check for updates but let you choose to install them" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comprueba las actualizaciones, pero deja que tú decidas si las instalas" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rechercher les mises à jour sans les installer automatiquement" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Controlla gli aggiornamenti, ma ti fa scegliere se installarli" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Controleren op updates, maar keuze om te installeren of niet" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sprawdź dostępność aktualizacji, ale użytkownik decyduje o instalacji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verificar se existem atualizações, mas deixa-te escolher instalá-las" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Проверять на обновления, но доверить установку вам" + } + } + } + }, + "settings.newer.critical.update.available" : { + "comment" : "Label informing users the critical update of the app is available to install.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kritisches Update erforderlich" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Critical update needed" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se necesita una actualización crítica" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une mise à jour critique est nécessaire" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aggiornamento critico necessario" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kritieke update nodig" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wymagana krytyczna aktualizacja" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Atualização crítica necessária" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Требуется критическое обновление" + } + } + } + }, + "settings.newer.version.available" : { + "comment" : "Label informing users the newer version of the app is available to install.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Neuere Version verfügbar" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Newer version available" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Versión más reciente disponible" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une version plus récente est disponible" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "È disponibile una versione più recente" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nieuwere versie beschikbaar" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dostępna nowsza wersja" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Versão mais recente disponível" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Доступна более новая версия" + } + } + } + }, + "settings.preparing.update" : { + "comment" : "Label informing users the app is preparing to update.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update vorbereiten" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Preparing update" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Preparando la actualización" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Préparation de la mise à jour" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Preparazione dell'aggiornamento" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update voorbereiden" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przygotowanie aktualizacji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A preparar a atualização" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подготовка обновления" + } + } + } + }, + "settings.restart.to.update" : { + "comment" : "Button label triggering restart and update of the application.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zum Aktualisieren neu starten" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Restart To Update" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reiniciar para actualizar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Redémarrer pour mettre à jour" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Riavvia per aggiornare" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Start opnieuw om bij te werken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Uruchom ponownie, aby zaktualizować" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reiniciar para atualizar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Перезапустите для обновления" + } + } + } + }, + "settings.retry.update" : { + "comment" : "Button label triggering a retry of the update.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update nochmal versuchen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Retry Update" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reintentar actualización" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réessayer la mise à jour" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Riprova l'aggiornamento" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update opnieuw proberen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ponów próbę aktualizacji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repetir atualização" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторить попытку обновления" + } + } + } + }, + "settings.run.update" : { + "comment" : "Button label triggering update of the application.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo aktualisieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Update DuckDuckGo" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actualizar DuckDuckGo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mettre à jour DuckDuckGo" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aggiorna DuckDuckGo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo bijwerken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zaktualizuj DuckDuckGo" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Atualizar o DuckDuckGo" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Обновить DuckDuckGo" + } + } + } + }, + "settings.up.to.date" : { + "comment" : "Label informing users the app is currently up to date and no update is required.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo ist auf dem neuesten Stand" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "DuckDuckGo is up to date" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo está actualizado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo est à jour" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo è aggiornato" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo is up-to-date" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przeglądarka DuckDuckGo jest aktualna" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "O DuckDuckGo está atualizado" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo обновлен" + } + } + } + }, + "settings.update.failed" : { + "comment" : "Label informing users the app is unable to update.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update fehlgeschlagen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Update failed" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actualización fallida" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Échec de la mise à jour" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aggiornamento non riuscito" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Update mislukt" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Niepowodzenie aktualizacji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A atualização falhou" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Не удалось обновить" + } + } + } + }, + "share.menu.item" : { + "comment" : "Menu item title", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Teilen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Share" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Compartir" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partager" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Condividi" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Delen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Udostępnij" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partilhar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Поделиться" + } + } + } + }, + "share.menu.item.qr.code" : { + "comment" : "Menu item title", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "QR-Code erstellen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Create QR Code" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Crear código QR" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Créer un code QR" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Crea codice QR" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "QR-code maken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utwórz kod QR" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Criar código QR" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Создать QR-код" + } + } + } + }, + "sharing.more" : { + "comment" : "Sharing Menu -> More…", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mehr …" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "More…" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Más…" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plus…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ulteriori informazioni..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meer …" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Więcej…" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mais…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Еще..." + } + } + } + }, + "Show Autofill Shortcut" : { + "comment" : "Main Menu View item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autofill-Verknüpfung anzeigen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar acceso directo a Autocompletar" } }, "fr" : { @@ -58853,4796 +62645,8816 @@ "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra scorciatoia compilazione automatica" + "value" : "Mostra scorciatoia compilazione automatica" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Snelkoppeling voor automatisch invullen weergeven" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pokaż skrót do autouzupełniania" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar atalho de preenchimento automático" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Показывать ярлык для автозаполнения" + } + } + } + }, + "Show Bookmarks Shortcut" : { + "comment" : "Main Menu View item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lesezeichen-Verknüpfung anzeigen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar acceso directo a Favoritos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher le raccourci des signets" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostra scorciatoia segnalibri" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Snelkoppeling voor bladwijzers weergeven" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pokaż skrót do zakładek" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar atalho de marcadores" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Показывать ярлык для закладок" + } + } + } + }, + "Show Downloads Shortcut" : { + "comment" : "Main Menu View item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Download-Verknüpfung anzeigen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar acceso directo a Descargas" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher le raccourci des téléchargements" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostra scorciatoia download" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Snelkoppeling voor downloads weergeven" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pokaż skrót do pobranych" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar atalho de transferências" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Показать ярлык для загрузок" + } + } + } + }, + "Show Next Tab" : { + "comment" : "Main Menu Window item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nächsten Tab anzeigen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar pestaña siguiente" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher l'onglet suivant" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostra scheda successiva" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volgende tabblad tonen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pokaż następną kartę" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar separador seguinte" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Показать следующую вкладку" + } + } + } + }, + "Show Page Source" : { + "comment" : "Main Menu View-Developer item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seitenquelle anzeigen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar origen de página" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher la source de la page" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostra origine pagina" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paginabron weergeven" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pokaż źródło strony" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar código da página" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Показать исходный код страницы" + } + } + } + }, + "Show Previous Tab" : { + "comment" : "Main Menu Window item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vorherigen Tab anzeigen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar pestaña anterior" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher l'onglet précédent" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostra scheda precedente" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vorig tabblad tonen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pokaż poprzednią kartę" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar separador anterior" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Показать предыдущую вкладку" + } + } + } + }, + "Show Resources" : { + "comment" : "Main Menu View-Developer item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ressourcen anzeigen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar recursos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher les ressources" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostra risorse" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hulpmiddelen tonen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pokaż zasoby" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar recursos" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Показать ресурсы" + } + } + } + }, + "Show Substitutions" : { + "comment" : "Main Menu Edit-Substitutions item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ersetzungen anzeigen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar Reemplazos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher les substitutions" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostra Sostituzioni" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aanpassingen tonen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pokaż podstawienia" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar substituições" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Показывать функции работы с текстом" + } + } + } + }, + "show.data.clearing.settings" : { + "comment" : "Button in Settings. It navigates user to Data Clearing Settings. The Data Clearing string should match the string with the preferences.data-clearing key", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Einstellungen zum Löschen von Daten öffnen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Open Data Clearing Settings" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir configuración de borrado de datos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir les paramètres d'effacement des données" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apri Impostazioni cancellazione dati" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instellingen voor het wissen van open gegevens" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz ustawienia czyszczenia danych" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir Definições de limpeza de dados" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Открыть настройки очистки данных" + } + } + } + }, + "show.folder.contents" : { + "comment" : "Menu item that shows the content of a folder ", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordnerinhalte anzeigen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Show Folder Contents" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar el contenido de la carpeta" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Afficher le contenu du dossier" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostra il contenuto della cartella" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inhoud van map weergeven" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pokaż zawartość folderu" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mostrar conteúdos da pasta" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Показать содержимое папки" + } + } + } + }, + "site.not.working.button.title" : { + "comment" : "Button title that appears on a dialog asking users about possible breakage of a site", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lass es uns wissen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Let Us Know" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Háznoslo saber" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Faites-le nous savoir" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Faccelo sapere" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Laat het ons weten" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Daj nam znać" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contacte-nos" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сообщить" + } + } + } + }, + "site.not.working.title" : { + "comment" : "Title that appears on a dialog asking users about possible breakage of a site", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Webseite funktioniert nicht?" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Site not working?" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¿El sitio no funciona?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le site ne fonctionne pas ?" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il sito non funziona?" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Werkt de site niet?" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Witryna nie działa?" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "O site não funciona?" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сайт не работает?" + } + } + } + }, + "Smart Copy/Paste" : { + "comment" : "Main Menu Edit-Substitutions item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Intelligentes Kopieren/Einfügen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copiar/Pegar inteligente" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copier/coller intelligent" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copia/Incolla intelligente" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Slim kopiëren/plakken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inteligentne kopiowanie/wklejanie" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Copiar/colar inteligente" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Умное копирование/вставка" + } + } + } + }, + "Smart Dashes" : { + "comment" : "Main Menu Edit-Substitutions item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Intelligente Gedankenstriche" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Guiones inteligentes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tirets intelligents" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trattini intelligenti" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Slimme streepjes" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inteligentne myślniki" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Traços formatados" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Умные тире" + } + } + } + }, + "Smart Links" : { + "comment" : "Main Menu Edit-Substitutions item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Intelligente Links" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enlaces inteligentes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Liens intelligents" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Link intelligenti" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Slimme links" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inteligentne łącza" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Links inteligentes" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Умные ссылки" + } + } + } + }, + "Smart Quotes" : { + "comment" : "Main Menu Edit-Substitutions item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Intelligente Zitate" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comillas inteligentes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Guillemets intelligents" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Virgolette doppie intelligenti" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Slimme aanhalingstekens" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inteligentne cudzysłowy" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aspas curvas" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Умные кавычки" + } + } + } + }, + "Speech" : { + "comment" : "Main Menu Edit item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rede" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voz" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Discours" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Leggi il testo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Spraak" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mowa" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fala" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Речь" + } + } + } + }, + "ssl.error.page.tab.title" : { + "comment" : "Title shown in an error page tab that warn users of security risks on a website due to SSL issues", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Warnung: Website ist möglicherweise unsicher" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Warning: Site May Be Insecure" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Advertencia: el sitio puede ser inseguro" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Avertissement : le site n'est peut-être pas sécurisé" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Attenzione: il sito potrebbe non essere sicuro" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Waarschuwing: Website mogelijk onveilig" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ostrzeżenie: witryna może być niebezpieczna" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aviso: o site pode ser inseguro" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Внимание! Возможно, сайт небезопасен" + } + } + } + }, + "Start Speaking" : { + "comment" : "Main Menu Edit-Speech item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sprechen beginnen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Empezar a hablar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Commencer à parler" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inizia a parlare" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Beginnen met spreken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zacznij mówić" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Iniciar fala" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Начать чтение" + } + } + } + }, + "Stop" : { + "comment" : "Main Menu View item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stopp" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Detener" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Arrêter" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Interrompi" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stoppen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zatrzymaj" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Parar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Остановить" + } + } + } + }, + "Stop Speaking" : { + "comment" : "Main Menu Edit-Speech item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aufhören zu sprechen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dejar de hablar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Arrêter de parler" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Interrompi la riproduzione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stoppen met spreken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przestań mówić" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Parar fala" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Остановить чтение" + } + } + } + }, + "submit" : { + "comment" : "Submit button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abschicken" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Submit" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invia" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verzenden" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Prześlij" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Submeter" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отправить" + } + } + } + }, + "submit.report" : { + "comment" : "Submit Report button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bericht senden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Submit Report" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar informe" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer le rapport" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invia segnalazione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rapport versturen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Prześlij raport" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Submeter relatório" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отправить жалобу" + } + } + } + }, + "subscription.progress.view.completing.purchase" : { + "comment" : "Progress view title when completing the purchase", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kauf wird abgeschlossen ..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Completing purchase..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Completando compra..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Finalisation de l’achat en cours…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stiamo completando l'acquisto..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je aankoop wordt afgerond ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Finalizowanie zakupu..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A concluir a compra…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Завершение покупки..." + } + } + } + }, + "subscription.progress.view.purchasing.subscription" : { + "comment" : "Progress view title when starting the purchase", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kauf in Bearbeitung ..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Purchase in progress..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Compra en curso..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Achat en cours…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Acquisto in corso..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je aankoop wordt gedaan ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trwa zakup..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Compra em curso…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Оформление покупки..." + } + } + } + }, + "subscription.progress.view.restoring.subscription" : { + "comment" : "Progress view title when restoring past subscription purchase", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement wird wiederhergestellt ..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Restoring subscription..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurando suscripción..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rétablissement de l'abonnement…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stiamo ripristinando l'abbonamento..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je abonnement wordt hersteld ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przywracanie subskrypcji..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A restaurar a subscrição…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Восстановление подписки..." + } + } + } + }, + "subscription.settings.menu.item" : { + "comment" : "Title for Subscription Settings item in the options menu", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnementeinstellungen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Subscription Settings" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajustes de suscripción" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paramètres d'abonnement" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impostazioni dell'abbonamento" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnementinstellingen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ustawienia subskrypcji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Definições de Subscrição" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Настройки подписки" + } + } + } + }, + "sync.promo.bookmarks.message" : { + "comment" : "Message for the Sync Promotion banner when user has bookmarks that can be synced", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kein Konto erforderlich. Ende-zu-Ende-Verschlüsselung bedeutet, dass niemand außer dir deine Lesezeichen sehen kann, nicht einmal wir." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "No account needed. End-to-end encryption means nobody but you can see your bookmarks, not even us." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No necesitas ninguna cuenta. El cifrado de extremo a extremo significa que nadie más que tú puede ver tus marcadores, ni siquiera nosotros." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun compte n'est nécessaire. Le cryptage de bout en bout signifie que personne d'autre ne peut voir vos signets, pas même nous." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non è necessario un account. Con la crittografia end-to-end, nessuno, a parte te, può vedere i tuoi segnalibri, nemmeno noi." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Geen account nodig. End-to-end versleuteling betekent dat niemand anders dan jij je bladwijzers kan zien, zelfs wij niet." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Konto nie jest wymagane. Kompleksowe szyfrowanie oznacza, że nikt poza Tobą nie może zobaczyć Twoich zakładek, nawet my." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não precisas de uma conta. A encriptação ponta a ponta significa que ninguém além de ti pode ver os teus favoritos, nem mesmo nós." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Учетная запись не требуется. Сквозное шифрование означает, что ваши закладки видны только вам. Даже у нас нет к ним доступа." + } + } + } + }, + "sync.promo.bookmarks.title" : { + "comment" : "Title for the Sync Promotion banner", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lesezeichen synchronisieren und sichern" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Sync & Back Up Your Bookmarks" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sincroniza y haz copias de seguridad de tus marcadores" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchronisez et sauvegardez vos signets" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sincronizza ed esegui il backup dei tuoi segnalibri" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchroniseer en back-up je bladwijzers" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchronizuj i twórz kopie zapasowe zakładek" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sincroniza e faz uma cópia de segurança dos teus favoritos" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Синхронизация и резервное копирование закладок" + } + } + } + }, + "sync.promo.confirm.action" : { + "comment" : "Title for a button in the Sync Promotion banner to set up Sync", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sync einrichten" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Set Up Sync" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configurar la sincronización" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configurer la synchronisation" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configura la sincronizzazione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchronisatie instellen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Skonfiguruj synchronizację" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configurar sincronização" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Настройка синхронизации" + } + } + } + }, + "sync.promo.dismiss.action" : { + "comment" : "Title for a button in the Sync Promotion banner to dismiss Sync promotion banner", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nein, danke" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "No Thanks" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No, gracias" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non merci" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "No, grazie" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nee, bedankt" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie, dziękuję" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não, obrigado" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Нет, спасибо" + } + } + } + }, + "sync.promo.passwords.message" : { + "comment" : "Message for the Sync Promotion banner when user has passwords that can be synced", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kein Konto erforderlich. Ende-zu-Ende-Verschlüsselung bedeutet, dass niemand außer dir deine Passwörter sehen kann, nicht einmal wir." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "No account needed. End-to-end encryption means nobody but you can see your passwords, not even us." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No necesitas ninguna cuenta. El cifrado de extremo a extremo significa que nadie más que tú puede ver tus contraseñas, ni siquiera nosotros." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aucun compte n'est nécessaire. Le cryptage de bout en bout signifie que personne d'autre ne peut voir vos mots de passe, pas même nous." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non è necessario un account. Con la crittografia end-to-end, nessuno a parte te può vedere le tue password, nemmeno noi." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Geen account nodig. Dankzij end-to-end versleuteling kan niemand behalve jij je wachtwoorden zien, zelfs wij niet." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Konto nie jest wymagane. Kompleksowe szyfrowanie oznacza, że nikt poza Tobą nie może zobaczyć Twoich haseł, nawet my." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não precisas de uma conta. A encriptação ponta a ponta significa que ninguém além de ti pode ver as tuas palavras-passe, nem mesmo nós." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Учетная запись не требуется. Сквозное шифрование означает, что ваши пароли видны только вам. Даже у нас нет к ним доступа." + } + } + } + }, + "sync.promo.passwords.side.panel.subtitle" : { + "comment" : "Subtitle for the Sync Promotion in passwords side panel", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchronisieren und sichern" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Sync & Backup" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sincronización y copia de seguridad" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchronisation et sauvegarde" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sincronizzazione e backup" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchronisatie en back-up" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchronizacja i kopia zapasowa" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sincronização e cópia de segurança" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Синхронизация и резервное копирование" + } + } + } + }, + "sync.promo.passwords.side.panel.title" : { + "comment" : "Title for the Sync Promotion in passwords side panel", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Einrichtung" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Setup" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuración" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Installation" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configurazione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instellen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Konfiguracja" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuração" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Настройка" + } + } + } + }, + "sync.promo.passwords.title" : { + "comment" : "Title for the Sync Promotion banner", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Passwörter synchronisieren und sichern " + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Sync & Back Up Your Passwords " + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sincroniza y haz copias de seguridad de tus contraseñas " + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchronisez et sauvegardez vos mots de passe " + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sincronizza e fai il backup delle password " + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchroniseer en maak een back-up van je wachtwoorden " + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Synchronizuj i twórz kopie zapasowe haseł " + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sincroniza e faz uma cópia de segurança das tuas palavras-passe " + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Синхронизация и резервное копирование паролей " + } + } + } + }, + "tab.bookmarks.title" : { + "comment" : "Tab bookmarks title", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lesezeichen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Bookmarks" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Marcadores" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Signets" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Segnalibri" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bladwijzers" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zakładki" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Marcadores" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Закладки" + } + } + } + }, + "tab.empty.title" : { + "comment" : "Title for an empty tab without a title", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ohne Titel" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Untitled" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sin título" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sans titre" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Senza titolo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Naamloos" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bez tytułu" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sem título" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Без названия" + } + } + } + }, + "tab.error.title" : { + "comment" : "Tab error title", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seite konnte nicht geöffnet werden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Failed to open page" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Error al abrir la página" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible d'ouvrir la page" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossibile aprire la pagina" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kan de pagina niet openen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie udało się otworzyć strony" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Falha ao abrir a página" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Не удалось открыть страницу" + } + } + } + }, + "tab.home.title" : { + "comment" : "Tab home title", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Neuer Tab" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "New Tab" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nueva pestaña" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouvel onglet" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nuova scheda" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nieuw tabblad" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nowa karta" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Novo separador" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Новая вкладка" + } + } + } + }, + "tab.onboarding.title" : { + "comment" : "Tab onboarding title", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Willkommen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Welcome" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Te damos la bienvenida" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bienvenue" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ti diamo il benvenuto" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Welkom" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Witamy" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Damos-te as boas-vindas" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Добро пожаловать!" + } + } + } + }, + "tab.preferences.title" : { + "comment" : "Tab preferences title", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Einstellungen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Settings" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajustes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paramètres" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impostazioni" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instellingen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ustawienia" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Definições" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Настройки" + } + } + } + }, + "tab.releaseNotes.title" : { + "comment" : "Title of deticated tab for Release Notes", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Versionshinweise" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Release Notes" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notas de la versión" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notes de mise à jour" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Note di rilascio" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Release-opmerkingen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Informacje o wersji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Notas de lançamento" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Примечания к релизу" + } + } + } + }, + "Text Replacement" : { + "comment" : "Main Menu Edit-Substitutions item", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Textersetzung" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reemplazo de texto" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remplacement du texte" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sostituzione del testo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tekst vervangen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zastępowanie tekstu" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Substituição de texto" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Замена текста" + } + } + } + }, + "That didn’t work either. Please submit a report to help us fix the issue." : { + "comment" : "Data import failure Report dialog title containing a message that not only automatic data import has failed failed but manual browser data import didn‘t work either.", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Das hat auch nicht funktioniert. Bitte reiche einen Bericht ein, um uns bei der Behebung des Problems zu helfen." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Eso tampoco ha funcionado. Envía un informe para ayudarnos a solucionar el problema." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cela n'a pas fonctionné non plus. Veuillez soumettre un rapport pour nous aider à résoudre le problème." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non ha funzionato nemmeno questa operazione. Invia una segnalazione per aiutarci a risolvere il problema." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dat werkte ook niet. Dien een melding in om ons te helpen het probleem op te lossen." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "To też nie zadziałało. Prześlij raport, aby pomóc nam w rozwiązaniu problemu." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Essa ação também não funcionou. Envia um relatório para nos ajudar a corrigir o problema." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Опять не сработало. Отправьте отчет, чтобы мы могли устранить ошибку." + } + } + } + }, + "The following information will be sent to DuckDuckGo. No personally identifiable information will be sent." : { + "comment" : "Data import failure Report dialog subtitle about the data being collected with the report.", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Die folgenden Informationen werden an DuckDuckGo gesendet. Es werden keine persönlich identifizierbaren Informationen gesendet." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La siguiente información se enviará a DuckDuckGo. No se enviará ninguna información de identificación personal." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les informations suivantes seront envoyées à DuckDuckGo. Aucune information susceptible de vous identifier personnellement ne sera envoyée." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le seguenti informazioni saranno inviate a DuckDuckGo. Non sarà inviata alcuna informazione di identificazione personale." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "De volgende informatie wordt naar DuckDuckGo gestuurd. Er wordt geen persoonlijk identificeerbare informatie verzonden." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Poniższe informacje zostaną wysłane do DuckDuckGo. Nie zostaną wysłane żadne dane osobowe." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "As seguintes informações serão enviadas à DuckDuckGo. Não serão enviadas quaisquer informações de identificação pessoal." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Следующая информация будет отправлена в DuckDuckGo. По ней невозможно установить вашу личность." + } + } + } + }, + "The version of the browser you are trying to import from" : { + "comment" : "Data import failure Report dialog description of a report field providing version of a browser user is trying to import data from", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Die Version des Browsers, aus dem du importieren möchtest" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La versión del navegador desde el que estás intentando importar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "La version du navigateur à partir duquel vous essayez d'importer" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "La versione del browser da cui si sta tentando di eseguire l'importazione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "De browserversie van waaruit je probeert te importeren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wersja przeglądarki, z której próbujesz zaimportować dane" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A versão do navegador a partir do qual estás a importar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Версия браузера, из которого вы пытаетесь импортировать данные" + } + } + } + }, + "tooltip.addToFavorites" : { + "comment" : "Tooltip for add to favorites button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zu Favoriten hinzufügen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Add to Favorites" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Añadir a favoritos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter aux favoris" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aggiungi ai Preferiti" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toevoegen aan favorieten" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dodaj do ulubionych" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Adicionar aos favoritos" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Добавить в избранное" + } + } + } + }, + "tooltip.application-menu.show" : { + "comment" : "Tooltip for the Application Menu button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anwendungsmenü öffnen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Open application menu" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir menú de aplicación" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir le menu de l'application" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apri il menu dell'applicazione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Applicatiemenu openen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz menu aplikacji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir o menu da aplicação" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Открыть меню приложения" + } + } + } + }, + "tooltip.autofill.add-item" : { + "comment" : "Tooltip for the Add Item button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Element hinzufügen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Add item" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Añadir elemento" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter un élément" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aggiungi elemento" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Item toevoegen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dodaj element" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Adicionar elemento" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Добавить запись" + } + } + } + }, + "tooltip.autofill.more-options" : { + "comment" : "Tooltip for the More Options button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Weitere Optionen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "More options" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Más opciones" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plus d'options" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Altre opzioni" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Meer opties" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Więcej opcji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mais opções" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Другие параметры" + } + } + } + }, + "tooltip.autofill.shortcut" : { + "comment" : "Tooltip for the autofill shortcut", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autovervollständigen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Autofill" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autocompletar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Saisie automatique" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Compilazione automatica" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatisch invullen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autouzupełnianie" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Preenchimento automático" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Автозаполнение" + } + } + } + }, + "tooltip.bookmark.add" : { + "comment" : "Tooltip for the Add Bookmark button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Diese Seite als Lesezeichen markieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Bookmark this page" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Marcar esta página" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter cette page aux signets" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Crea un segnalibro per questa pagina" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bladwijzer toevoegen aan deze pagina" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dodaj tę stronę do zakładek" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Marcar esta página" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сохранить в закладках" + } + } + } + }, + "tooltip.bookmark.edit" : { + "comment" : "Tooltip for the Edit Bookmark button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lesezeichen bearbeiten" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Edit bookmark" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Editar marcador" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier le signet" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifica segnalibro" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bladwijzer bewerken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edytuj zakładkę" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Editar marcador" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Редактировать закладку" + } + } + } + }, + "tooltip.bookmarks.manage-bookmarks" : { + "comment" : "Tooltip for the Manage Bookmarks button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lesezeichen verwalten" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Manage bookmarks" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gestionar marcadores" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gérer les signets" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gestisci segnalibri" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bladwijzers beheren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zarządzaj zakładkami" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gerir marcadores" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Управление закладками" + } + } + } + }, + "tooltip.bookmarks.new-bookmark" : { + "comment" : "Tooltip for the New Bookmark button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Neues Lesezeichen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "New bookmark" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nuevo marcador" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouveau signet" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nuovo segnalibro" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nieuwe bladwijzer" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nowa zakładka" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Novo marcador" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Новая закладка" + } + } + } + }, + "tooltip.bookmarks.new-folder" : { + "comment" : "Tooltip for the New Folder button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Neuer Ordner" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "New folder" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nueva carpeta" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nouveau dossier" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nuova cartella" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nieuwe map" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nowy folder" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nova pasta" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Новая папка" + } + } + } + }, + "tooltip.bookmarks.search" : { + "comment" : "Tooltip to activate the bookmark search", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lesezeichen durchsuchen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Search bookmarks" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Buscar marcadores" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rechercher des favoris" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cerca segnalibri" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bladwijzers zoeken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyszukaj zakładki" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pesquisar marcadores" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Поиск по закладкам" + } + } + } + }, + "tooltip.bookmarks.shortcut" : { + "comment" : "Tooltip for the bookmarks shortcut", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lesezeichen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Bookmarks" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Marcadores" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Signets" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Segnalibri" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bladwijzers" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zakładki" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Marcadores" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Закладки" + } + } + } + }, + "tooltip.bookmarks.sort" : { + "comment" : "Tooltip to activate the bookmark sort", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sortieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Sort" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordenar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trier" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordina" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sorteren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sortuj" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordenar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сортировать" + } + } + } + }, + "tooltip.bookmarks.sort.name.title" : { + "comment" : "Title when bookmark sort by name is enabled", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nach Namen sortieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Sort by Name" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordenar por nombre" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trier par nom" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordina per nome" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sorteren op naam" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sortuj według nazwy" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ordenar por nome" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сортировать по названию" + } + } + } + }, + "tooltip.clearHistory" : { + "comment" : "Tooltip for burn button where %@ is the domain", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Browserverlauf für %@ löschen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Clear browsing history for %@" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Borrar el historial de navegación para %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Effacer l'historique de navigation pour %@" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancella la cronologia di navigazione per % @" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Surfgeschiedenis en -data van %@ wissen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyczyść historię przeglądania domeny %@" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Limpar histórico de navegação de %@" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Стереть историю просмотров сайта %@" + } + } + } + }, + "tooltip.clearHistoryAndData" : { + "comment" : "Tooltip for burn button where %@ is the domain", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Browserverlauf und Daten für %@ löschen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Clear browsing history and data for %@" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Borrar historial de navegación y datos de %@" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Effacer l'historique de navigation et les données pour %@" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancella la cronologia di navigazione e i dati per % @" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Surfgeschiedenis en -data van %@ wissen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyczyść historię przeglądania i dane domeny %@" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Limpar histórico de navegação e dados de %@" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Стереть историю просмотров и данные сайта %@" + } + } + } + }, + "tooltip.downloads.clear-download-history" : { + "comment" : "Tooltip for the Clear Downloads button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Download-Verlauf löschen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Clear download history" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Borrar historial de descargas" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Effacer l'historique des téléchargements" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancella la cronologia dei download" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Downloadgeschiedenis wissen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyczyść historię pobierania" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Limpar histórico de transferências" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Стереть историю загрузок" + } + } + } + }, + "tooltip.downloads.open-downloads-folder" : { + "comment" : "Tooltip for the Open Downloads Folder button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Download-Ordner öffnen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Open downloads folder" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir carpeta de descargas" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir le dossier des téléchargements" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apri la cartella download" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Downloadmap openen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz folder pobranych" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir pasta de transferências" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Открыть папку «Загрузки»" + } + } + } + }, + "tooltip.downloads.shortcut" : { + "comment" : "Tooltip for the downloads shortcut", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Downloads" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Downloads" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Descargas" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Téléchargements" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Download" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeling voor automatisch invullen weergeven" + "value" : "Downloads" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż skrót do autouzupełniania" + "value" : "Pobrane" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar atalho de preenchimento automático" + "value" : "Transferências" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показывать ярлык для автозаполнения" + "value" : "Загрузки" } } } }, - "Show Bookmarks Shortcut" : { - "comment" : "Main Menu View item", + "tooltip.find-in-page.close" : { + "comment" : "Tooltip for the Find In Page bar's Close button", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Lesezeichen-Verknüpfung anzeigen" + "value" : "Suchleiste schließen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Close find bar" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar acceso directo a Favoritos" + "value" : "Cerrar la barra de búsqueda" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher le raccourci des signets" + "value" : "Fermer la barre de recherche" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra scorciatoia segnalibri" + "value" : "Chiudi la barra di ricerca" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeling voor bladwijzers weergeven" + "value" : "Zoekbalk sluiten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż skrót do zakładek" + "value" : "Zamknij pasek wyszukiwania" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar atalho de marcadores" + "value" : "Fechar barra de procura" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показывать ярлык для закладок" + "value" : "Закрыть панель поиска" } } } }, - "Show Downloads Shortcut" : { - "comment" : "Main Menu View item", + "tooltip.find-in-page.next" : { + "comment" : "Tooltip for the Find In Page bar's Next button", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Download-Verknüpfung anzeigen" + "value" : "Nächstes Ergebnis" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Next result" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar acceso directo a Descargas" + "value" : "Siguiente resultado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher le raccourci des téléchargements" + "value" : "Résultat suivant" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra scorciatoia download" + "value" : "Risultato successivo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Snelkoppeling voor downloads weergeven" + "value" : "Volgende resultaat" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż skrót do pobranych" + "value" : "Następny wynik" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar atalho de transferências" + "value" : "Resultado seguinte" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать ярлык для загрузок" + "value" : "Следующий результат" } } } }, - "Show Next Tab" : { - "comment" : "Main Menu Window item", + "tooltip.find-in-page.previous" : { + "comment" : "Tooltip for the Find In Page bar's Previous button", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nächsten Tab anzeigen" + "value" : "Vorheriges Ergebnis" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Previous result" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar pestaña siguiente" + "value" : "Resultado anterior" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher l'onglet suivant" + "value" : "Résultat précédent" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra scheda successiva" + "value" : "Risultato precedente" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Volgende tabblad tonen" + "value" : "Vorig resultaat" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż następną kartę" + "value" : "Poprzedni wynik" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar separador seguinte" + "value" : "Resultado anterior" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать следующую вкладку" + "value" : "Предыдущий результат" } } } }, - "Show Page Source" : { - "comment" : "Main Menu View-Developer item", + "tooltip.fire.clear-browsing-history" : { + "comment" : "Tooltip for the Fire button", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Seitenquelle anzeigen" + "value" : "Browserverlauf löschen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Clear browsing history" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar origen de página" + "value" : "Borrar historial de navegación" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher la source de la page" + "value" : "Effacer l'historique de navigation" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra origine pagina" + "value" : "Cancella cronologia di navigazione" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Paginabron weergeven" + "value" : "Surfgeschiedenis wissen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż źródło strony" + "value" : "Wyczyść historię przeglądania" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar código da página" + "value" : "Limpar histórico de navegação" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать исходный код страницы" + "value" : "Очистить историю просмотров" } } } }, - "Show Previous Tab" : { - "comment" : "Main Menu Window item", + "tooltip.home.button" : { + "comment" : "Tooltip for the home button", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Vorherigen Tab anzeigen" + "value" : "Startseite" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Home" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar pestaña anterior" + "value" : "Inicio" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher l'onglet précédent" + "value" : "Accueil" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra scheda precedente" + "value" : "Schermata iniziale" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Vorig tabblad tonen" + "value" : "Home" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż poprzednią kartę" + "value" : "Strona główna" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar separador anterior" + "value" : "Página inicial" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать предыдущую вкладку" + "value" : "Домашняя" } } } }, - "Show Resources" : { - "comment" : "Main Menu View-Developer item", + "tooltip.navigation.back" : { + "comment" : "Tooltip for the Back button", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ressourcen anzeigen" + "value" : "Vorherige Seite anzeigen\nHalten, um den Verlauf anzuzeigen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Show the previous page\nHold to show history" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar recursos" + "value" : "Mostrar la página anterior\nMantener para mostrar el historial" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher les ressources" + "value" : "Afficher la page précédente\nMaintenir pour afficher l'historique" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra risorse" + "value" : "Mostra la pagina precedente\nTieni premuto per mostrare la cronologia" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Hulpmiddelen tonen" + "value" : "De vorige pagina weergeven \n Houd ingedrukt om de geschiedenis weer te geven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż zasoby" + "value" : "Pokaż poprzednią stronę\nPrzytrzymaj, aby wyświetlić historię" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar recursos" + "value" : "Mostrar a página anterior\nSegurar para mostrar o histórico" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать ресурсы" + "value" : "Показать предыдущую страницу\nУдерживайте эту кнопку для просмотра истории" } } } }, - "Show Substitutions" : { - "comment" : "Main Menu Edit-Substitutions item", + "tooltip.navigation.forward" : { + "comment" : "Tooltip for the Forward button", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ersetzungen anzeigen" + "value" : "Nächste Seite anzeigen\nHalten, um den Verlauf anzuzeigen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Show the next page\nHold to show history" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar Reemplazos" + "value" : "Mostrar la página siguiente\nMantener para mostrar el historial" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher les substitutions" + "value" : "Afficher la page suivante\nMaintenir pour afficher l'historique" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra Sostituzioni" + "value" : "Mostra la pagina successiva\nTieni premuto per mostrare la cronologia" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Aanpassingen tonen" + "value" : "De volgende pagina weergeven \n Houd ingedrukt om de geschiedenis weer te geven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż podstawienia" + "value" : "Pokaż następną stronę\nPrzytrzymaj, aby wyświetlić historię" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar substituições" + "value" : "Mostrar a página seguinte\nSegurar para mostrar o histórico" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показывать функции работы с текстом" + "value" : "Показать следующую страницу\nУдерживайте эту кнопку для просмотра истории" } } } }, - "show.data.clearing.settings" : { - "comment" : "Button in Settings. It navigates user to Data Clearing Settings. The Data Clearing string should match the string with the preferences.data-clearing key", + "tooltip.navigation.refresh" : { + "comment" : "Tooltip for the Refresh button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Einstellungen zum Löschen von Daten öffnen" + "value" : "Diese Seite neu laden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open Data Clearing Settings" + "value" : "Reload this page" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir configuración de borrado de datos" + "value" : "Volver a cargar esta página" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir les paramètres d'effacement des données" + "value" : "Recharger cette page" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri Impostazioni cancellazione dati" + "value" : "Ricarica la pagina" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Instellingen voor het wissen van open gegevens" + "value" : "Deze pagina opnieuw laden" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz ustawienia czyszczenia danych" + "value" : "Załaduj ponownie tę stronę" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir Definições de limpeza de dados" + "value" : "Recarregar esta página" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть настройки очистки данных" + "value" : "Перезагрузить страницу" } } } }, - "show.folder.contents" : { - "comment" : "Menu item that shows the content of a folder ", + "tooltip.navigation.stop" : { + "comment" : "Tooltip for the Stop Navigation button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ordnerinhalte anzeigen" + "value" : "Diese Seite nicht mehr laden" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show Folder Contents" + "value" : "Stop loading this page" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar el contenido de la carpeta" + "value" : "Dejar de cargar esta página" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher le contenu du dossier" + "value" : "Arrêter le chargement de cette page" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra il contenuto della cartella" + "value" : "Interrompi il caricamento della pagina" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Inhoud van map weergeven" + "value" : "Stop met het laden van deze pagina" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż zawartość folderu" + "value" : "Zatrzymaj ładowanie tej strony" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar conteúdos da pasta" + "value" : "Parar de carregar esta página" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать содержимое папки" + "value" : "Остановить загрузку страницы" } } } }, - "site.not.working.button.title" : { - "comment" : "Button title that appears on a dialog asking users about possible breakage of a site", + "tooltip.privacy-dashboard.show" : { + "comment" : "Tooltip for the Privacy Dashboard button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Lass es uns wissen" + "value" : "Privacy Dashboard anzeigen und Website-Einstellungen verwalten" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Let Us Know" + "value" : "Show the Privacy Dashboard and manage site settings" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Háznoslo saber" + "value" : "Mostrar Privacy Dashboard y gestionar la configuración del sitio" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Faites-le nous savoir" + "value" : "Afficher le Privacy Dashboard et gérer les paramètres du site" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Faccelo sapere" + "value" : "Mostra la Privacy Dashboard e gestisci le impostazioni del sito" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Laat het ons weten" + "value" : "Het Privacy Dashboard tonen en de instellingen van de website beheren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Daj nam znać" + "value" : "Pokaż panel Privacy Dashboard i zarządzaj ustawieniami witryny" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Contacte-nos" + "value" : "Mostrar o Privacy Dashboard e gerir as definições do site" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сообщить" + "value" : "Показать панель Privacy Dashboard и проконтролировать настройки сайта" } } } }, - "site.not.working.title" : { - "comment" : "Title that appears on a dialog asking users about possible breakage of a site", + "tooltip.tab.new-tab" : { + "comment" : "Tooltip for the New Tab button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Webseite funktioniert nicht?" + "value" : "Einen neuen Tab öffnen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Site not working?" + "value" : "Open a new tab" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "¿El sitio no funciona?" + "value" : "Abrir una nueva pestaña" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Le site ne fonctionne pas ?" + "value" : "Ouvrir un nouvel onglet" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Il sito non funziona?" + "value" : "Apri una nuova scheda" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Werkt de site niet?" + "value" : "Een nieuw tabblad openen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Witryna nie działa?" + "value" : "Otwórz nową kartę" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "O site não funciona?" + "value" : "Abrir um novo separador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сайт не работает?" + "value" : "Открыть новую вкладку" } } } }, - "Smart Copy/Paste" : { - "comment" : "Main Menu Edit-Substitutions item", + "Transformations" : { + "comment" : "Main Menu Edit item", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Intelligentes Kopieren/Einfügen" + "value" : "Transformationen" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Copiar/Pegar inteligente" + "value" : "Transformaciones" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Copier/coller intelligent" + "value" : "Transformations" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Copia/Incolla intelligente" + "value" : "Trasformazioni" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aanpassingen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przekształcenia" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Maiúsculas/minúsculas" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Преобразования" + } + } + } + }, + "uninstall" : { + "comment" : "Uninstall button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deinstallieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Uninstall" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desinstalar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désinstaller" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Disinstalla" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verwijderen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Odinstaluj" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desinstalar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Удалить" + } + } + } + }, + "unmute.tab" : { + "comment" : "Menu item. Unmute tab", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tab-Stummschaltung aufheben" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Unmute Tab" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desilenciar pestaña" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réactiver le son de l'onglet" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Riattiva audio scheda" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dempen van tabblad opheffen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyłącz wyciszenie karty" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ativar Som do Separador" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Включить звук на вкладке" + } + } + } + }, + "unpin.tab" : { + "comment" : "Menu item. Unpin as a verb", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tab lösen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Unpin Tab" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desanclar pestaña" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Détacher l’onglet" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sblocca scheda" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Slim kopiëren/plakken" + "value" : "Tab loskoppelen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Inteligentne kopiowanie/wklejanie" + "value" : "Odepnij kartę" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Copiar/colar inteligente" + "value" : "Libertar separador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Умное копирование/вставка" + "value" : "Открепить вкладку" } } } }, - "Smart Dashes" : { - "comment" : "Main Menu Edit-Substitutions item", + "unsupported.device.info.alert.header" : { + "comment" : "his string represents the header for an alert informing the user that their version of macOS is no longer supported", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Intelligente Gedankenstriche" + "value" : "Deine Version von macOS wird nicht mehr unterstützt." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your version of macOS is no longer supported." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Guiones inteligentes" + "value" : "Tu versión de macOS ya no es compatible." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Tirets intelligents" + "value" : "Votre version de macOS n'est plus prise en charge." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Trattini intelligenti" + "value" : "La tua versione di macOS non è più supportata." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Slimme streepjes" + "value" : "Je versie van macOS wordt niet meer ondersteund." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Inteligentne myślniki" + "value" : "Twoja wersja systemu macOS już nie jest obsługiwana." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Traços formatados" + "value" : "A tua versão do macOS já não é suportada." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Умные тире" + "value" : "Ваша версия macOS больше не поддерживается." } } } }, - "Smart Links" : { - "comment" : "Main Menu Edit-Substitutions item", + "update" : { + "comment" : "Update button", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Intelligente Links" + "value" : "Aktualisieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Update" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Enlaces inteligentes" + "value" : "Actualizar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Liens intelligents" + "value" : "Actualiser" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Link intelligenti" + "value" : "Aggiorna" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Slimme links" + "value" : "Updaten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Inteligentne łącza" + "value" : "Aktualizacja" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Links inteligentes" + "value" : "Atualizar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Умные ссылки" + "value" : "Обновить" } } } }, - "Smart Quotes" : { - "comment" : "Main Menu Edit-Substitutions item", + "update.available.menu.item" : { + "comment" : "Title of the menu item that informs user that a new update is available. Clicking on the menu item installs the update", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Intelligente Zitate" + "value" : "Update verfügbar – jetzt installieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Update Available - Install Now" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Comillas inteligentes" + "value" : "Actualización disponible - Instalar ahora" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Guillemets intelligents" + "value" : "Mise à jour disponible : installer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Virgolette doppie intelligenti" + "value" : "Aggiornamento disponibile - Installa ora" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Slimme aanhalingstekens" + "value" : "Update beschikbaar - nu installeren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Inteligentne cudzysłowy" + "value" : "Dostępna aktualizacja — zainstaluj teraz" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Aspas curvas" + "value" : "Atualização disponível – Instalar agora" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Умные кавычки" + "value" : "Доступно обновление – установить сейчас" } } } }, - "Speech" : { - "comment" : "Main Menu Edit item", + "URL" : { "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Rede" + "value" : "URL" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Voz" + "value" : "URL" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Discours" + "value" : "URL" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Leggi il testo" + "value" : "URL" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Spraak" + "value" : "URL" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Mowa" + "value" : "Adres URL" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Fala" + "value" : "URL" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Речь" + "value" : "URL" } } } }, - "ssl.error.page.tab.title" : { - "comment" : "Title shown in an error page tab that warn users of security risks on a website due to SSL issues", + "version" : { + "comment" : "Displays the version and build numbers", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Warnung: Website ist möglicherweise unsicher" + "value" : "Version %1$@ (%2$@)" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Warning: Site May Be Insecure" + "value" : "Version %1$@ (%2$@)" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Advertencia: el sitio puede ser inseguro" + "value" : "Versión %1$@ (%2$@)" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Avertissement : le site n'est peut-être pas sécurisé" + "value" : "Version %1$@ (%2$@)" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Attenzione: il sito potrebbe non essere sicuro" + "value" : "Versione %1$@ (%2$@)" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Waarschuwing: Website mogelijk onveilig" + "value" : "Versie %1$@ (%2$@)" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ostrzeżenie: witryna może być niebezpieczna" + "value" : "Wersja %1$@ (%2$@)" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Aviso: o site pode ser inseguro" + "value" : "Versão %1$@ (%2$@)" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Внимание! Возможно, сайт небезопасен" + "value" : "Версия %1$@ (%2$@)" } } } }, - "Start Speaking" : { - "comment" : "Main Menu Edit-Speech item", + "View" : { + "comment" : "Main Menu View", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Sprechen beginnen" + "value" : "Ansehen" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Empezar a hablar" + "value" : "Ver" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Commencer à parler" + "value" : "Voir" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Inizia a parlare" + "value" : "Visualizza" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Beginnen met spreken" + "value" : "Weergeven" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zacznij mówić" + "value" : "Wyświetl" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Iniciar fala" + "value" : "Visualizar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Начать чтение" + "value" : "Вид" } } } }, - "Stop" : { - "comment" : "Main Menu View item", + "view.details.button" : { + "comment" : "Button title to open more details about the update", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Stopp" + "value" : "Details anzeigen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "View Details" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Detener" + "value" : "Ver detalles" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Arrêter" + "value" : "Voir les détails" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Interrompi" + "value" : "Guarda i dettagli" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Stoppen" + "value" : "Details bekijken" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zatrzymaj" + "value" : "Wyświetl szczegóły" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Parar" + "value" : "Ver detalhes" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Остановить" + "value" : "Подробнее" } } } }, - "Stop Speaking" : { - "comment" : "Main Menu Edit-Speech item", + "vpn.advanced.settings.title" : { + "comment" : "VPN Advanced section title in VPN settings", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Aufhören zu sprechen" + "value" : "Erweitert" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Advanced" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Dejar de hablar" + "value" : "Avanzado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Arrêter de parler" + "value" : "Options avancées" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Interrompi la riproduzione" + "value" : "Avanzate" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Stoppen met spreken" + "value" : "Geavanceerd" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przestań mówić" + "value" : "Zaawansowane" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Parar fala" + "value" : "Avançado" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Остановить чтение" + "value" : "Дополнительно" } } } }, - "submit" : { - "comment" : "Submit button", + "vpn.button.title.open.vpn" : { + "comment" : "Uninstall VPN button title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Abschicken" + "value" : "VPN öffnen …" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Submit" + "value" : "Open VPN…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Enviar" + "value" : "Abrir VPN..." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Envoyer" + "value" : "Ouvrir le VPN…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Invia" + "value" : "Apri VPN…" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Verzenden" + "value" : "VPN openen …" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Prześlij" + "value" : "Otwórz VPN…" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Submeter" + "value" : "Abrir VPN…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Отправить" + "value" : "Открыть VPN…" } } } }, - "submit.report" : { - "comment" : "Submit Report button", + "vpn.button.title.uninstall.vpn" : { + "comment" : "Open VPN button title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Bericht senden" + "value" : "DuckDuckGo VPN deinstallieren ..." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Submit Report" + "value" : "Uninstall DuckDuckGo VPN…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Enviar informe" + "value" : "Desinstalar VPN de DuckDuckGo..." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Envoyer le rapport" + "value" : "Désinstaller le VPN DuckDuckGo…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Invia segnalazione" + "value" : "Disinstalla la VPN di DuckDuckGo..." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Rapport versturen" + "value" : "DuckDuckGo VPN verwijderen …" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Prześlij raport" + "value" : "Odinstaluj DuckDuckGo VPN..." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Submeter relatório" + "value" : "Desinstalar VPN DuckDuckGo…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Отправить жалобу" + "value" : "Удалить DuckDuckGo VPN..." } } } }, - "sync.promo.bookmarks.message" : { - "comment" : "Message for the Sync Promotion banner when user has bookmarks that can be synced", + "vpn.dns.server.apply.button.title" : { + "comment" : "Title for the Apply custom DNS server button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Kein Konto erforderlich. Ende-zu-Ende-Verschlüsselung bedeutet, dass niemand außer dir deine Lesezeichen sehen kann, nicht einmal wir." + "value" : "Übernehmen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "No account needed. End-to-end encryption means nobody but you can see your bookmarks, not even us." + "value" : "Apply" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "No necesitas ninguna cuenta. El cifrado de extremo a extremo significa que nadie más que tú puede ver tus marcadores, ni siquiera nosotros." + "value" : "Usar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Aucun compte n'est nécessaire. Le cryptage de bout en bout signifie que personne d'autre ne peut voir vos signets, pas même nous." + "value" : "Appliquer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Non è necessario un account. Con la crittografia end-to-end, nessuno, a parte te, può vedere i tuoi segnalibri, nemmeno noi." + "value" : "Applica" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Geen account nodig. End-to-end versleuteling betekent dat niemand anders dan jij je bladwijzers kan zien, zelfs wij niet." + "value" : "Toepassen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Konto nie jest wymagane. Kompleksowe szyfrowanie oznacza, że nikt poza Tobą nie może zobaczyć Twoich zakładek, nawet my." + "value" : "Zastosuj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Não precisas de uma conta. A encriptação ponta a ponta significa que ninguém além de ti pode ver os teus favoritos, nem mesmo nós." + "value" : "Aplicar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Учетная запись не требуется. Сквозное шифрование означает, что ваши закладки видны только вам. Даже у нас нет к ним доступа." + "value" : "Применить" } } } }, - "sync.promo.bookmarks.title" : { - "comment" : "Title for the Sync Promotion banner", + "vpn.dns.server.disclaimer" : { + "comment" : "Disclaimer for the custom DNS server option", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Lesezeichen synchronisieren und sichern" + "value" : "Die Verwendung eines benutzerdefinierten DNS-Servers kann die Geschwindigkeit beim Browsen beeinträchtigen und deine Aktivitäten Dritten preisgeben, wenn der Server nicht sicher oder zuverlässig ist." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Sync & Back Up Your Bookmarks" + "value" : "Using a custom DNS server can impact browsing speeds and expose your activity to third parties if the server isn't secure or reliable." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Sincroniza y haz copias de seguridad de tus marcadores" + "value" : "El uso de un servidor DNS personalizado puede afectar a la velocidad de navegación y exponer tu actividad a terceros si el servidor no es seguro o fiable." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronisez et sauvegardez vos signets" + "value" : "L'utilisation d'un serveur DNS personnalisé peut avoir un impact sur la vitesse de navigation et exposer votre activité à des tiers si le serveur n'est pas sécurisé ou fiable." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sincronizza ed esegui il backup dei tuoi segnalibri" + "value" : "L'utilizzo di un server DNS personalizzato può incidere sulla velocità di navigazione ed esporre la tua attività a terzi se il server non è sicuro o affidabile." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Synchroniseer en back-up je bladwijzers" + "value" : "Het gebruik van een aangepaste DNS-server kan de surfsnelheid beïnvloeden en je activiteiten blootstellen aan derden als de server niet veilig of betrouwbaar is." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronizuj i twórz kopie zapasowe zakładek" + "value" : "Korzystanie z niestandardowego serwera DNS może mieć wpływ na prędkość przeglądania stron internetowych oraz narażać aktywność na dostęp nieupoważnionych osób, jeśli serwer nie jest bezpieczny lub sprawdzony." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sincroniza e faz uma cópia de segurança dos teus favoritos" + "value" : "A utilização de um servidor DNS personalizado pode afetar as velocidades de navegação e expor a tua atividade a terceiros se o servidor não for seguro ou fiável." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Синхронизация и резервное копирование закладок" + "value" : "Использование собственного DNS-сервера может снизить скорость просмотра веб-страниц и обнаружить ваши действия для третьих лиц, если сервер плохо защищен или работает ненадежно." } } } }, - "sync.promo.confirm.action" : { - "comment" : "Title for a button in the Sync Promotion banner to set up Sync", + "vpn.dns.server.ipv4.description" : { + "comment" : "Description of the IPv4 text field", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Sync einrichten" + "value" : "IPv4-Adresse:" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Set Up Sync" + "value" : "IPv4 Address:" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Configurar la sincronización" + "value" : "Dirección IPv4:" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Configurer la synchronisation" + "value" : "Adresse IPv4 :" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Configura la sincronizzazione" + "value" : "Indirizzo IPv4:" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronisatie instellen" + "value" : "IPv4-adres:" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Skonfiguruj synchronizację" + "value" : "Adres IPv4:" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Configurar sincronização" + "value" : "Endereço IPv4:" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Настройка синхронизации" + "value" : "IPv4-адрес:" } } } }, - "sync.promo.dismiss.action" : { - "comment" : "Title for a button in the Sync Promotion banner to dismiss Sync promotion banner", + "vpn.dns.server.picker.custom.button.title" : { + "comment" : "Button title of the custom DNS server option", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nein, danke" + "value" : "Ändern …" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "No Thanks" + "value" : "Change…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "No, gracias" + "value" : "Cambiar…" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Non merci" + "value" : "Modifier…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "No, grazie" + "value" : "Cambia…" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nee, bedankt" + "value" : "Wijzigen …" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nie, dziękuję" + "value" : "Zmień…" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Não, obrigado" + "value" : "Alterar…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Нет, спасибо" + "value" : "Изменить…" } } } }, - "sync.promo.passwords.message" : { - "comment" : "Message for the Sync Promotion banner when user has passwords that can be synced", + "vpn.dns.server.picker.custom.title" : { + "comment" : "Title of the custom DNS server option", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Kein Konto erforderlich. Ende-zu-Ende-Verschlüsselung bedeutet, dass niemand außer dir deine Passwörter sehen kann, nicht einmal wir." + "value" : "Benutzerdefiniert" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "No account needed. End-to-end encryption means nobody but you can see your passwords, not even us." + "value" : "Custom" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "No necesitas ninguna cuenta. El cifrado de extremo a extremo significa que nadie más que tú puede ver tus contraseñas, ni siquiera nosotros." + "value" : "Personalizar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Aucun compte n'est nécessaire. Le cryptage de bout en bout signifie que personne d'autre ne peut voir vos mots de passe, pas même nous." + "value" : "Personnalisé" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Non è necessario un account. Con la crittografia end-to-end, nessuno a parte te può vedere le tue password, nemmeno noi." + "value" : "Personalizzato" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Geen account nodig. Dankzij end-to-end versleuteling kan niemand behalve jij je wachtwoorden zien, zelfs wij niet." + "value" : "Pas Aan" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Konto nie jest wymagane. Kompleksowe szyfrowanie oznacza, że nikt poza Tobą nie może zobaczyć Twoich haseł, nawet my." + "value" : "Niestandardowy" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Não precisas de uma conta. A encriptação ponta a ponta significa que ninguém além de ti pode ver as tuas palavras-passe, nem mesmo nós." + "value" : "Personalizado" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Учетная запись не требуется. Сквозное шифрование означает, что ваши пароли видны только вам. Даже у нас нет к ним доступа." + "value" : "Свой" } } } }, - "sync.promo.passwords.side.panel.subtitle" : { - "comment" : "Subtitle for the Sync Promotion in passwords side panel", + "vpn.dns.server.picker.default.title" : { + "comment" : "Title of the default DNS server option", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronisieren und sichern" + "value" : "DuckDuckGo (empfohlen)" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Sync & Backup" + "value" : "DuckDuckGo (Recommended)" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Sincronización y copia de seguridad" + "value" : "DuckDuckGo (recomendado)" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronisation et sauvegarde" + "value" : "DuckDuckGo (recommandé)" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sincronizzazione e backup" + "value" : "DuckDuckGo (consigliato)" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronisatie en back-up" + "value" : "DuckDuckGo (aanbevolen)" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronizacja i kopia zapasowa" + "value" : "DuckDuckGo (zalecane)" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sincronização e cópia de segurança" + "value" : "DuckDuckGo (Recomendado)" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Синхронизация и резервное копирование" + "value" : "DuckDuckGo (рекомендуется)" } } } }, - "sync.promo.passwords.side.panel.title" : { - "comment" : "Title for the Sync Promotion in passwords side panel", + "vpn.dns.server.sheet.title" : { + "comment" : "Title of the DNS Server sheet", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Einrichtung" + "value" : "Benutzerdefinierter DNS-Server" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Setup" + "value" : "Custom DNS Server" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Configuración" + "value" : "Servidor DNS personalizado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Installation" + "value" : "Serveur DNS personnalisé" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Configurazione" + "value" : "Server DNS personalizzato" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Instellen" + "value" : "DNS-server op maat" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Konfiguracja" + "value" : "Niestandardowy serwer DNS" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Configuração" + "value" : "Servidor DNS Personalizado" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Настройка" + "value" : "Собственный DNS-сервер" } } } }, - "sync.promo.passwords.title" : { - "comment" : "Title for the Sync Promotion banner", + "vpn.dns.server.title" : { + "comment" : "Title of the DNS Server section", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Passwörter synchronisieren und sichern " + "value" : "DNS-Server" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Sync & Back Up Your Passwords " + "value" : "DNS Server" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Sincroniza y haz copias de seguridad de tus contraseñas " + "value" : "Servidor DNS" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronisez et sauvegardez vos mots de passe " + "value" : "Serveur DNS" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sincronizza e fai il backup delle password " + "value" : "Server DNS" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Synchroniseer en maak een back-up van je wachtwoorden " + "value" : "DNS-server" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Synchronizuj i twórz kopie zapasowe haseł " + "value" : "Serwer DNS" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sincroniza e faz uma cópia de segurança das tuas palavras-passe " + "value" : "Servidor DNS" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Синхронизация и резервное копирование паролей " + "value" : "DNS-сервер" } } } }, - "tab.bookmarks.title" : { - "comment" : "Tab bookmarks title", + "vpn.excluded.domains.add.domain" : { + "comment" : "Add Domain button for the excluded sites view", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Lesezeichen" + "value" : "Website hinzufügen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Bookmarks" + "value" : "Add Website" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Marcadores" + "value" : "Añadir sitio web" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Signets" + "value" : "Ajouter le site Web" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Segnalibri" + "value" : "Aggiungi il sito web" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bladwijzers" + "value" : "Website toevoegen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zakładki" + "value" : "Dodaj witrynę internetową" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Marcadores" + "value" : "Adicionar Website" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Закладки" + "value" : "Добавить сайт" } } } }, - "tab.empty.title" : { - "comment" : "Title for an empty tab without a title", + "vpn.excluded.domains.title" : { + "comment" : "Title for the excluded sites view", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ohne Titel" + "value" : "Ausgeschlossene Websites" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Untitled" + "value" : "Excluded Websites" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Sin título" + "value" : "Sitios web excluidos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Sans titre" + "value" : "Sites Web exclus" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Senza titolo" + "value" : "Siti web esclusi" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Naamloos" + "value" : "Uitgesloten websites" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Bez tytułu" + "value" : "Wykluczone witryny internetowe" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Sem título" + "value" : "Websites excluídos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Без названия" + "value" : "Исключенные сайты" } } } }, - "tab.error.title" : { - "comment" : "Tab error title", + "vpn.excluded.sites.title" : { + "comment" : "Excluded Sites title in VPN settings", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Seite konnte nicht geöffnet werden" + "value" : "Ausgeschlossene Websites" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Failed to open page" + "value" : "Excluded Websites" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Error al abrir la página" + "value" : "Sitios web excluidos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Impossible d'ouvrir la page" + "value" : "Sites Web exclus" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Impossibile aprire la pagina" + "value" : "Siti web esclusi" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Kan de pagina niet openen" + "value" : "Uitgesloten websites" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nie udało się otworzyć strony" + "value" : "Wykluczone witryny internetowe" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Falha ao abrir a página" + "value" : "Websites excluídos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Не удалось открыть страницу" + "value" : "Исключенные сайты" } } } }, - "tab.home.title" : { - "comment" : "Tab home title", + "vpn.feedback-form.button.cancel" : { + "comment" : "Title for the Cancel button of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neuer Tab" + "value" : "Abbrechen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "New Tab" + "value" : "Cancel" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Nueva pestaña" + "value" : "Cancelar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nouvel onglet" + "value" : "Annuler" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nuova scheda" + "value" : "Annulla" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nieuw tabblad" + "value" : "Annuleren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nowa karta" + "value" : "Anuluj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Novo separador" + "value" : "Cancelar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Новая вкладка" + "value" : "Отменить" } } } }, - "tab.onboarding.title" : { - "comment" : "Tab onboarding title", + "vpn.feedback-form.button.done" : { + "comment" : "Title for the Done button of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Willkommen" + "value" : "Fertig" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Welcome" + "value" : "Done" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Te damos la bienvenida" + "value" : "Hecho" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Bienvenue" + "value" : "Terminé" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ti diamo il benvenuto" + "value" : "Fatto" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Welkom" + "value" : "Klaar" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Witamy" + "value" : "Gotowe" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Damos-te as boas-vindas" + "value" : "Feito" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Добро пожаловать!" + "value" : "Готово" } } } }, - "tab.preferences.title" : { - "comment" : "Tab preferences title", + "vpn.feedback-form.button.submit" : { + "comment" : "Title for the Submit button of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Einstellungen" + "value" : "Abschicken" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Settings" + "value" : "Submit" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ajustes" + "value" : "Enviar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Paramètres" + "value" : "Envoyer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Impostazioni" + "value" : "Invia" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Instellingen" + "value" : "Verzenden" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Ustawienia" + "value" : "Prześlij" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Definições" + "value" : "Submeter" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Настройки" + "value" : "Отправить" } } } }, - "tab.releaseNotes.title" : { - "comment" : "Title of deticated tab for Release Notes", + "vpn.feedback-form.button.submitting" : { + "comment" : "Title for the Submitting state of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Versionshinweise" + "value" : "Wird gesendet ..." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Release Notes" + "value" : "Submitting…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Notas de la versión" + "value" : "Enviando..." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Notes de mise à jour" + "value" : "Envoi en cours…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Note di rilascio" + "value" : "Invio in corso..." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Release-opmerkingen" + "value" : "Bezig met verzenden …" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Informacje o wersji" + "value" : "Przesyłanie..." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Notas de lançamento" + "value" : "A enviar…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Примечания к релизу" + "value" : "Отправка..." } } } }, - "Text Replacement" : { - "comment" : "Main Menu Edit-Substitutions item", + "vpn.feedback-form.category.browser-crash-or-freeze" : { + "comment" : "Title for the browser crash/freeze category of the VPN feedback form", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Textersetzung" + "value" : "VPN führt zum Absturz oder Einfrieren des Browsers" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "VPN causes browser to crash or freeze" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Reemplazo de texto" + "value" : "La VPN hace que el navegador falle o se congele" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Remplacement du texte" + "value" : "Le VPN provoque le plantage ou le blocage du navigateur" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sostituzione del testo" + "value" : "La VPN causa l'arresto anomalo o il blocco del browser" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Tekst vervangen" + "value" : "De VPN zorgt ervoor dat de browser crasht of vastloopt" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zastępowanie tekstu" + "value" : "VPN powoduje awarię lub zawieszanie się przeglądarki" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Substituição de texto" + "value" : "A VPN faz com que o navegador falhe ou bloqueie" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Замена текста" + "value" : "VPN приводит к сбою или зависанию браузера" } } } }, - "That didn’t work either. Please submit a report to help us fix the issue." : { - "comment" : "Data import failure Report dialog title containing a message that not only automatic data import has failed failed but manual browser data import didn‘t work either.", + "vpn.feedback-form.category.fails-to-connect" : { + "comment" : "Title for the 'VPN fails to connect' category of the VPN feedback form", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Das hat auch nicht funktioniert. Bitte reiche einen Bericht ein, um uns bei der Behebung des Problems zu helfen." + "value" : "VPN kann keine Verbindung herstellen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "VPN fails to connect" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Eso tampoco ha funcionado. Envía un informe para ayudarnos a solucionar el problema." + "value" : "La VPN no se conecta" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Cela n'a pas fonctionné non plus. Veuillez soumettre un rapport pour nous aider à résoudre le problème." + "value" : "Le VPN ne parvient pas à se connecter" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Non ha funzionato nemmeno questa operazione. Invia una segnalazione per aiutarci a risolvere il problema." + "value" : "La VPN non si connette" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Dat werkte ook niet. Dien een melding in om ons te helpen het probleem op te lossen." + "value" : "De VPN kan geen verbinding maken" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "To też nie zadziałało. Prześlij raport, aby pomóc nam w rozwiązaniu problemu." + "value" : "Nie można połączyć się z siecią VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Essa ação também não funcionou. Envia um relatório para nos ajudar a corrigir o problema." + "value" : "A VPN não consegue ligar-se" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Опять не сработало. Отправьте отчет, чтобы мы могли устранить ошибку." + "value" : "VPN не подключается" } } } }, - "The following information will be sent to DuckDuckGo. No personally identifiable information will be sent." : { - "comment" : "Data import failure Report dialog subtitle about the data being collected with the report.", + "vpn.feedback-form.category.feature-request" : { + "comment" : "Title for the 'VPN feature request' category of the VPN feedback form", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Die folgenden Informationen werden an DuckDuckGo gesendet. Es werden keine persönlich identifizierbaren Informationen gesendet." + "value" : "Anfrage zu VPN-Funktionen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "VPN feature request" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "La siguiente información se enviará a DuckDuckGo. No se enviará ninguna información de identificación personal." + "value" : "Solicitud de función de VPN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Les informations suivantes seront envoyées à DuckDuckGo. Aucune information susceptible de vous identifier personnellement ne sera envoyée." + "value" : "Demande de fonctionnalité VPN" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Le seguenti informazioni saranno inviate a DuckDuckGo. Non sarà inviata alcuna informazione di identificazione personale." + "value" : "Richiesta di funzionalità VPN" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "De volgende informatie wordt naar DuckDuckGo gestuurd. Er wordt geen persoonlijk identificeerbare informatie verzonden." + "value" : "VPN-functieverzoek" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Poniższe informacje zostaną wysłane do DuckDuckGo. Nie zostaną wysłane żadne dane osobowe." + "value" : "Prośba o dodanie funkcji VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "As seguintes informações serão enviadas à DuckDuckGo. Não serão enviadas quaisquer informações de identificação pessoal." + "value" : "Pedido de funcionalidade da VPN" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Следующая информация будет отправлена в DuckDuckGo. По ней невозможно установить вашу личность." + "value" : "Запрос функции VPN" } } } }, - "The version of the browser you are trying to import from" : { - "comment" : "Data import failure Report dialog description of a report field providing version of a browser user is trying to import data from", + "vpn.feedback-form.category.issues-with-apps" : { + "comment" : "Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Die Version des Browsers, aus dem du importieren möchtest" + "value" : "VPN verursacht Probleme mit anderen Apps oder Websites" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "VPN causes issues with other apps or websites" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "La versión del navegador desde el que estás intentando importar" + "value" : "La VPN interfiere con otras aplicaciones o sitios web" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "La version du navigateur à partir duquel vous essayez d'importer" + "value" : "Le VPN est à l'origine de problèmes avec d'autres applications ou sites Web" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "La versione del browser da cui si sta tentando di eseguire l'importazione" + "value" : "La VPN causa problemi con altre app o siti web" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "De browserversie van waaruit je probeert te importeren" + "value" : "De VPN veroorzaakt problemen met andere apps of websites" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wersja przeglądarki, z której próbujesz zaimportować dane" + "value" : "VPN powoduje problemy z innymi aplikacjami lub witrynami" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "A versão do navegador a partir do qual estás a importar" + "value" : "A VPN causa problemas com outras aplicações ou sites" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Версия браузера, из которого вы пытаетесь импортировать данные" + "value" : "VPN вызывает проблемы с другими приложениями или сайтами" } } } }, - "tooltip.addToFavorites" : { - "comment" : "Tooltip for add to favorites button", + "vpn.feedback-form.category.local-device-connectivity" : { + "comment" : "Title for the local device connectivity category of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Zu Favoriten hinzufügen" + "value" : "VPN lässt mich keine Verbindung zu lokalem Gerät herstellen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Add to Favorites" + "value" : "VPN won't let me connect to local device" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Añadir a favoritos" + "value" : "La VPN no me deja conectarme a un dispositivo local" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ajouter aux favoris" + "value" : "Le VPN ne me permet pas de me connecter à un appareil local" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiungi ai Preferiti" + "value" : "Non mi consente di connettermi al dispositivo locale" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Toevoegen aan favorieten" + "value" : "De VPN laat me geen verbinding maken met een lokaal apparaat" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dodaj do ulubionych" + "value" : "Sieć VPN nie pozwala na połączenie się z urządzeniem lokalnym" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Adicionar aos favoritos" + "value" : "A VPN não me deixa ligar ao dispositivo local" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Добавить в избранное" + "value" : "VPN не дает подключиться к локальному устройству" } } } }, - "tooltip.application-menu.show" : { - "comment" : "Tooltip for the Application Menu button", + "vpn.feedback-form.category.other" : { + "comment" : "Title for the 'other VPN feedback' category of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Anwendungsmenü öffnen" + "value" : "Weiteres VPN-Feedback" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open application menu" + "value" : "Other VPN feedback" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir menú de aplicación" + "value" : "Otros comentarios de VPN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir le menu de l'application" + "value" : "Autres commentaires sur le VPN" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri il menu dell'applicazione" + "value" : "Altri feedback sulla VPN" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Applicatiemenu openen" + "value" : "Andere feedback over het VPN" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz menu aplikacji" + "value" : "Inne opinie o funkcji VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir o menu da aplicação" + "value" : "Outro feedback sobre VPN" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть меню приложения" + "value" : "Другие отзывы о VPN" } } } }, - "tooltip.autofill.add-item" : { - "comment" : "Tooltip for the Add Item button", + "vpn.feedback-form.category.select-category" : { + "comment" : "Title for the category selection state of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Element hinzufügen" + "value" : "EINE KATEGORIE AUSWÄHLEN" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Add item" + "value" : "Select a category" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Añadir elemento" + "value" : "SELECCIONA UNA CATEGORÍA" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ajouter un élément" + "value" : "SÉLECTIONNER UNE CATÉGORIE" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiungi elemento" + "value" : "SELEZIONA UNA CATEGORIA" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Item toevoegen" + "value" : "SELECTEER EEN CATEGORIE" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dodaj element" + "value" : "WYBIERZ KATEGORIĘ" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Adicionar elemento" + "value" : "SELECIONA UMA CATEGORIA" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Добавить запись" + "value" : "ВЫБЕРИТЕ КАТЕГОРИЮ" } } } }, - "tooltip.autofill.more-options" : { - "comment" : "Tooltip for the More Options button", + "vpn.feedback-form.category.too-slow" : { + "comment" : "Title for the 'VPN is too slow' category of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Weitere Optionen" + "value" : "VPN-Verbindung ist zu langsam" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "More options" + "value" : "VPN connection is too slow" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Más opciones" + "value" : "La conexión de la VPN es demasiado lenta" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Plus d'options" + "value" : "La connexion VPN est trop lente" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Altre opzioni" + "value" : "La connessione VPN è troppo lenta" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Meer opties" + "value" : "De VPN-verbinding is te traag" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Więcej opcji" + "value" : "Połączenie VPN jest za wolne" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mais opções" + "value" : "A ligação da VPN é demasiado lenta" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Другие параметры" + "value" : "Слишком медленное соединение по VPN" } } } }, - "tooltip.autofill.shortcut" : { - "comment" : "Tooltip for the autofill shortcut", + "vpn.feedback-form.category.unable-to-install" : { + "comment" : "Title for the 'unable to install' category of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Autovervollständigen" + "value" : "VPN lässt sich nicht installieren" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Autofill" + "value" : "Unable to install VPN" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Autocompletar" + "value" : "No se puede instalar la VPN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Saisie automatique" + "value" : "Impossible d'installer le VPN" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Compilazione automatica" + "value" : "Impossibile installare la VPN" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Automatisch invullen" + "value" : "Ik kan de VPN niet installeren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Autouzupełnianie" + "value" : "Nie można zainstalować VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Preenchimento automático" + "value" : "Não é possível instalar a VPN" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Автозаполнение" + "value" : "Невозможно установить VPN" } } } }, - "tooltip.bookmark.add" : { - "comment" : "Tooltip for the Add Bookmark button", + "vpn.feedback-form.sending-confirmation.description" : { + "comment" : "Title for the feedback sent view description of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Diese Seite als Lesezeichen markieren" + "value" : "Dein Feedback hilft uns, das DuckDuckGo-VPN zu verbessern." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Bookmark this page" + "value" : "Your feedback will help us improve the DuckDuckGo VPN." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Marcar esta página" + "value" : "Tus comentarios nos ayudarán a mejorar la VPN de DuckDuckGo." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ajouter cette page aux signets" + "value" : "Vos commentaires nous aideront à améliorer le VPN DuckDuckGo." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Crea un segnalibro per questa pagina" + "value" : "La tua opinione ci aiuterà a migliorare la VPN DuckDuckGo." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bladwijzer toevoegen aan deze pagina" + "value" : "Je feedback helpt ons de VPN-functie van DuckDuckGo te verbeteren." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dodaj tę stronę do zakładek" + "value" : "Twoja opinia pomoże nam ulepszyć DuckDuckGo VPN." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Marcar esta página" + "value" : "O teu feedback ajuda-nos a melhorar a VPN DuckDuckGo." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сохранить в закладках" + "value" : "Ваш отзыв поможет нам улучшить сервис DuckDuckGo VPN." } } } }, - "tooltip.bookmark.edit" : { - "comment" : "Tooltip for the Edit Bookmark button", + "vpn.feedback-form.sending-confirmation.error" : { + "comment" : "Title for the feedback sending error text of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Lesezeichen bearbeiten" + "value" : "Dein Feedback konnte nicht gesendet werden. Bitte versuche es erneut." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Edit bookmark" + "value" : "We couldn't send your feedback right now, please try again." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Editar marcador" + "value" : "No hemos podido enviar tus comentarios ahora mismo, inténtalo de nuevo." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Modifier le signet" + "value" : "Nous n'avons pas pu envoyer vos commentaires pour le moment ; veuillez réessayer." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Modifica segnalibro" + "value" : "Non siamo riusciti a inviare il tuo feedback in questo momento, riprova." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bladwijzer bewerken" + "value" : "We kunnen je feedback op dit moment niet verzenden. Probeer het opnieuw." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Edytuj zakładkę" + "value" : "Nie udało się teraz przesłać Twojej opinii, spróbuj ponownie." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Editar marcador" + "value" : "Não foi possível enviar o teu feedback, tenta novamente." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Редактировать закладку" + "value" : "Отправить ваш отзыв прямо сейчас не удалось. Повторите попытку." } } } }, - "tooltip.bookmarks.manage-bookmarks" : { - "comment" : "Tooltip for the Manage Bookmarks button", + "vpn.feedback-form.sending-confirmation.title" : { + "comment" : "Title for the feedback sent view title of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Lesezeichen verwalten" + "value" : "Vielen Dank!" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Manage bookmarks" + "value" : "Thank you!" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Gestionar marcadores" + "value" : "¡Gracias!" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Gérer les signets" + "value" : "Merci !" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Gestisci segnalibri" + "value" : "Grazie!" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bladwijzers beheren" + "value" : "Bedankt!" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zarządzaj zakładkami" + "value" : "Dziękujemy!" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Gerir marcadores" + "value" : "Obrigado!" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Управление закладками" + "value" : "Спасибо!" } } } }, - "tooltip.bookmarks.new-bookmark" : { - "comment" : "Tooltip for the New Bookmark button", + "vpn.feedback-form.text-1" : { + "comment" : "Text for the body of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neues Lesezeichen" + "value" : "Bitte beschreibe, was passiert, was du erwartet hast und welche Schritte zu dem Problem geführt haben:" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "New bookmark" + "value" : "Please describe what's happening, what you expected to happen, and the steps that led to the issue:" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Nuevo marcador" + "value" : "Describe lo que está pasando, lo que esperabas que ocurriera y los pasos que han llevado al problema:" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nouveau signet" + "value" : "Veuillez décrire ce qui se passe, ce qui aurait dû se passer et les différentes étapes qui ont précédé le problème :" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nuovo segnalibro" + "value" : "Descrivi cosa sta succedendo, cosa ti aspettavi che accadesse e i passaggi che hanno portato al problema:" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nieuwe bladwijzer" + "value" : "Beschrijf wat er gebeurt, wat je verwachtte dat er zou gebeuren en de stappen die tot het probleem hebben geleid." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nowa zakładka" + "value" : "Opisz, co się wydarzyło, czego oczekiwano i jakie działania doprowadziły do wystąpienia problemu:" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Novo marcador" + "value" : "Descreve o que está a acontecer, o que esperavas que acontecesse e os passos que levaram ao problema:" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Новая закладка" + "value" : "Опишите, что происходит, что ожидалось и какие действия привели к неполадке." } } } }, - "tooltip.bookmarks.new-folder" : { - "comment" : "Tooltip for the New Folder button", + "vpn.feedback-form.text-2" : { + "comment" : "Text for the body of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Neuer Ordner" + "value" : "Zusätzlich zu den in diesem Formular angegebenen Details enthält dein App-Fehlerbericht:" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "New folder" + "value" : "In addition to the details entered into this form, your app issue report will contain:" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Nueva carpeta" + "value" : "Además de los detalles introducidos en este formulario, tu informe de problemas de la aplicación contendrá:" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Nouveau dossier" + "value" : "Outre les renseignements saisis dans ce formulaire, votre rapport sur les problèmes de l'application contiendra les informations suivantes :" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Nuova cartella" + "value" : "Oltre ai dettagli inseriti in questo modulo, la segnalazione sui problemi dell'app conterrà le seguenti informazioni:" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Nieuwe map" + "value" : "Naast de gegevens die in dit formulier zijn ingevoerd, bevat je foutrapport:" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Nowy folder" + "value" : "Oprócz szczegółów wprowadzonych w tym formularzu zgłoszenie problemu z aplikacją będzie zawierać:" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Nova pasta" + "value" : "Para além dos detalhes introduzidos neste formulário, o teu relatório de problemas na aplicação vai incluir:" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Новая папка" + "value" : "Помимо информации, внесенной в эту форму, в отчет войдет следующее:" } } } }, - "tooltip.bookmarks.search" : { - "comment" : "Tooltip to activate the bookmark search", + "vpn.feedback-form.text-3" : { + "comment" : "Bullet text for the body of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Lesezeichen durchsuchen" + "value" : "• Ob bestimmte DuckDuckGo-Funktionen aktiviert sind" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Search bookmarks" + "value" : "• Whether specific DuckDuckGo features are enabled" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Buscar marcadores" + "value" : "• Si están habilitadas funciones específicas de DuckDuckGo" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Rechercher des favoris" + "value" : "• Si des fonctionnalités spécifiques de DuckDuckGo sont actives" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cerca segnalibri" + "value" : "• Comunicherà se specifiche funzioni di DuckDuckGo sono attive" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bladwijzers zoeken" + "value" : "• Of er specifieke functies in DuckDuckGo zijn ingeschakeld" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyszukaj zakładki" + "value" : "• Czy określone funkcje DuckDuckGo są włączone" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Pesquisar marcadores" + "value" : "• Se tens funcionalidades específicas do DuckDuckGo ativas" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Поиск по закладкам" + "value" : "• сведения о том, были ли активированы конкретные функции DuckDuckGo;" } } } }, - "tooltip.bookmarks.shortcut" : { - "comment" : "Tooltip for the bookmarks shortcut", + "vpn.feedback-form.text-4" : { + "comment" : "Bullet text for the body of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Lesezeichen" + "value" : "• Aggregierte DuckDuckGo-App-Diagnose" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Bookmarks" + "value" : "• Aggregate DuckDuckGo app diagnostics" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Marcadores" + "value" : "• Diagnósticos agregados de la aplicación DuckDuckGo" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Signets" + "value" : "• Les diagnostics agrégés de l'application DuckDuckGo" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Segnalibri" + "value" : "• Aggregherà le diagnostiche dell'app DuckDuckGo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Bladwijzers" + "value" : "• Verzamelde diagnostische gegevens voor de DuckDuckGo-app" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zakładki" + "value" : "• Zbiorcze dane diagnostyczne aplikacji DuckDuckGo" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Marcadores" + "value" : "• Diagnósticos da aplicação DuckDuckGo agregados" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Закладки" + "value" : "• обобщенные результаты диагностики приложения DuckDuckGo." } } } }, - "tooltip.bookmarks.sort" : { - "comment" : "Tooltip to activate the bookmark sort", + "vpn.feedback-form.text-5" : { + "comment" : "Text for the body of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Sortieren" + "value" : "Durch Klicken auf „Absenden“ erkläre ich mich damit einverstanden, dass DuckDuckGo die Informationen in diesem Bericht zur Verbesserung der Funktionen der App verwenden darf." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Sort" + "value" : "By clicking \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ordenar" + "value" : "Al hacer clic en \"Enviar\", acepto que DuckDuckGo pueda utilizar la información de este informe para mejorar las funciones de la aplicación." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Trier" + "value" : "En cliquant sur « Envoyer », j'accepte que DuckDuckGo puisse utiliser les informations contenues dans ce rapport afin d'améliorer les fonctionnalités de l'application." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ordina" + "value" : "Cliccando su \"Invia\" accetto che DuckDuckGo possa usare le informazioni in questo rapporto per migliorare le funzionalità dell'app." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Sorteren" + "value" : "Door op 'Verzenden' te klikken, ga ik ermee akkoord dat DuckDuckGo de informatie in dit rapport kan gebruiken om de functies van de app te verbeteren." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Sortuj" + "value" : "Klikając opcję „Prześlij”, zgadzam się na wykorzystanie przez DuckDuckGo informacji zawartych w tym zgłoszeniu w celu ulepszenia funkcji aplikacji." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ordenar" + "value" : "Ao clicar em \"Enviar\", concordo que o DuckDuckGo pode utilizar as informações neste relatório para melhorar as funcionalidades da aplicação." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сортировать" + "value" : "Нажимая кнопку «Отправить», я разрешаю DuckDuckGo использовать данные в этом отчете для улучшения работы приложения." } } } }, - "tooltip.bookmarks.sort.name.title" : { - "comment" : "Title when bookmark sort by name is enabled", + "vpn.feedback-form.title" : { + "comment" : "Title for each screen of the VPN feedback form", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nach Namen sortieren" + "value" : "Hilf mit, das DuckDuckGo-VPN zu verbessern" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Sort by Name" + "value" : "Help Improve the DuckDuckGo VPN" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ordenar por nombre" + "value" : "Ayuda a mejorar la VPN de DuckDuckGo" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Trier par nom" + "value" : "Participez à l'amélioration du VPN DuckDuckGo" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ordina per nome" + "value" : "Aiuta a migliorare la VPN di DuckDuckGo" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Sorteren op naam" + "value" : "Help de VPN-functie van DuckDuckGo te verbeteren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Sortuj według nazwy" + "value" : "Pomóż ulepszyć DuckDuckGo VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ordenar por nome" + "value" : "Ajuda a melhorar a VPN DuckDuckGo" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Сортировать по названию" + "value" : "Помогите нам улучшить DuckDuckGo VPN" } } } }, - "tooltip.clearHistory" : { - "comment" : "Tooltip for burn button where %@ is the domain", + "vpn.general.title" : { + "comment" : "General section title in VPN settings", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Browserverlauf für %@ löschen" + "value" : "Allgemein" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Clear browsing history for %@" + "value" : "General" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Borrar el historial de navegación para %@" + "value" : "General" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Effacer l'historique de navigation pour %@" + "value" : "Général" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cancella la cronologia di navigazione per % @" + "value" : "Generale" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Surfgeschiedenis en -data van %@ wissen" + "value" : "Algemeen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyczyść historię przeglądania domeny %@" + "value" : "Ogólne" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Limpar histórico de navegação de %@" + "value" : "Geral" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Стереть историю просмотров сайта %@" + "value" : "Основные" } } } }, - "tooltip.clearHistoryAndData" : { - "comment" : "Tooltip for burn button where %@ is the domain", + "vpn.location.change.button.title" : { + "comment" : "Title of the VPN location preference change button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Browserverlauf und Daten für %@ löschen" + "value" : "Ändern..." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Clear browsing history and data for %@" + "value" : "Change..." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Borrar historial de navegación y datos de %@" + "value" : "Cambiar..." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Effacer l'historique de navigation et les données pour %@" + "value" : "Modifier…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cancella la cronologia di navigazione e i dati per % @" + "value" : "Cambia..." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Surfgeschiedenis en -data van %@ wissen" + "value" : "Wijzigen..." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyczyść historię przeglądania i dane domeny %@" + "value" : "Zmień..." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Limpar histórico de navegação e dados de %@" + "value" : "Mudar…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Стереть историю просмотров и данные сайта %@" + "value" : "Изменить..." } } } }, - "tooltip.downloads.clear-download-history" : { - "comment" : "Tooltip for the Clear Downloads button", + "vpn.location.custom.section.title" : { + "comment" : "Title of the VPN location list cancel button (Note: seems like a duplicate key with a different purpose, please check)\nTitle of the VPN location list custom section", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Download-Verlauf löschen" + "value" : "Abbrechen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Clear download history" + "value" : "Cancel" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Borrar historial de descargas" + "value" : "Cancelar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Effacer l'historique des téléchargements" + "value" : "Annuler" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cancella la cronologia dei download" + "value" : "Annulla" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Downloadgeschiedenis wissen" + "value" : "Annuleren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyczyść historię pobierania" + "value" : "Anuluj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Limpar histórico de transferências" + "value" : "Cancelar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Стереть историю загрузок" + "value" : "Отменить" } } } }, - "tooltip.downloads.open-downloads-folder" : { - "comment" : "Tooltip for the Open Downloads Folder button", + "vpn.location.description.nearest" : { + "comment" : "Nearest city setting description", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Download-Ordner öffnen" + "value" : "Nächstgelegen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open downloads folder" + "value" : "Nearest" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir carpeta de descargas" + "value" : "Más cercana" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir le dossier des téléchargements" + "value" : "Le plus proche" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri la cartella download" + "value" : "La più vicina" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Downloadmap openen" + "value" : "Dichtstbijzijnd" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz folder pobranych" + "value" : "Najbliższy" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir pasta de transferências" + "value" : "Mais próxima" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть папку «Загрузки»" + "value" : "(Ближайший вариант)" } } } }, - "tooltip.downloads.shortcut" : { - "comment" : "Tooltip for the downloads shortcut", + "vpn.location.description.nearest.available" : { + "comment" : "Nearest available location setting description", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Downloads" + "value" : "Nächstgelegener Standort" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Downloads" + "value" : "Nearest Location" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Descargas" + "value" : "Ubicación más cercana" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Téléchargements" + "value" : "Emplacement le plus proche" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Download" + "value" : "Posizione più vicina" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Downloads" + "value" : "Dichtstbijzijnde locatie" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pobrane" + "value" : "Najbliższa lokalizacja" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Transferências" + "value" : "Localização Mais Próxima" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Загрузки" + "value" : "Ближайшее место" } } } }, - "tooltip.find-in-page.close" : { - "comment" : "Tooltip for the Find In Page bar's Close button", + "vpn.location.list.title" : { + "comment" : "Title of the VPN location list screen", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Suchleiste schließen" + "value" : "VPN-Standort" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Close find bar" + "value" : "VPN Location" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Cerrar la barra de búsqueda" + "value" : "Ubicación de VPN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Fermer la barre de recherche" + "value" : "Localisation VPN" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Chiudi la barra di ricerca" + "value" : "Posizione VPN" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Zoekbalk sluiten" + "value" : "VPN-locatie" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zamknij pasek wyszukiwania" + "value" : "Lokalizacja VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Fechar barra de procura" + "value" : "Localização da VPN" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Закрыть панель поиска" + "value" : "Местоположение VPN" } } } }, - "tooltip.find-in-page.next" : { - "comment" : "Tooltip for the Find In Page bar's Next button", + "vpn.location.nearest.available.title" : { + "comment" : "Subtitle underneath the nearest available vpn location preference text.", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nächstes Ergebnis" + "value" : "Verbinde dich automatisch mit dem nächstgelegenen Server, den wir finden können." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Next result" + "value" : "Automatically connect to the nearest server we can find." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Siguiente resultado" + "value" : "Conectarte automáticamente al servidor más cercano que encontremos." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Résultat suivant" + "value" : "Connectez-vous automatiquement au serveur le plus proche que nous trouvons." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Risultato successivo" + "value" : "Connettiti automaticamente al server più vicino che riusciamo a trovare." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Volgende resultaat" + "value" : "Maak automatisch verbinding met de dichtstbijzijnde server die we kunnen vinden." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Następny wynik" + "value" : "Automatycznie połącz z najbliższym znalezionym serwerem." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Resultado seguinte" + "value" : "Ligar automaticamente ao servidor mais próximo que encontrarmos." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Следующий результат" + "value" : "Автоматически подключаться к ближайшему найденному серверу." } } } }, - "tooltip.find-in-page.previous" : { - "comment" : "Tooltip for the Find In Page bar's Previous button", + "vpn.location.recommended.section.title" : { + "comment" : "Title of the VPN location list recommended section", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Vorheriges Ergebnis" + "value" : "Empfohlen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Previous result" + "value" : "Recommended" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Resultado anterior" + "value" : "Recomendado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Résultat précédent" + "value" : "Recommandée" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Risultato precedente" + "value" : "Consigliato" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Vorig resultaat" + "value" : "Aanbevolen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Poprzedni wynik" + "value" : "Zalecane" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Resultado anterior" + "value" : "Recomendada" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Предыдущий результат" + "value" : "Рекомендуем" } } } }, - "tooltip.fire.clear-browsing-history" : { - "comment" : "Tooltip for the Fire button", + "vpn.location.submit.button.title" : { + "comment" : "Title of the VPN location list submit button", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Browserverlauf löschen" + "value" : "Abschicken" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Clear browsing history" + "value" : "Submit" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Borrar historial de navegación" + "value" : "Enviar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Effacer l'historique de navigation" + "value" : "Envoyer" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Cancella cronologia di navigazione" + "value" : "Invia" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Surfgeschiedenis wissen" + "value" : "Verzenden" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyczyść historię przeglądania" + "value" : "Prześlij" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Limpar histórico de navegação" + "value" : "Submeter" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Очистить историю просмотров" + "value" : "Отправить" } } } }, - "tooltip.home.button" : { - "comment" : "Tooltip for the home button", + "vpn.location.title" : { + "comment" : "Location section title in VPN settings", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Startseite" + "value" : "Standort" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Home" + "value" : "Location" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Inicio" + "value" : "Ubicación" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Accueil" + "value" : "Localisation" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Schermata iniziale" + "value" : "Posizione" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Home" + "value" : "Locatie" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Strona główna" + "value" : "Lokalizacja" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Página inicial" + "value" : "Localização" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Домашняя" + "value" : "Геопозиция" } } } }, - "tooltip.navigation.back" : { - "comment" : "Tooltip for the Back button", + "vpn.notifications.connection.drops.or.status.changes.title" : { + "comment" : "Title of the VPN notification option", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Vorherige Seite anzeigen\nHalten, um den Verlauf anzuzeigen" + "value" : "VPN-Verbindungsabbrüche oder Statusänderungen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show the previous page\nHold to show history" + "value" : "VPN connection drops or status changes" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar la página anterior\nMantener para mostrar el historial" + "value" : "La conexión VPN se cae o cambia de estado" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher la page précédente\nMaintenir pour afficher l'historique" + "value" : "La connexion VPN est interrompue ou son statut change" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra la pagina precedente\nTieni premuto per mostrare la cronologia" + "value" : "La connessione VPN cade o lo stato cambia" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "De vorige pagina weergeven \n Houd ingedrukt om de geschiedenis weer te geven" + "value" : "VPN-verbinding valt weg of de status verandert" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż poprzednią stronę\nPrzytrzymaj, aby wyświetlić historię" + "value" : "Zerwanie połączenia VPN lub zmiana stanu" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar a página anterior\nSegurar para mostrar o histórico" + "value" : "Receber uma notificação se a tua ligação VPN cair ou o estado mudar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать предыдущую страницу\nУдерживайте эту кнопку для просмотра истории" + "value" : "Обрыв соединения или изменение состояния VPN" } } } }, - "tooltip.navigation.forward" : { - "comment" : "Tooltip for the Forward button", + "vpn.notifications.settings.title" : { + "comment" : "Notifications section title in VPN settings", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Nächste Seite anzeigen\nHalten, um den Verlauf anzuzeigen" + "value" : "Benachrichtigungen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show the next page\nHold to show history" + "value" : "Notifications" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar la página siguiente\nMantener para mostrar el historial" + "value" : "Notificaciones" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher la page suivante\nMaintenir pour afficher l'historique" + "value" : "Notifications" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra la pagina successiva\nTieni premuto per mostrare la cronologia" + "value" : "Notifiche" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "De volgende pagina weergeven \n Houd ingedrukt om de geschiedenis weer te geven" + "value" : "Meldingen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż następną stronę\nPrzytrzymaj, aby wyświetlić historię" + "value" : "Powiadomienia" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar a página seguinte\nSegurar para mostrar o histórico" + "value" : "Notificações" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать следующую страницу\nУдерживайте эту кнопку для просмотра истории" + "value" : "Уведомления" } } } }, - "tooltip.navigation.refresh" : { - "comment" : "Tooltip for the Refresh button", + "vpn.setting.add.excluded.domain.action.button.title" : { + "comment" : "Add excluded domain button title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Diese Seite neu laden" + "value" : "Website ausschließen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Reload this page" + "value" : "Exclude Website" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Volver a cargar esta página" + "value" : "Excluir sitio web" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Recharger cette page" + "value" : "Exclure le site Web" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Ricarica la pagina" + "value" : "Escludi sito web" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Deze pagina opnieuw laden" + "value" : "Website uitsluiten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Załaduj ponownie tę stronę" + "value" : "Wyklucz witrynę" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Recarregar esta página" + "value" : "Excluir Website" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Перезагрузить страницу" + "value" : "Исключить сайт" } } } }, - "tooltip.navigation.stop" : { - "comment" : "Tooltip for the Stop Navigation button", + "vpn.setting.add.excluded.domain.cancel.button.title" : { + "comment" : "Add excluded domain cancel button title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Diese Seite nicht mehr laden" + "value" : "Abbrechen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Stop loading this page" + "value" : "Cancel" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Dejar de cargar esta página" + "value" : "Cancelar" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Arrêter le chargement de cette page" + "value" : "Annuler" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Interrompi il caricamento della pagina" + "value" : "Annulla" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Stop met het laden van deze pagina" + "value" : "Annuleren" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Zatrzymaj ładowanie tej strony" + "value" : "Anuluj" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Parar de carregar esta página" + "value" : "Cancelar" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Остановить загрузку страницы" + "value" : "Отменить" } } } }, - "tooltip.privacy-dashboard.show" : { - "comment" : "Tooltip for the Privacy Dashboard button", + "vpn.setting.add.excluded.domain.title" : { + "comment" : "Add excluded domain title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Privacy Dashboard anzeigen und Website-Einstellungen verwalten" + "value" : "Website vom VPN ausschließen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Show the Privacy Dashboard and manage site settings" + "value" : "Exclude Website From VPN" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar Privacy Dashboard y gestionar la configuración del sitio" + "value" : "Excluir sitio web de la VPN" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Afficher le Privacy Dashboard et gérer les paramètres du site" + "value" : "Exclure le site Web du VPN" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Mostra la Privacy Dashboard e gestisci le impostazioni del sito" + "value" : "Escludi il sito web dalla VPN" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Het Privacy Dashboard tonen en de instellingen van de website beheren" + "value" : "Website uitsluiten van de VPN" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Pokaż panel Privacy Dashboard i zarządzaj ustawieniami witryny" + "value" : "Wyklucz witrynę internetową z VPN" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Mostrar o Privacy Dashboard e gerir as definições do site" + "value" : "Excluir Website da VPN" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Показать панель Privacy Dashboard и проконтролировать настройки сайта" + "value" : "Исключить сайт из VPN" } } } }, - "tooltip.tab.new-tab" : { - "comment" : "Tooltip for the New Tab button", + "vpn.setting.description.always.on" : { + "comment" : "Always ON setting description", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Einen neuen Tab öffnen" + "value" : "Stellt die VPN-Verbindung nach einer Unterbrechung automatisch wieder her. Zu deiner Sicherheit kann diese Einstellung nicht deaktiviert werden." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Open a new tab" + "value" : "Automatically restores the VPN connection after interruption. For your security, this setting cannot be disabled." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir una nueva pestaña" + "value" : "Restaura automáticamente la conexión VPN tras una interrupción. Por tu seguridad, este ajuste no se puede desactivar." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Ouvrir un nouvel onglet" + "value" : "Restaure automatiquement la connexion VPN après une interruption. Pour votre sécurité, ce paramètre ne peut pas être désactivé." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Apri una nuova scheda" + "value" : "Ripristina automaticamente la connessione VPN dopo un'interruzione. Per la tua sicurezza, questa impostazione non può essere disattivata." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Een nieuw tabblad openen" + "value" : "Herstelt automatisch de VPN-verbinding na een onderbreking. Voor je veiligheid kan deze instelling niet worden uitgeschakeld." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Otwórz nową kartę" + "value" : "Automatycznie przywraca połączenie VPN po jego przerwaniu. Ze względów bezpieczeństwa nie można wyłączyć tego ustawienia." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Abrir um novo separador" + "value" : "Restaura automaticamente uma ligação VPN após a interrupção. Para tua segurança, esta definição não pode ser desativada." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открыть новую вкладку" + "value" : "Автоматически восстанавливает VPN-соединение в случае его прерывания. В целях безопасности эту настройку невозможно отключить." } } } }, - "Transformations" : { - "comment" : "Main Menu Edit item", + "vpn.setting.description.exclude.local.networks" : { + "comment" : "Exclude Local Networks setting description", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Transformationen" + "value" : "Umgehe das VPN für lokale Netzwerkverbindungen, z. B. zu einem Drucker." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Bypass the VPN for local network connections, like to a printer." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Transformaciones" + "value" : "Omitir la VPN para conexiones de red local, como una impresora." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Transformations" + "value" : "Contournez le VPN pour les connexions au réseau local, par exemple à une imprimante." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Trasformazioni" + "value" : "Bypassa la VPN per le connessioni alla rete locale, come a una stampante." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Aanpassingen" + "value" : "Omzeil de VPN voor lokale netwerkverbindingen, zoals naar een printer." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Przekształcenia" + "value" : "Pomiń VPN dla połączeń z siecią lokalną, na przykład z drukarką." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Maiúsculas/minúsculas" + "value" : "Ignora a VPN para ligações de rede local, como a uma impressora." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Преобразования" + "value" : "Обход VPN при локальных сетевых подключениях (например, к принтеру)." } } } }, - "uninstall" : { - "comment" : "Uninstall button", + "vpn.setting.description.secure.dns" : { + "comment" : "Secure DNS description", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Deinstallieren" + "value" : "DuckDuckGo leitet DNS-Anfragen über seine eigenen DNS-Server, damit dein Internetanbieter nicht sehen kann, welche Websites du besuchst." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Uninstall" + "value" : "DuckDuckGo routes DNS queries through our DNS servers so your internet provider can't see what websites you visit." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desinstalar" + "value" : "DuckDuckGo enruta las consultas de DNS a través de nuestros servidores DNS para que tu proveedor de Internet no pueda ver qué sitios web visitas." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Désinstaller" + "value" : "DuckDuckGo achemine les requêtes DNS via nos serveurs DNS afin que votre fournisseur d'accès à Internet ne puisse pas voir les sites Web que vous visitez." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Disinstalla" + "value" : "DuckDuckGo instrada le query DNS tramite i nostri server DNS in modo che il tuo provider internet non possa vedere quali siti web visiti." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Verwijderen" + "value" : "DuckDuckGo routeert DNS-zoekopdrachten via onze DNS-servers zodat je internetprovider niet kan zien welke websites je bezoekt." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Odinstaluj" + "value" : "DuckDuckGo kieruje zapytania DNS przez nasze serwery DNS, aby Twój dostawca usług internetowych nie mógł zobaczyć, jakie strony odwiedzasz." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Desinstalar" + "value" : "O DuckDuckGo encaminha as consultas DNS através dos nossos servidores DNS para que o teu fornecedor de Internet não possa ver os sites que visitas." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Удалить" + "value" : "DuckDuckGo направляет DNS-запросы через собственные DNS-серверы, поэтому ваш интернет-провайдер не увидит, какие сайты вы посещаете." } } } }, - "unmute.tab" : { - "comment" : "Menu item. Unmute tab", + "vpn.setting.excluded.domains.description" : { + "comment" : "Excluded Sites description", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Tab-Stummschaltung aufheben" + "value" : "Ausgeschlossene Websites werden das VPN umgehen." } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Unmute Tab" + "value" : "Excluded websites will bypass the VPN." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desilenciar pestaña" + "value" : "Los sitios web excluidos evitarán la VPN." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Réactiver le son de l'onglet" + "value" : "Les sites Web exclus passeront outre le VPN." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Riattiva audio scheda" + "value" : "I siti web esclusi non potranno essere utilizzati dalla VPN." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Dempen van tabblad opheffen" + "value" : "Uitgesloten websites zullen de VPN omzeilen." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyłącz wyciszenie karty" + "value" : "Wykluczone witryny będą pomijać VPN." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ativar Som do Separador" + "value" : "Os Websites excluídos são ignorados pela VPN." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Включить звук на вкладке" + "value" : "Исключенные сайты будут работать в обход VPN." } } } }, - "unpin.tab" : { - "comment" : "Menu item. Unpin as a verb", + "vpn.setting.excluded.domains.manage.button.title" : { + "comment" : "Excluded Sites management button title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Tab lösen" + "value" : "Ausgeschlossene Websites verwalten …" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Unpin Tab" + "value" : "Manage Excluded Websites…" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Desanclar pestaña" + "value" : "Administrar sitios web excluidos..." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Détacher l’onglet" + "value" : "Gérer les sites Web exclus…" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Sblocca scheda" + "value" : "Gestisci i siti esclusi..." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Tab loskoppelen" + "value" : "Uitgesloten websites beheren…" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Odepnij kartę" + "value" : "Zarządzaj wykluczonymi witrynami…" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Libertar separador" + "value" : "Websites excluídos…" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Открепить вкладку" + "value" : "Управление исключенными сайтами…" } } } }, - "unsupported.device.info.alert.header" : { - "comment" : "his string represents the header for an alert informing the user that their version of macOS is no longer supported", + "vpn.setting.title.connect.on.login" : { + "comment" : "Connect on Login setting title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Deine Version von macOS wird nicht mehr unterstützt." + "value" : "Beim Anmelden bei deinem Computer eine Verbindung zum VPN herstellen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Your version of macOS is no longer supported." + "value" : "Connect to VPN when logging in to your computer" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Tu versión de macOS ya no es compatible." + "value" : "Conectarse a la VPN al iniciar sesión en tu ordenador" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Votre version de macOS n'est plus prise en charge." + "value" : "Connectez-vous au VPN en vous connectant à votre ordinateur" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "La tua versione di macOS non è più supportata." + "value" : "Connettiti alla VPN quando accedi al computer" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Je versie van macOS wordt niet meer ondersteund." + "value" : "Verbinding maken met VPN wanneer je je aanmeldt bij je computer" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Twoja wersja systemu macOS już nie jest obsługiwana." + "value" : "Połącz się z VPN podczas logowania do komputera" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "A tua versão do macOS já não é suportada." + "value" : "Ligar à VPN quando inicias sessão no teu computador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Ваша версия macOS больше не поддерживается." + "value" : "Подключаться к VPN при входе на компьютер" } } } }, - "update" : { - "comment" : "Update button", + "vpn.setting.title.exclude.local.networks" : { + "comment" : "Exclude Local Networks setting title", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Aktualisieren" + "value" : "Lokale Netzwerke ausschließen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Update" + "value" : "Exclude local networks" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Actualizar" + "value" : "Excluir redes locales" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Actualiser" + "value" : "Exclure les réseaux locaux" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiorna" + "value" : "Escludi reti locali" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Updaten" + "value" : "Lokale netwerken uitsluiten" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Aktualizacja" + "value" : "Wyklucz sieci lokalne" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Atualizar" + "value" : "Excluir redes locais" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Обновить" + "value" : "Исключить локальные сети" } } } }, - "update.available.menu.item" : { - "comment" : "Title of the menu item that informs user that a new update is available. Clicking on the menu item installs the update", + "vpn.setting.title.show.in.browser.toolbar" : { + "comment" : "Display VPN status in the browser toolbar", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Update verfügbar – jetzt installieren" + "value" : "VPN in der Browser-Symbolleiste anzeigen" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Update Available - Install Now" + "value" : "Show VPN in browser toolbar" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Actualización disponible - Instalar ahora" + "value" : "Mostrar VPN en la barra de herramientas del navegador" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Mise à jour disponible : installer" + "value" : "Afficher le VPN dans la barre d'outils du navigateur" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Aggiornamento disponibile - Installa ora" + "value" : "Mostra la VPN nella barra degli strumenti del browser" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Update beschikbaar - nu installeren" + "value" : "VPN weergeven in browserwerkbalk" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Dostępna aktualizacja — zainstaluj teraz" + "value" : "Pokaż VPN na pasku narzędzi przeglądarki" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Atualização disponível – Instalar agora" + "value" : "Mostrar VPN na barra de ferramentas do navegador" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Доступно обновление – установить сейчас" + "value" : "Показывать значок VPN на панели инструментов браузера" } } } }, - "URL" : { + "vpn.setting.title.show.in.menu.bar" : { + "comment" : "Display VPN status in the menu bar", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "URL" + "value" : "VPN in der Menüleiste anzeigen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Show VPN in menu bar" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "URL" + "value" : "Mostrar VPN en la barra de menú" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "URL" + "value" : "Afficher le VPN dans la barre de menu" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "URL" + "value" : "Mostra la VPN nella barra del menu" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "URL" + "value" : "VPN weergeven in menubalk" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Adres URL" + "value" : "Pokaż VPN na pasku menu" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "URL" + "value" : "Mostrar a VPN na barra de menu" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "URL" + "value" : "Показывать VPN в строке меню" } } } }, - "version" : { - "comment" : "Displays the version and build numbers", + "vpn.shortcuts.settings.title" : { + "comment" : "Shortcuts section title in VPN settings", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Version %1$@ (%2$@)" + "value" : "Shortcuts" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "Version %1$@ (%2$@)" + "value" : "Shortcuts" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Versión %1$@ (%2$@)" + "value" : "Accesos directos" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Version %1$@ (%2$@)" + "value" : "Raccourcis" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Versione %1$@ (%2$@)" + "value" : "Scorciatoie" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Versie %1$@ (%2$@)" + "value" : "Sneltoetsen" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wersja %1$@ (%2$@)" + "value" : "Skróty" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Versão %1$@ (%2$@)" + "value" : "Atalhos" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Версия %1$@ (%2$@)" + "value" : "Ярлыки" } } } }, - "View" : { - "comment" : "Main Menu View", + "vpn.uninstall.alert.informative.text" : { + "comment" : "Informative text for the alert that comes up when the user decides to uninstall our VPN", + "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Ansehen" + "value" : "Wenn du das DuckDuckGo-VPN deinstallierst, wird die Verbindung zum VPN getrennt und es wird von deinem Gerät entfernt." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Uninstalling the DuckDuckGo VPN will disconnect the VPN and remove it from your device." } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ver" + "value" : "Al desinstalar la VPN de DuckDuckGo, se desconectará la VPN y se eliminará de tu dispositivo." } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Voir" + "value" : "La désinstallation du VPN DuckDuckGo déconnectera le VPN et le supprimera de votre appareil." } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Visualizza" + "value" : "Disinstallando la VPN di DuckDuckGo, la VPN sarà scollegata e rimossa dal tuo dispositivo." } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Weergeven" + "value" : "Als je de VPN-functie van DuckDuckGo verwijdert, wordt de VPN losgekoppeld en van je apparaat verwijderd." } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyświetl" + "value" : "Odinstalowanie DuckDuckGo VPN spowoduje odłączenie VPN i usunięcie go z urządzenia." } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Visualizar" + "value" : "A desinstalação da VPN DuckDuckGo desativa a VPN e remove-a do teu dispositivo." } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Вид" + "value" : "Удаление DuckDuckGo VPN приведет к отключению VPN и удалению данной программы с вашего устройства." } } } }, - "view.details.button" : { - "comment" : "Button title to open more details about the update", + "vpn.uninstall.alert.title" : { + "comment" : "Alert title when the user selects to uninstall our VPN", "extractionState" : "extracted_with_value", "localizations" : { "de" : { "stringUnit" : { "state" : "translated", - "value" : "Details anzeigen" + "value" : "Möchtest du das VPN wirklich deinstallieren?" } }, "en" : { "stringUnit" : { "state" : "new", - "value" : "View Details" + "value" : "Are you sure you want to uninstall the VPN?" } }, "es" : { "stringUnit" : { "state" : "translated", - "value" : "Ver detalles" + "value" : "¿Seguro que quieres desinstalar la VPN?" } }, "fr" : { "stringUnit" : { "state" : "translated", - "value" : "Voir les détails" + "value" : "Voulez-vous vraiment désinstaller le VPN ?" } }, "it" : { "stringUnit" : { "state" : "translated", - "value" : "Guarda i dettagli" + "value" : "Disinstallare la VPN?" } }, "nl" : { "stringUnit" : { "state" : "translated", - "value" : "Details bekijken" + "value" : "Weet je zeker dat je de VPN-functie wilt verwijderen?" } }, "pl" : { "stringUnit" : { "state" : "translated", - "value" : "Wyświetl szczegóły" + "value" : "Czy na pewno chcesz odinstalować VPN?" } }, "pt" : { "stringUnit" : { "state" : "translated", - "value" : "Ver detalhes" + "value" : "Tens a certeza de que queres desinstalar a VPN?" } }, "ru" : { "stringUnit" : { "state" : "translated", - "value" : "Подробнее" + "value" : "Вы точно хотите удалить VPN?" } } } @@ -64606,4 +72418,4 @@ } }, "version" : "1.0" -} +} \ No newline at end of file diff --git a/DuckDuckGo/NetworkProtection/AppTargets/BothAppTargets/NetworkProtectionNavBarPopoverManager.swift b/DuckDuckGo/NetworkProtection/AppTargets/BothAppTargets/NetworkProtectionNavBarPopoverManager.swift index 3fd21aa827..6e83f21120 100644 --- a/DuckDuckGo/NetworkProtection/AppTargets/BothAppTargets/NetworkProtectionNavBarPopoverManager.swift +++ b/DuckDuckGo/NetworkProtection/AppTargets/BothAppTargets/NetworkProtectionNavBarPopoverManager.swift @@ -133,11 +133,11 @@ final class NetworkProtectionNavBarPopoverManager: NetPPopoverManager { if UserDefaults.netP.networkProtectionOnboardingStatus == .completed { return [ NetworkProtectionStatusView.Model.MenuItem( - name: UserText.networkProtectionNavBarStatusMenuVPNSettings, action: { + name: UserText.networkProtectionNavBarStatusViewVPNSettings, action: { try? await appLauncher.launchApp(withCommand: VPNAppLaunchCommand.showSettings) }), NetworkProtectionStatusView.Model.MenuItem( - name: UserText.networkProtectionNavBarStatusMenuFAQ, action: { + name: UserText.networkProtectionNavBarStatusViewFAQ, action: { try? await appLauncher.launchApp(withCommand: VPNAppLaunchCommand.showFAQ) }), NetworkProtectionStatusView.Model.MenuItem( @@ -149,7 +149,7 @@ final class NetworkProtectionNavBarPopoverManager: NetPPopoverManager { } else { return [ NetworkProtectionStatusView.Model.MenuItem( - name: UserText.networkProtectionNavBarStatusMenuFAQ, action: { + name: UserText.networkProtectionNavBarStatusViewFAQ, action: { try? await appLauncher.launchApp(withCommand: VPNAppLaunchCommand.showFAQ) }), NetworkProtectionStatusView.Model.MenuItem( diff --git a/DuckDuckGo/NetworkProtection/AppTargets/BothAppTargets/VPNLocation/DefaultVPNLocationFormatter.swift b/DuckDuckGo/NetworkProtection/AppTargets/BothAppTargets/VPNLocation/DefaultVPNLocationFormatter.swift index 5f2bb50530..ab5d83e274 100644 --- a/DuckDuckGo/NetworkProtection/AppTargets/BothAppTargets/VPNLocation/DefaultVPNLocationFormatter.swift +++ b/DuckDuckGo/NetworkProtection/AppTargets/BothAppTargets/VPNLocation/DefaultVPNLocationFormatter.swift @@ -56,10 +56,10 @@ struct DefaultVPNLocationFormatter: VPNLocationFormatting { if let location { var attributedString = AttributedString( - preferredLocation.isNearest ? "\(location) \(UserText.netPVPNLocationNearest)" : location + preferredLocation.isNearest ? "\(location) \(UserText.locationFormatterNearestLocationDescriptor)" : location ) attributedString.foregroundColor = locationTextColor - if let range = attributedString.range(of: UserText.netPVPNLocationNearest) { + if let range = attributedString.range(of: UserText.locationFormatterNearestLocationDescriptor) { attributedString[range].foregroundColor = preferredLocationTextColor } return attributedString @@ -84,13 +84,13 @@ final class VPNLocationModel: ObservableObject { init(selectedLocation: VPNSettings.SelectedLocation) { switch selectedLocation { case .nearest: - title = UserText.vpnLocationNearestAvailable + title = UserText.locationFormatterNearestLocation icon = .defaultIcon isNearest = true case .location(let location): let countryLabelsModel = NetworkProtectionVPNCountryLabelsModel(country: location.country, useFullCountryName: true) if let city = location.city { - title = UserText.netPVPNSettingsLocationSubtitleFormattedCityAndCountry( + title = UserText.locationFormatterLocationFormattedCityAndCountry( city: city, country: countryLabelsModel.title ) diff --git a/DuckDuckGo/NetworkProtection/NetworkExtensionTargets/NetworkExtensionAndNotificationTargets/Localizable.xcstrings b/DuckDuckGo/NetworkProtection/NetworkExtensionTargets/NetworkExtensionAndNotificationTargets/Localizable.xcstrings new file mode 100644 index 0000000000..a4d7368f52 --- /dev/null +++ b/DuckDuckGo/NetworkProtection/NetworkExtensionTargets/NetworkExtensionAndNotificationTargets/Localizable.xcstrings @@ -0,0 +1,726 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "network.protection.entitlement.expired.notification.body" : { + "comment" : "The body of the notification when Privacy Pro subscription expired", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonniere Privacy Pro, um die Verbindung zum DuckDuckGo-VPN wiederherzustellen." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suscríbete a Privacy Pro para volver a conectar la VPN de DuckDuckGo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnez-vous à Privacy Pro pour reconnecter le VPN DuckDuckGo." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Iscriviti a Privacy Pro per riconnettere la VPN di DuckDuckGo." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonneer je op Privacy Pro om opnieuw verbinding te maken met DuckDuckGo VPN." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subskrybuj Privacy Pro, aby ponownie połączyć się z siecią DuckDuckGo VPN." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subscreve o Privacy Pro para voltar a ligar a DuckDuckGo VPN." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Чтобы вновь подключиться к DuckDuckGo VPN, оформите подписку Privacy Pro." + } + } + } + }, + "network.protection.entitlement.expired.notification.title" : { + "comment" : "The title of the notification when Privacy Pro subscription expired", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN ist getrennt" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "VPN disconnected" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La VPN se ha desconectado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN déconnecté" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN disconnessa" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "De VPN-verbinding is verbroken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Połączenie VPN zostało przerwane" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A VPN está desativada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN отключен" + } + } + } + }, + "network.protection.failure.notification.subtitle" : { + "comment" : "The subtitle of the notification shown when DuckDuckGo VPN fails to reconnect", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Derzeit kann keine Verbindung hergestellt werden. Bitte versuche es zu einem späteren Zeitpunkt erneut." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Unable to connect at this time. Please try again later." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se puede conectar en estos momentos. Inténtalo de nuevo más tarde." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connexion impossible pour le moment. Veuillez réessayer plus tard." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossibile connettersi in questo momento. Riprova in seguito." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kan momenteel geen verbinding maken. Probeer het later opnieuw." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obecnie nie można się połączyć. Spróbuj ponownie później." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não é possível ligar nesta altura. Tenta novamente mais tarde." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Выполнить подключение прямо сейчас невозможно. Повторите попытку позже." + } + } + } + }, + "network.protection.failure.notification.title" : { + "comment" : "The title of the notification shown when DuckDuckGo VPN fails to reconnect", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN konnte keine Verbindung herstellen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "DuckDuckGo VPN failed to connect" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se ha podido conectar la VPN de DuckDuckGo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le VPN DuckDuckGo n'a pas réussi à se connecter" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "La VPN di DuckDuckGo VPN non si è connessa" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN kan geen verbinding maken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie udało się nawiązać połączenia DuckDuckGo VPN" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A VPN DuckDuckGo não conseguiu estabelecer ligação" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подключиться к DuckDuckGo VPN не удалось" + } + } + } + }, + "network.protection.interrupted.notification.subtitle" : { + "comment" : "The subtitle of the notification shown when DuckDuckGo VPN's connection is interrupted", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Versuche jetzt, die Verbindung wiederherzustellen ..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Attempting to reconnect now..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Intentando volver a conectar ahora..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tentative de reconnexion en cours…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tentativo di riconnessione in corso..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Er wordt geprobeerd opnieuw verbinding te maken ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Próba ponownego połączenia..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tentar ligar novamente..." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Выполняется попытка повторного подключения..." + } + } + } + }, + "network.protection.interrupted.notification.title" : { + "comment" : "The title of the notification shown when DuckDuckGo VPN's connection is interrupted", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN wurde unterbrochen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "DuckDuckGo VPN was interrupted" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La VPN de DuckDuckGo se ha interrumpido" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le VPN DuckDuckGo a été interrompu" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "La VPN di DuckDuckGo è stata interrotta" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN werd onderbroken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usługa DuckDuckGo VPN została przerwana" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A VPN DuckDuckGo foi interrompida" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Работа DuckDuckGo VPN была прервана" + } + } + } + }, + "network.protection.success.notification.subtitle" : { + "comment" : "The subtitle of the notification shown when the VPN reconnects successfully", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dein Standort und deine Online-Aktivitäten sind geschützt." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your location and online activity are protected." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tu ubicación y actividad en línea están protegidas." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre emplacement et votre activité en ligne sont protégés." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "La tua posizione e le tue attività online sono protette." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je locatie en online-activiteiten zijn beschermd." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twoja lokalizacja i aktywność w Internecie są chronione." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tua localização e atividade online estão protegidas." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ваши геопозиция и онлайн-активность скрыты от посторонних глаз." + } + } + } + }, + "network.protection.success.notification.subtitle.including.serverLocation" : { + "comment" : "The body of the notification shown when DuckDuckGo VPN connects successfully with the city + state/country as formatted parameter", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Geräteverkehr wird über %@ geleitet." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Routing device traffic through %@." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Redirigiendo el tráfico de dispositivos a través de %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Routage du trafic de l'appareil via %@." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instradamento del traffico del dispositivo tramite %@." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apparaatverkeer routeren via %@." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przekierowanie ruchu urządzenia przez %@." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A encaminhar o tráfego do dispositivo através de %@." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Трафик устройства направляется через: %@" + } + } + } + }, + "network.protection.success.notification.title" : { + "comment" : "The title of the notification shown when DuckDuckGo VPN connects successfully", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo-VPN ist An" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "DuckDuckGo VPN is ON" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN está activado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le VPN DuckDuckGo est activé" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN è attiva" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN is ingeschakeld" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usługa DuckDuckGo VPN jest włączona" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A DuckDuckGo VPN está Ativada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN включен" + } + } + } + }, + "network.protection.superceded.action.reconnect.title" : { + "comment" : "The title of the `Reconnect` notification action button shown when VPN connection is replaced by another app VPN connection taking over", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erneut verbinden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Reconnect" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volver a conectar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Reconnecter" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Riconnettiti" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Opnieuw verbinding maken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Połącz ponownie" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voltar a ligar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подключиться заново" + } + } + } + }, + "network.protection.superceded.notification.subtitle" : { + "comment" : "The subtitle of the notification shown when VPN connection is replaced by another app VPN connection taking over", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Möglicherweise hat eine andere VPN-App auf deinem Mac diese Funktion deaktiviert." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Another VPN app on your Mac may have disabled it." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Es posible que otra aplicación de VPN en tu Mac la haya desactivado." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il est possible qu'une autre application VPN présente sur votre Mac l'ait désactivé." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Un'altra app VPN sul tuo Mac potrebbe averla disattivata." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Een andere VPN-app op je Mac heeft deze mogelijk uitgeschakeld." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mogła zostać wyłączona przez inną aplikację VPN na komputerze Mac." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "É possível que outra aplicação de VPN no teu Mac a tenha desativado." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Возможно, его отключило другое VPN-приложение на вашем компьютере." + } + } + } + }, + "network.protection.superceded.notification.title" : { + "comment" : "The title of the notification shown when VPN connection is replaced by another app VPN connection taking over", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN ist getrennt" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "DuckDuckGo VPN disconnected" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La VPN de DuckDuckGo se ha desconectado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN DuckDuckGo déconnecté" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "La VPN di DuckDuckGo si è disconnessa" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN-verbinding is verbroken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sieć DuckDuckGo VPN została rozłączona" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A VPN DuckDuckGo está desativada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN отключен" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/DuckDuckGoDBPBackgroundAgent/UserText.swift b/DuckDuckGoDBPBackgroundAgent/UserText.swift index 05eb833e12..761b6f747d 100644 --- a/DuckDuckGoDBPBackgroundAgent/UserText.swift +++ b/DuckDuckGoDBPBackgroundAgent/UserText.swift @@ -21,6 +21,6 @@ import Foundation final class UserText { // MARK: - Status Menu - static let networkProtectionStatusMenuSendFeedback = NSLocalizedString("network.protection.status.menu.send.feedback", value: "Send Feedback…", comment: "The status menu 'Send Feedback' menu item") - static let networkProtectionStatusMenuOpenDuckDuckGo = NSLocalizedString("network.protection.status.menu.open.duckduckgo", value: "Open DuckDuckGo…", comment: "The status menu 'Open DuckDuckGo' menu item") + static let networkProtectionStatusMenuSendFeedback = NSLocalizedString("dbp.menu.send.feedback", value: "Send Feedback…", comment: "The status menu 'Send Feedback' menu item") + static let networkProtectionStatusMenuOpenDuckDuckGo = NSLocalizedString("dbp.open.duckduckgo", value: "Open DuckDuckGo…", comment: "The status menu 'Open DuckDuckGo' menu item") } diff --git a/DuckDuckGoVPN/Localizable.xcstrings b/DuckDuckGoVPN/Localizable.xcstrings new file mode 100644 index 0000000000..c18410e568 --- /dev/null +++ b/DuckDuckGoVPN/Localizable.xcstrings @@ -0,0 +1,726 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "network.protection.configuration.system-settings.legacy" : { + "comment" : "Text for a label in the VPN popover, displayed after attempting to enable the VPN for the first time while using macOS 12 and below", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gehe in den Systemeinstellungen zu „Sicherheit und Datenschutz“, um die Aktivierung von DuckDuckGo VPN zuzulassen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Go to Security & Privacy in System Preferences to allow DuckDuckGo VPN to activate" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ve a Seguridad y Privacidad en las Preferencias del Sistema para permitir que la VPN de DuckDuckGo se active" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accédez à Sécurité et confidentialité dans les Préférences système pour autoriser l'activation du VPN DuckDuckGo" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vai a Sicurezza e privacy in Preferenze di sistema per consentire l'attivazione della VPN di DuckDuckGo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ga naar 'Beveiliging en privacy' in Systeemvoorkeuren om DuckDuckGo VPN te activeren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przejdź do obszaru Prywatność i bezpieczeństwo w ustawieniach systemowych, aby zezwolić na aktywację DuckDuckGo VPN" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Acede a Segurança & Privacidade nas Preferências do Sistema para autorizar a ativação da VPN DuckDuckGo VPN" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Чтобы разрешить активацию DuckDuckGo VPN, откройте раздел «Безопасность и конфиденциальность» в настройках системы." + } + } + } + }, + "network.protection.configuration.system-settings.modern" : { + "comment" : "Text for a label in the VPN popover, displayed after attempting to enable the VPN for the first time while using macOS 13 and above", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gehe in den Systemeinstellungen zu „Datenschutz und Sicherheit“, um die Aktivierung von DuckDuckGo VPN zuzulassen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Go to Privacy & Security in System Settings to allow DuckDuckGo VPN to activate" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ve a Privacidad y Seguridad en los Ajustes del Sistema para permitir que la VPN de DuckDuckGo se active" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accédez à Confidentialité et sécurité dans les Paramètres système pour autoriser l'activation du VPN DuckDuckGo" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vai a Privacy e sicurezza in Impostazioni di sistema per consentire l'attivazione della VPN di DuckDuckGo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ga naar 'Beveiliging en privacy' in Systeemvoorkeuren om DuckDuckGo VPN te activeren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przejdź do sekcji Prywatność i bezpieczeństwo w Ustawieniach systemowych, aby umożliwić aktywację DuckDuckGo VPN" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Acede a Privacidade e Segurança nas Definições do Sistema para autorizar a ativação da VPN DuckDuckGo" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Чтобы разрешить активацию DuckDuckGo VPN, откройте раздел «Конфиденциальность и безопасность» в настройках системы." + } + } + } + }, + "network.protection.status.menu.faq" : { + "comment" : "The status menu 'FAQ' menu item", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "F&A und Support …" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "FAQs and Support…" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Preguntas frecuentes y asistencia..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "FAQ et assistance…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Domande frequenti e assistenza..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veelgestelde vragen en ondersteuning ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Często zadawane pytania i pomoc techniczna..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Perguntas Frequentes e Apoio Técnico…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Часто задаваемые вопросы и поддержка…" + } + } + } + }, + "network.protection.status.menu.send.feedback" : { + "comment" : "The status menu 'Send Feedback' menu item", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rückmeldung senden …" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Send Feedback…" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar comentarios…" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer des commentaires…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invia feedback…" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feedback verzenden ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyślij opinię..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar feedback…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отправить отзыв…" + } + } + } + }, + "network.protection.status.menu.share.feedback" : { + "comment" : "The status menu 'Share VPN Feedback' menu item", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN-Feedback teilen …" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Share VPN Feedback…" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Compartir comentarios sobre la VPN..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partagez vos commentaires sur le VPN…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Condividi il feedback sulla VPN..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN-feedback delen..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Podziel się opinią o VPN…" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Partilhar feedback sobre a VPN…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Поделиться отзывом о VPN" + } + } + } + }, + "network.protection.status.menu.vpn.open-duckduckgo" : { + "comment" : "The status menu 'Open DuckDuckGo' menu item", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo öffnen …" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Open DuckDuckGo…" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir DuckDuckGo..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir DuckDuckGo…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apri DuckDuckGo..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo openen …" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz DuckDuckGo…" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir o DuckDuckGo…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Открыть DuckDuckGo..." + } + } + } + }, + "network.protection.status.menu.vpn.settings" : { + "comment" : "The status menu 'VPN Settings' menu item", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN-Einstellungen …" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "VPN Settings…" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Configuración de VPN" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Réglages VPN…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impostazioni VPN…" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN-instellingen …" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ustawienia VPN..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Definições da VPN…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Настройки VPN..." + } + } + } + }, + "network.protection.system.extension.please.reboot" : { + "comment" : "Message shown to users when they try to enable NetP and they need to reboot the computer to complete the installation", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN-Update verfügbar. Starte deinen Mac neu, um die Verbindung wiederherzustellen." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "VPN update available. Restart your Mac to reconnect." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actualización de VPN disponible. Reinicia tu Mac para volver a conectarte." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une mise à jour du VPN est disponible. Redémarrez votre Mac pour vous reconnecter." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aggiornamento VPN disponibile. Riavvia il Mac per riconnetterti." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN-update beschikbaar. Herstart je Mac om opnieuw verbinding te maken." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dostępna jest aktualizacja VPN. Zrestartuj komputer Mac, aby ponownie nawiązać połączenie." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Atualização de VPN disponível. Reinicia o teu Mac para reiniciar a ligação." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Доступно обновление VPN. Перезагрузите компьютер, чтобы восстановить подключение." + } + } + } + }, + "network.protection.system.extension.unknown.activation.error" : { + "comment" : "Message shown to users when they try to enable NetP and there is an unexpected activation error.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Es ist ein unerwarteter Fehler aufgetreten. Bitte versuche es noch einmal." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "There was an unexpected error. Please try again." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se ha producido un error inesperado. Inténtalo de nuevo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une erreur inattendue s'est produite. Veuillez réessayer." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si è verificato un errore imprevisto. Riprova." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Er is een onverwachte fout opgetreden. Probeer het opnieuw." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wystąpił nieoczekiwany błąd. Spróbuj ponownie." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ocorreu um erro inesperado. Tenta novamente." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Произошла непредвиденная ошибка. Повторите попытку." + } + } + } + }, + "network.protection.tunnel.name" : { + "comment" : "The name of the NetP VPN that will be visible in the system to the user", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo-VPN" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "DuckDuckGo VPN" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN DuckDuckGo" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN DuckDuckGo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN do DuckDuckGo" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN" + } + } + } + }, + "network.protection.vpn.location.formatter.nearest.location" : { + "comment" : "Nearest available location setting description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nächstgelegener Standort" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Nearest Location" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ubicación más cercana" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Emplacement le plus proche" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Posizione più vicina" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dichtstbijzijnde locatie" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Najbliższa lokalizacja" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Localização Mais Próxima" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ближайшее место" + } + } + } + }, + "network.protection.vpn.location.formatter.nearest.location.descriptor" : { + "comment" : "Description added after the nearest location in the VPN status view", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "(Nächstgelegen)" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "(Nearest)" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "(Más cercano)" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "(La plus proche)" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "(Più vicino)" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "(Dichtstbijzijnde)" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "(Najbliższa)" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "(Mais próxima)" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "(Ближайшее)" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/LocalPackages/NetworkProtectionMac/Package.swift b/LocalPackages/NetworkProtectionMac/Package.swift index 6c1b3b7f9b..6bdb0f18fb 100644 --- a/LocalPackages/NetworkProtectionMac/Package.swift +++ b/LocalPackages/NetworkProtectionMac/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.7 +// swift-tools-version: 5.9 // The swift-tools-version declares the minimum version of Swift required to build this package. // // Package.swift @@ -22,6 +22,7 @@ import PackageDescription let package = Package( name: "NetworkProtectionMac", + defaultLocalization: "en", platforms: [ .macOS("11.4") ], @@ -109,7 +110,7 @@ let package = Package( .product(name: "Lottie", package: "lottie-spm") ], resources: [ - .copy("Resources/Assets.xcassets") + .process("Resources") ], swiftSettings: [ .define("DEBUG", .when(configuration: .debug)) diff --git a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Extensions/UserText+NetworkProtectionUI.swift b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Extensions/UserText+NetworkProtectionUI.swift index de6d5d1a13..c6653d5667 100644 --- a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Extensions/UserText+NetworkProtectionUI.swift +++ b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Extensions/UserText+NetworkProtectionUI.swift @@ -19,73 +19,99 @@ import Foundation final class UserText { - static let networkProtectionStatusHeaderMessageOff = NSLocalizedString("network.protection.status.header.message.off", value: "Connect to secure all of your device’s\nInternet traffic.", comment: "Message label text for the status view when VPN is disconnected") - static let networkProtectionStatusHeaderMessageOn = NSLocalizedString("network.protection.status.header.message.on", value: "All device Internet traffic is being secured\nthrough the VPN.", comment: "Message label text for the status view when VPN is connected") - static let networkProtectionStatusViewConnDetails = NSLocalizedString("network.protection.status.view.connection.details", value: "Connection Details", comment: "Connection details label shown in NetworkProtection's status view.") - static let networkProtectionStatusViewConnLabel = NSLocalizedString("network.protection.status.view.connection.label", value: "VPN", comment: "Connection label shown in NetworkProtection's status view.") - static let networkProtectionStatusViewLocation = NSLocalizedString("network.protection.status.view.location", value: "Location", comment: "Location label shown in NetworkProtection's status view.") - static let networkProtectionStatusViewIPAddress = NSLocalizedString("network.protection.status.view.ip.address", value: "IP Address", comment: "IP Address label shown in NetworkProtection's status view.") - static let networkProtectionStatusViewFeatureOff = NSLocalizedString("network.protection.status.view.feature.on", value: "DuckDuckGo VPN is OFF", comment: "Text shown in NetworkProtection's status view when NetP is OFF.") - static let networkProtectionStatusViewFeatureOn = NSLocalizedString("network.protection.status.view.feature.on", value: "DuckDuckGo VPN is ON", comment: "Text shown in NetworkProtection's status view when NetP is ON.") + static let networkProtectionStatusHeaderMessageOff = NSLocalizedString("network.protection.status.header.message.off", bundle: Bundle.module, value: "Connect to secure all of your device’s\nInternet traffic.", comment: "Message label text for the status view when VPN is disconnected") + static let networkProtectionStatusHeaderMessageOn = NSLocalizedString("network.protection.status.header.message.on", bundle: Bundle.module, value: "All device Internet traffic is being secured\nthrough the VPN.", comment: "Message label text for the status view when VPN is connected") + static let networkProtectionStatusViewConnDetails = NSLocalizedString("network.protection.status.view.connection.details", bundle: Bundle.module, value: "Connection Details", comment: "Connection details label shown in NetworkProtection's status view.") + static let networkProtectionStatusViewConnLabel = NSLocalizedString("network.protection.status.view.connection.label", bundle: Bundle.module, value: "VPN", comment: "Connection label shown in NetworkProtection's status view.") + static let networkProtectionStatusViewLocation = NSLocalizedString("network.protection.status.view.location", bundle: Bundle.module, value: "Location", comment: "Location label shown in NetworkProtection's status view.") + static let networkProtectionStatusViewIPAddress = NSLocalizedString("network.protection.status.view.ip.address", bundle: Bundle.module, value: "IP Address", comment: "IP Address label shown in NetworkProtection's status view.") + static let networkProtectionStatusViewFeatureOff = NSLocalizedString("network.protection.status.view.feature.isoff", bundle: Bundle.module, value: "DuckDuckGo VPN is OFF", comment: "Text shown in NetworkProtection's status view when NetP is OFF.") + static let networkProtectionStatusViewFeatureOn = NSLocalizedString("network.protection.status.view.feature.ison", bundle: Bundle.module, value: "DuckDuckGo VPN is ON", comment: "Text shown in NetworkProtection's status view when NetP is ON.") static let networkProtectionStatusViewTimerZero = "00:00:00" - static let netPVPNLocationNearest = NSLocalizedString("network.protection.vpn.location.nearest", value: "(Nearest)", comment: "Description of the location type in the VPN status view") - static let vpnLocationConnected = NSLocalizedString("network.protection.vpn.location.connected", value: "Connected Location", comment: "Description of the location type in the VPN status view") - static let vpnLocationSelected = NSLocalizedString("network.protection.vpn.location.selected", value: "Selected Location", comment: "Description of the location type in the VPN status view") - static let vpnDnsServer = NSLocalizedString("network.protection.vpn.dns-server", value: "DNS Server", comment: "Title for the DNS server section in the VPN status view") - static let vpnDataVolume = NSLocalizedString("network.protection.vpn.data-volume", value: "Data Volume", comment: "Title for the data volume section in the VPN status view") - static let vpnSendFeedback = NSLocalizedString("network.protection.vpn.send-feedback", value: "Send Feedback…", comment: "Action button title for the Send feedback option") - static let vpnOperationNotPermittedMessage = NSLocalizedString("network.protection.vpn.failure.operation-not-permitted", value: "Unable to connect due to an unexpected error. Restarting your Mac can usually fix the issue.", comment: "Error message for the Operation not permitted error") - static let vpnLoginItemVersionMismatchedMessage = NSLocalizedString("network.protection.vpn.failure.login-item-version-mismatched", value: "Unable to connect due to versioning conflict. If you have multiple versions of the browser installed, remove all but the most recent version of DuckDuckGo and restart your Mac.", comment: "Error message for the Login item version mismatched error") - static let vpnRegisteredServerFetchingFailedMessage = NSLocalizedString("network.protection.vpn.failure.registered-server-fetching-failed", value: "Unable to connect. Double check your internet connection. Make sure other software or services aren't blocking DuckDuckGo VPN servers.", comment: "Error message for the Failed to fetch registered server error") + static let vpnLocationConnected = NSLocalizedString("network.protection.vpn.location.connected", bundle: Bundle.module, value: "Connected Location", comment: "Description of the location type in the VPN status view") + static let vpnLocationSelected = NSLocalizedString("network.protection.vpn.location.selected", bundle: Bundle.module, value: "Selected Location", comment: "Description of the location type in the VPN status view") + static let vpnDnsServer = NSLocalizedString("network.protection.vpn.dns-server", bundle: Bundle.module, value: "DNS Server", comment: "Title for the DNS server section in the VPN status view") + static let vpnDataVolume = NSLocalizedString("network.protection.vpn.data-volume", bundle: Bundle.module, value: "Data Volume", comment: "Title for the data volume section in the VPN status view") + static let vpnSendFeedback = NSLocalizedString("network.protection.vpn.send-feedback", bundle: Bundle.module, value: "Send Feedback…", comment: "Action button title for the Send feedback option") + static let vpnOperationNotPermittedMessage = NSLocalizedString("network.protection.vpn.failure.operation-not-permitted", bundle: Bundle.module, value: "Unable to connect due to an unexpected error. Restarting your Mac can usually fix the issue.", comment: "Error message for the Operation not permitted error") + static let vpnLoginItemVersionMismatchedMessage = NSLocalizedString("network.protection.vpn.failure.login-item-version-mismatched", bundle: Bundle.module, value: "Unable to connect due to versioning conflict. If you have multiple versions of the browser installed, remove all but the most recent version of DuckDuckGo and restart your Mac.", comment: "Error message for the Login item version mismatched error") + static let vpnRegisteredServerFetchingFailedMessage = NSLocalizedString("network.protection.vpn.failure.registered-server-fetching-failed", bundle: Bundle.module, value: "Unable to connect. Double check your internet connection. Make sure other software or services aren't blocking DuckDuckGo VPN servers.", comment: "Error message for the Failed to fetch registered server error") // MARK: - Onboarding - static let networkProtectionOnboardingInstallExtensionTitle = NSLocalizedString("network.protection.onboarding.install.extension.title", value: "Install VPN System Extension", comment: "Title for the onboarding install-vpn-extension step") - static let networkProtectionOnboardingAllowExtensionDescPrefixForSequoia = NSLocalizedString("network.protection.onboarding.allow.extension.desc.sequoia.prefix", value: "Click ", comment: "Non-bold description for the onboarding allow-extension description") - static let networkProtectionOnboardingAllowExtensionDescEmphasized = NSLocalizedString("network.protection.onboarding.allow.extension.desc.sequoia.emphasized", value: "Open System Settings", comment: "'Allow' word between the prefix and suffix for the onboarding allow-extension description") - static let networkProtectionOnboardingAllowExtensionDescSuffixForSequoia = NSLocalizedString("network.protection.onboarding.allow.extension.desc.sequoia.suffix", value: ", then enable the DuckDuckGo VPN network extension.", comment: "Non-bold description for the onboarding allow-extension description") - static let networkProtectionOnboardingAllowExtensionDescPrefix = NSLocalizedString("network.protection.onboarding.allow.extension.desc.prefix", value: "Open System Settings to Privacy & Security. Scroll and select ", comment: "Non-bold prefix for the onboarding allow-extension description") - static let networkProtectionOnboardingAllowExtensionDescAllow = NSLocalizedString("network.protection.onboarding.allow.extension.desc.allow", value: "Allow", comment: "'Allow' word between the prefix and suffix for the onboarding allow-extension description") - static let networkProtectionOnboardingAllowExtensionDescSuffix = NSLocalizedString("network.protection.onboarding.allow.extension.desc.suffix", value: " for DuckDuckGo software.", comment: "Non-bold suffix for the onboarding allow-extension description") - static let networkProtectionOnboardingAllowExtensionAction = NSLocalizedString("network.protection.onboarding.allow.extension.action", value: "Open System Settings...", comment: "Action button title for the onboarding allow-extension view") - - static let networkProtectionOnboardingAllowVPNTitle = NSLocalizedString("network.protection.onboarding.allow.vpn.title", value: "Add VPN Configuration", comment: "Title for the onboarding allow-VPN step") - static let networkProtectionOnboardingAllowVPNDescPrefix = NSLocalizedString("network.protection.onboarding.allow.vpn.desc.prefix", value: "Select ", comment: "Non-bold prefix for the onboarding allow-VPN description") - static let networkProtectionOnboardingAllowVPNDescAllow = NSLocalizedString("network.protection.onboarding.allow.vpn.desc.allow", value: "Allow", comment: "'Allow' word between the prefix and suffix for the onboarding allow-VPN description") - static let networkProtectionOnboardingAllowVPNDescSuffix = NSLocalizedString("network.protection.onboarding.allow.vpn.desc.suffix", value: " when prompted to finish setting up VPN.", comment: "Non-bold suffix for the onboarding allow-VPN description") - static let networkProtectionOnboardingAllowVPNDescExpandedSuffix = NSLocalizedString("network.protection.onboarding.allow.vpn.desc.expanded.suffix", value: " when prompted to finish setting up VPN.\n\nThis adds a shortcut in the menu bar so you can still access the VPN if the browser isn't running.", comment: "Non-bold suffix for the onboarding allow-VPN description") - static let networkProtectionOnboardingAllowVPNAction = NSLocalizedString("network.protection.onboarding.allow.vpn.action", value: "Add VPN Configuration...", comment: "Action button title for the onboarding allow-VPN view") - - static let networkProtectionOnboardingMoveToApplicationsTitle = NSLocalizedString("network.protection.onboarding.move.to.applications.title", value: "Move DuckDuckGo App", comment: "Title for the onboarding move-app-to-applications step") - static let networkProtectionOnboardingMoveToApplicationsDesc = NSLocalizedString("network.protection.onboarding.move.to.applications.desc", value: "To use the VPN, the DuckDuckGo app needs to be in the Applications folder on your Mac. Click the button below to move the app and restart the browser.", comment: "Description for the onboarding move-app-to-applications step") - static let networkProtectionOnboardingMoveToApplicationsAction = NSLocalizedString("network.protection.onboarding.move.to.applications.action", value: "Move App for Me and Restart…", comment: "Action button title for the onboarding move-app-to-applications step") + static let networkProtectionOnboardingInstallExtensionTitle = NSLocalizedString("network.protection.onboarding.install.extension.title", bundle: Bundle.module, value: "Install VPN System Extension", comment: "Title for the onboarding install-vpn-extension step") + static let networkProtectionOnboardingAllowExtensionDescPrefixForSequoia = NSLocalizedString("network.protection.onboarding.allow.extension.desc.sequoia.prefix", bundle: Bundle.module, value: "Click ", comment: "Non-bold description for the onboarding allow-extension description") + static let networkProtectionOnboardingAllowExtensionDescEmphasized = NSLocalizedString("network.protection.onboarding.allow.extension.desc.sequoia.emphasized", bundle: Bundle.module, value: "Open System Settings", comment: "'Allow' word between the prefix and suffix for the onboarding allow-extension description") + static let networkProtectionOnboardingAllowExtensionDescSuffixForSequoia = NSLocalizedString("network.protection.onboarding.allow.extension.desc.sequoia.suffix", bundle: Bundle.module, value: ", then enable the DuckDuckGo VPN network extension.", comment: "Non-bold description for the onboarding allow-extension description") + static let networkProtectionOnboardingAllowExtensionDescPrefix = NSLocalizedString("network.protection.onboarding.allow.extension.desc.prefix", bundle: Bundle.module, value: "Open System Settings to Privacy & Security. Scroll and select ", comment: "Non-bold prefix for the onboarding allow-extension description") + static let networkProtectionOnboardingAllowExtensionDescAllow = NSLocalizedString("network.protection.onboarding.allow.extension.desc.allow", bundle: Bundle.module, value: "Allow", comment: "'Allow' word between the prefix and suffix for the onboarding allow-extension description") + static let networkProtectionOnboardingAllowExtensionDescSuffix = NSLocalizedString("network.protection.onboarding.allow.extension.desc.suffix", bundle: Bundle.module, value: " for DuckDuckGo software.", comment: "Non-bold suffix for the onboarding allow-extension description") + static let networkProtectionOnboardingAllowExtensionAction = NSLocalizedString("network.protection.onboarding.allow.extension.action", bundle: Bundle.module, value: "Open System Settings...", comment: "Action button title for the onboarding allow-extension view") + + static let networkProtectionOnboardingAllowVPNTitle = NSLocalizedString("network.protection.onboarding.allow.vpn.title", bundle: Bundle.module, value: "Add VPN Configuration", comment: "Title for the onboarding allow-VPN step") + static let networkProtectionOnboardingAllowVPNDescPrefix = NSLocalizedString("network.protection.onboarding.allow.vpn.desc.prefix", bundle: Bundle.module, value: "Select ", comment: "Non-bold prefix for the onboarding allow-VPN description") + static let networkProtectionOnboardingAllowVPNDescAllow = NSLocalizedString("network.protection.onboarding.allow.vpn.desc.allow", bundle: Bundle.module, value: "Allow", comment: "'Allow' word between the prefix and suffix for the onboarding allow-VPN description") + static let networkProtectionOnboardingAllowVPNDescSuffix = NSLocalizedString("network.protection.onboarding.allow.vpn.desc.suffix", bundle: Bundle.module, value: " when prompted to finish setting up VPN.", comment: "Non-bold suffix for the onboarding allow-VPN description") + static let networkProtectionOnboardingAllowVPNDescExpandedSuffix = NSLocalizedString("network.protection.onboarding.allow.vpn.desc.expanded.suffix", bundle: Bundle.module, value: " when prompted to finish setting up VPN.\n\nThis adds a shortcut in the menu bar so you can still access the VPN if the browser isn't running.", comment: "Non-bold suffix for the onboarding allow-VPN description") + static let networkProtectionOnboardingAllowVPNAction = NSLocalizedString("network.protection.onboarding.allow.vpn.action", bundle: Bundle.module, value: "Add VPN Configuration...", comment: "Action button title for the onboarding allow-VPN view") + + static let networkProtectionOnboardingMoveToApplicationsTitle = NSLocalizedString("network.protection.onboarding.move.to.applications.title", bundle: Bundle.module, value: "Move DuckDuckGo App", comment: "Title for the onboarding move-app-to-applications step") + static let networkProtectionOnboardingMoveToApplicationsDesc = NSLocalizedString("network.protection.onboarding.move.to.applications.desc", bundle: Bundle.module, value: "To use the VPN, the DuckDuckGo app needs to be in the Applications folder on your Mac. Click the button below to move the app and restart the browser.", comment: "Description for the onboarding move-app-to-applications step") + static let networkProtectionOnboardingMoveToApplicationsAction = NSLocalizedString("network.protection.onboarding.move.to.applications.action", bundle: Bundle.module, value: "Move App for Me and Restart…", comment: "Action button title for the onboarding move-app-to-applications step") // MARK: - Connection Status - static let networkProtectionStatusDisconnected = NSLocalizedString("network.protection.status.disconnected", value: "Not connected", comment: "The label for the NetP VPN when disconnected") - static let networkProtectionStatusDisconnecting = NSLocalizedString("network.protection.status.disconnecting", value: "Disconnecting...", comment: "The label for the NetP VPN when disconnecting") - static let networkProtectionStatusConnected = NSLocalizedString("network.protection.status.connected", value: "Connected", comment: "The label for the NetP VPN when connected") - static let networkProtectionStatusConnecting = NSLocalizedString("network.protection.status.connected", value: "Connecting...", comment: "The label for the NetP VPN when connecting") + static let networkProtectionStatusDisconnected = NSLocalizedString("network.protection.status.disconnected", bundle: Bundle.module, value: "Not connected", comment: "The label for the NetP VPN when disconnected") + static let networkProtectionStatusDisconnecting = NSLocalizedString("network.protection.status.disconnecting", bundle: Bundle.module, value: "Disconnecting...", comment: "The label for the NetP VPN when disconnecting") + static let networkProtectionStatusConnected = NSLocalizedString("network.protection.status.connected", bundle: Bundle.module, value: "Connected", comment: "The label for the NetP VPN when connected") + static let networkProtectionStatusConnecting = NSLocalizedString("network.protection.status.connecting", bundle: Bundle.module, value: "Connecting...", comment: "The label for the NetP VPN when connecting") // MARK: - Connection Issues - static let networkProtectionInterruptedReconnecting = NSLocalizedString("network.protection.interrupted.reconnecting", value: "Your VPN connection was interrupted. Attempting to reconnect now...", comment: "The warning message shown in NetP's status view when the connection is interrupted and its attempting to reconnect.") - static let networkProtectionInterrupted = NSLocalizedString("network.protection.interrupted", value: "The VPN was unable to connect at this time. Please try again later.", comment: "The warning message shown in NetP's status view when the connection is interrupted.") + static let networkProtectionInterruptedReconnecting = NSLocalizedString("network.protection.interrupted.reconnecting", bundle: Bundle.module, value: "Your VPN connection was interrupted. Attempting to reconnect now...", comment: "The warning message shown in NetP's status view when the connection is interrupted and its attempting to reconnect.") + static let networkProtectionInterrupted = NSLocalizedString("network.protection.interrupted", bundle: Bundle.module, value: "The VPN was unable to connect at this time. Please try again later.", comment: "The warning message shown in NetP's status view when the connection is interrupted.") // MARK: - Connection Information - static let networkProtectionServerAddressUnknown = NSLocalizedString("network.protection.server.address.unknown", value: "Unknown", comment: "When we can't tell the user the IP of the NetP server is") - static let networkProtectionServerLocationUnknown = NSLocalizedString("network.protection.server.location.unknown", value: "Unknown...", comment: "When we can't tell the user the location of the NetP server") + static let networkProtectionServerAddressUnknown = NSLocalizedString("network.protection.server.address.unknown", bundle: Bundle.module, value: "Unknown", comment: "When we can't tell the user the IP of the NetP server is") + static let networkProtectionServerLocationUnknown = NSLocalizedString("network.protection.server.location.unknown", bundle: Bundle.module, value: "Unknown...", comment: "When we can't tell the user the location of the NetP server") static func networkProtectionFormattedServerLocation(_ location: String) -> String { - let localized = NSLocalizedString("network.protection.server.location.link", value: "%@...", comment: "Clickable text linking to the server location picker screen") + let localized = NSLocalizedString("network.protection.server.location.link", bundle: Bundle.module, value: "%@...", comment: "Clickable text linking to the server location picker screen") return String(format: localized, location) } // MARK: Subscription Expired - static let networkProtectionSubscriptionExpiredTitle = NSLocalizedString("network.protection.subscription.expired.title", value: "VPN disconnected", comment: "Title for the prompt that tells the user their subscription expired.") - static let networkProtectionSubscriptionExpiredSubtitle = NSLocalizedString("network.protection.subscription.expired.subtitle", value: "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN.", comment: "Subtitle for the prompt that tells the user their subscription expired.") - static let networkProtectionSubscriptionExpiredResubscribeButton = NSLocalizedString("network.protection.subscription.expired.resubscribe.button", value: "Subscribe to Privacy Pro", comment: "Button for the prompt that takes the user to the page to resubscribe.") - static let networkProtectionSubscriptionExpiredUninstallButton = NSLocalizedString("network.protection.subscription.expired.uninstall.button", value: "Uninstall DuckDuckGo VPN", comment: "Button for the prompt that uninstalls the VPN.") + static let networkProtectionSubscriptionExpiredTitle = NSLocalizedString("network.protection.subscription.expired.title", bundle: Bundle.module, value: "VPN disconnected", comment: "Title for the prompt that tells the user their subscription expired.") + static let networkProtectionSubscriptionExpiredSubtitle = NSLocalizedString("network.protection.subscription.expired.subtitle", bundle: Bundle.module, value: "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN.", comment: "Subtitle for the prompt that tells the user their subscription expired.") + static let networkProtectionSubscriptionExpiredResubscribeButton = NSLocalizedString("network.protection.subscription.expired.resubscribe.button", bundle: Bundle.module, value: "Subscribe to Privacy Pro", comment: "Button for the prompt that takes the user to the page to resubscribe.") + static let networkProtectionSubscriptionExpiredUninstallButton = NSLocalizedString("network.protection.subscription.expired.uninstall.button", bundle: Bundle.module, value: "Uninstall DuckDuckGo VPN", comment: "Button for the prompt that uninstalls the VPN.") + + // MARK: Tool tips + + static let networkProtectionGeoswitchingTipTitle = NSLocalizedString("network.protection.geoswitching.tip.title", bundle: Bundle.module, value: "Change Your Location", comment: "Title for tooltip about geoswitching") + static let networkProtectionGeoswitchingTipMessage = NSLocalizedString("network.protection.geoswitching.tip.message", bundle: Bundle.module, value: "Connect to any of our servers worldwide to customize the VPN location.", comment: "Message for tooltip about geoswitching") + + static let networkProtectionAutoconnectTipTitle = NSLocalizedString("network.protection.autoconnect.tip.title", bundle: Bundle.module, value: "Connect Automatically", comment: "Title for tooltip about auto-connect") + static let networkProtectionAutoconnectTipMessage = NSLocalizedString("network.protection.autoconnect.tip.message", bundle: Bundle.module, value: "The VPN can connect on its own when you log in to your computer.", comment: "Message for tooltip about auto-connect") + static let networkProtectionAutoconnectTipEnableAction = NSLocalizedString("network.protection.autoconnect.tip.enable", bundle: Bundle.module, value: "Enable", comment: "Action to enable auto-connect") + + static let networkProtectionDomainExclusionsTipTitle = NSLocalizedString("network.protection.domain.exclusion.tip.title", bundle: Bundle.module, value: "Website not working?", comment: "Title for tooltip about domain exclusion") + static let networkProtectionDomainExclusionsTipMessage = NSLocalizedString("network.protection.domain.exclusion.tip.message", bundle: Bundle.module, value: "Exclude websites that block VPN traffic so you can use them without turning the VPN off.", comment: "Message for tooltip about domain exclusion") + + // MARK: Report site issues + + static let networkProtectionReportSiteIssuesViewTitle = NSLocalizedString("network.protection.report.site.issues.title", bundle: Bundle.module, value: "Report an issue with %@?", comment: "Title for report site issues view for website “%@”") + static let networkProtectionReportSiteIssuesViewDescription = NSLocalizedString("network.protection.report.site.issues.description", bundle: Bundle.module, value: "Please let us know if you excluded %@ from the VPN because you experienced issues.", comment: "Description for report site issues view for website “%@”") + static let networkProtectionReportSiteIssuesViewFooter = NSLocalizedString("network.protection.report.site.issues.footer", bundle: Bundle.module, value: "Reports only include the domain of the affected website.", comment: "Footer for report site issues view") + + static let networkProtectionReportSiteIssuesViewButtonCancel = NSLocalizedString("network.protection.report.site.issues.button.cancel", bundle: Bundle.module, value: "Not Now", comment: "Report site issues view cancel button") + static let networkProtectionReportSiteIssuesViewButtonReport = NSLocalizedString("network.protection.report.site.issues.button.report", bundle: Bundle.module, value: "Report", comment: "Report site issues confirmation button to send report") + static let networkProtectionReportSiteIssuesViewButtonDontAsk = NSLocalizedString("network.protection.report.site.issues.button.dontask", bundle: Bundle.module, value: "Don't Ask Again", comment: "Report site issues view button not to ask again") + + // MARK: Site troubleshooting + + static let networkProtectionSiteTroubleShootingViewTitle = NSLocalizedString("network.protection.site.troubleshooting.title", bundle: Bundle.module, value: "Website Preferences", comment: "Title for VPN website preferences view") + static let networkProtectionSiteTroubleShootingViewExcludeWebsite = NSLocalizedString("network.protection.site.troubleshooting.exclude", bundle: Bundle.module, value: "Exclude %@ from VPN", comment: "Option to exclude a “%@” website from the VPN") } diff --git a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Resources/Localizable.xcstrings b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Resources/Localizable.xcstrings new file mode 100644 index 0000000000..9c2a701b7d --- /dev/null +++ b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Resources/Localizable.xcstrings @@ -0,0 +1,3724 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "" + } + } + } + }, + "network.protection.autoconnect.tip.enable" : { + "comment" : "Action to enable auto-connect", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aktivieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Enable" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Attiva" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inschakelen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Włącz" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Permitir" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Включить" + } + } + } + }, + "network.protection.autoconnect.tip.message" : { + "comment" : "Message for tooltip about auto-connect", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Das VPN kann sich automatisch verbinden, wenn du dich bei deinem Computer anmeldest." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "The VPN can connect on its own when you log in to your computer." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La VPN puede conectarse automáticamente cuando inicias sesión en tu ordenador." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le VPN peut se connecter tout seul lorsque vous vous connectez à votre ordinateur." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "La VPN è in grado di connettersi automaticamente quando accedi al computer." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Het VPN kan automatisch verbinding maken wanneer je je aanmeldt op je computer." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sieć VPN może nawiązać połączenie automatycznie po zalogowaniu do komputera." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A VPN pode ligar-se automaticamente quando inicias sessão no teu computador." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN может подключаться автоматически при входе в систему компьютера." + } + } + } + }, + "network.protection.autoconnect.tip.title" : { + "comment" : "Title for tooltip about auto-connect", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatisch verbinden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Connect Automatically" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Conéctate automáticamente" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connexion automatique" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connettiti automaticamente" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Automatisch verbinding maken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Połącz automatycznie" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ligação automática" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Автоматическое подключение" + } + } + } + }, + "network.protection.domain.exclusion.tip.message" : { + "comment" : "Message for tooltip about domain exclusion", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Schließe Websites aus, die VPN-Verkehr blockieren, damit du sie nutzen kannst, ohne das VPN zu deaktivieren." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Exclude websites that block VPN traffic so you can use them without turning the VPN off." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Excluye los sitios web que bloquean el tráfico de VPN para que puedas usarlos sin apagar la VPN." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Excluez les sites Web qui bloquent le trafic VPN afin de pouvoir les utiliser sans désactiver le VPN." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Escludi i siti web che bloccano il traffico VPN per poterli usare senza disattivare la VPN." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sluit websites uit die VPN-verkeer blokkeren, zodat je ze kunt bezoeken zonder het VPN uit te schakelen." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyklucz witryny, które blokują ruch VPN, aby korzystać z nich bez wyłączania VPN." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exclui os sites que bloqueiam o tráfego da VPN para que os possas utilizar sem desativar a VPN." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Исключите сайты, блокирующие трафик по VPN, чтобы посещать их, не отключая VPN." + } + } + } + }, + "network.protection.domain.exclusion.tip.title" : { + "comment" : "Title for tooltip about domain exclusion", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Website funktioniert nicht?" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Website not working?" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¿El sitio web no funciona?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le site Web ne fonctionne pas ?" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il sito web non funziona?" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Werkt de website niet?" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Witryna internetowa nie działa?" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "O site não está a funcionar?" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сайт не работает?" + } + } + } + }, + "network.protection.geoswitching.tip.message" : { + "comment" : "Message for tooltip about geoswitching", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verbinde dich mit einem unserer Server weltweit, um den VPN-Standort anzupassen." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Connect to any of our servers worldwide to customize the VPN location." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Conéctate a cualquiera de nuestros servidores por todo el mundo para personalizar la ubicación de la VPN." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connectez-vous à l'un de nos serveurs dans le monde entier pour personnaliser l'emplacement du VPN." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connettiti a uno dei nostri server in tutto il mondo per personalizzare la posizione della VPN." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Maak verbinding met een van onze wereldwijde servers om de VPN-locatie aan te passen." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Połącz się z dowolnym z serwerów na całym świecie, aby dostosować lokalizację VPN." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Liga-te a qualquer um dos nossos servidores em todo o mundo para personalizar a localização da VPN." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Местоположение VPN можно изменить: к вашим услугам серверы в разных уголках мира." + } + } + } + }, + "network.protection.geoswitching.tip.title" : { + "comment" : "Title for tooltip about geoswitching", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Standort ändern" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Change Your Location" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cambiar tu ubicación" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifiez votre emplacement" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cambia posizione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wijzig je locatie" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zmień lokalizację" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Alterar a localização" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Выбор геопозиции" + } + } + } + }, + "network.protection.interrupted" : { + "comment" : "The warning message shown in NetP's status view when the connection is interrupted.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Das VPN konnte zu diesem Zeitpunkt keine Verbindung herstellen. Bitte versuche es zu einem späteren Zeitpunkt erneut." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "The VPN was unable to connect at this time. Please try again later." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La VPN no ha podido conectarse en este momento. Inténtalo de nuevo más tarde." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connexion du VPN impossible pour le moment. Veuillez réessayer plus tard." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "La VPN non è riuscita a connettersi in questo momento. Riprova in seguito." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Het VPN kan op dit moment geen verbinding maken. Probeer het later opnieuw." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Połączenie VPN jest chwilowo niedostępne. Spróbuj ponownie później." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não foi possível ligar a VPN. Tenta novamente mais tarde." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN не удалось выполнить подключение. Повторите попытку позже." + } + } + } + }, + "network.protection.interrupted.reconnecting" : { + "comment" : "The warning message shown in NetP's status view when the connection is interrupted and its attempting to reconnect.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deine VPN-Verbindung wurde unterbrochen. Versuche jetzt, die Verbindung wiederherzustellen ..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your VPN connection was interrupted. Attempting to reconnect now..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se ha interrumpido tu conexión VPN. Intentando volver a conectar ahora..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre connexion VPN a été interrompue. Tentative de reconnexion en cours…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "La tua connessione VPN è stata interrotta. Tentativo di riconnessione in corso..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je VPN-verbinding is onderbroken. Er wordt geprobeerd opnieuw verbinding te maken ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ppołączenie VPN zostało przerwane. Próba ponownego połączenia..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A ligação da VPN foi interrompida. A tentar ligar novamente…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN-соединение было прервано. Выполняется попытка повторного подключения..." + } + } + } + }, + "network.protection.onboarding.allow.extension.action" : { + "comment" : "Action button title for the onboarding allow-extension view", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Öffne die Systemeinstellungen ..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Open System Settings..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir Configuración del Sistema..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir les paramètres système..." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apri le impostazioni di sistema..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Systeeminstellingen openen ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz ustawienia systemowe..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir Definições do sistema…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Открыть системные настройки..." + } + } + } + }, + "network.protection.onboarding.allow.extension.desc.allow" : { + "comment" : "'Allow' word between the prefix and suffix for the onboarding allow-extension description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zulassen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Allow" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Permitir" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autoriser" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Consenti" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toestaan" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zezwól" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Permitir" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Разрешить" + } + } + } + }, + "network.protection.onboarding.allow.extension.desc.prefix" : { + "comment" : "Non-bold prefix for the onboarding allow-extension description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Öffne die Systemeinstellungen zu Privatsphäre & Sicherheit. Scrolle und wähle " + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Open System Settings to Privacy & Security. Scroll and select " + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abre la Configuración del sistema en Privacidad y seguridad. Desplázate y selecciona " + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrez les paramètres système sur Confidentialité et sécurité. Faites défiler et sélectionnez " + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apri le impostazioni di sistema su Privacy e Sicurezza. Scorri e seleziona " + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Open de systeeminstellingen en ga naar 'Privacy en beveiliging'. Schuif omlaag en selecteer " + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz ustawienia systemowe i przejdź do obszaru Prywatność i bezpieczeństwo. Przewiń i wybierz " + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abra as Definições do sistema em Privacidade e Segurança. Desloque a página e selecione " + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Откройте раздел «Системные настройки > Конфиденциальность и безопасность». Прокрутите список и выберите: " + } + } + } + }, + "network.protection.onboarding.allow.extension.desc.sequoia.emphasized" : { + "comment" : "'Allow' word between the prefix and suffix for the onboarding allow-extension description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Systemeinstellungen öffnen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Open System Settings" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir Configuración del Sistema" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir les paramètres système" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apri Impostazioni di Sistema" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Systeeminstellingen openen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz ustawienia systemowe" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir Definições do sistema" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Открыть настройки системы" + } + } + } + }, + "network.protection.onboarding.allow.extension.desc.sequoia.prefix" : { + "comment" : "Non-bold description for the onboarding allow-extension description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Klicke " + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Click " + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Haz clic " + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cliquez " + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fai clic su " + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Klik op " + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kliknij " + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Clica " + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Нажмите " + } + } + } + }, + "network.protection.onboarding.allow.extension.desc.sequoia.suffix" : { + "comment" : "Non-bold description for the onboarding allow-extension description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : ", aktiviere dann die VPN-Netzwerkerweiterung von DuckDuckGo." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : ", then enable the DuckDuckGo VPN network extension." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : ", luego habilita la extensión de red VPN de DuckDuckGo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : ", puis activez l'extension du réseau VPN DuckDuckGo." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : ", poi abilita l'estensione della rete VPN di DuckDuckGo." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "en schakel vervolgens de DuckDuckGo-extensie 'VPN-netwerk' in." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : ", a następnie włącz rozszerzenie sieci VPN DuckDuckGo." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : ", depois ativa a extensão de rede da VPN DuckDuckGo." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : ", а затем включите сетевое расширение DuckDuckGo VPN." + } + } + } + }, + "network.protection.onboarding.allow.extension.desc.suffix" : { + "comment" : "Non-bold suffix for the onboarding allow-extension description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : " für die DuckDuckGo-Software." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : " for DuckDuckGo software." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : " para el software de DuckDuckGo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : " pour le logiciel DuckDuckGo." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : " per il software DuckDuckGo." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : " voor DuckDuckGo-software." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : " dla oprogramowania DuckDuckGo." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : " para o software DuckDuckGo." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : " для ПО DuckDuckGo." + } + } + } + }, + "network.protection.onboarding.allow.vpn.action" : { + "comment" : "Action button title for the onboarding allow-VPN view", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN-Konfiguration hinzufügen ..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Add VPN Configuration..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Añadir configuración VPN..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter une configuration VPN…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aggiungi configurazione VPN..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN-configuratie toevoegen..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dodaj konfigurację VPN..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Adicionar configuração de VPN…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Добавить конфигурацию VPN..." + } + } + } + }, + "network.protection.onboarding.allow.vpn.desc.allow" : { + "comment" : "'Allow' word between the prefix and suffix for the onboarding allow-VPN description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zulassen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Allow" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Permitir" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Autoriser" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Consenti" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Toestaan" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zezwól" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Permitir" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Разрешить" + } + } + } + }, + "network.protection.onboarding.allow.vpn.desc.expanded.suffix" : { + "comment" : "Non-bold suffix for the onboarding allow-VPN description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : " wenn du aufgefordert wirst, die VPN-Einrichtung abzuschließen.\n\nDadurch wird eine Verknüpfung in der Menüleiste hinzugefügt, sodass du weiterhin auf das VPN zugreifen kannst, wenn der Browser nicht ausgeführt wird." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : " when prompted to finish setting up VPN.\n\nThis adds a shortcut in the menu bar so you can still access the VPN if the browser isn't running." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : " cuando se te solicite completar la configuración de la VPN.\n\nEsto añade un acceso directo en la barra de menú para que puedas seguir accediendo a la VPN si el navegador no está en funcionamiento." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : " lorsque vous êtes invité(e) à terminer la configuration du VPN.\n\nCela ajoute un raccourci dans la barre de menu afin que vous puissiez toujours accéder au VPN si le navigateur ne fonctionne pas." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : " quando ti viene chiesto di completare la configurazione della VPN.\n\nQuesto aggiunge una scorciatoia nella barra dei menu, così puoi accedere alla VPN anche se il browser non è in esecuzione." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : " wanneer je wordt gevraagd om het instellen van de VPN te voltooien.\n\nEr wordt nu een snelkoppeling aan de menubalk toegevoegd, zodat je nog steeds toegang hebt tot de VPN als de browser niet actief is." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : " po wyświetleniu monitu o dokończenie konfiguracji VPN.\n\nPowoduje to dodanie skrótu na pasku menu, który umożliwia uzyskanie dostępu do VPN, nawet jeśli przeglądarka nie jest uruchomiona." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : " quando te for pedido para terminar a configuração da VPN.\n\nIsto adiciona um atalho à barra de menu para que possas continuar a aceder à VPN se o navegador não estiver a funcionar." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : " на финальном этапе настройки VPN.\n\nВ строке меню появится ярлык, который позволит использовать VPN, не запуская браузер." + } + } + } + }, + "network.protection.onboarding.allow.vpn.desc.prefix" : { + "comment" : "Non-bold prefix for the onboarding allow-VPN description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Auswählen " + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Select " + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seleccionar " + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sélectionner " + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Seleziona " + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecteren " + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wybierz " + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Selecionar " + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Выберите " + } + } + } + }, + "network.protection.onboarding.allow.vpn.desc.suffix" : { + "comment" : "Non-bold suffix for the onboarding allow-VPN description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : " wenn du aufgefordert wirst, die VPN-Einrichtung abzuschließen." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : " when prompted to finish setting up VPN." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : " cuando se te solicite completar la configuración de la VPN." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : " lorsque vous êtes invité(e) à terminer la configuration du VPN." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : " quando ti viene chiesto di completare la configurazione della VPN.\n\n" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : " wanneer je wordt gevraagd om het instellen van de VPN te voltooien." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : " po wyświetleniu monitu o dokończenie konfiguracji VPN." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : " quando te for pedido para terminar a configuração da VPN.\n\n" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : " на финальном этапе настройки VPN." + } + } + } + }, + "network.protection.onboarding.allow.vpn.title" : { + "comment" : "Title for the onboarding allow-VPN step", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN-Konfiguration hinzufügen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Add VPN Configuration" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Añadir configuración de VPN" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter une configuration VPN" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aggiungi configurazione VPN" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN-configuratie toevoegen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dodaj konfigurację VPN" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Adiciona a configuração de VPN" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Конфигурация VPN" + } + } + } + }, + "network.protection.onboarding.install.extension.title" : { + "comment" : "Title for the onboarding install-vpn-extension step", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN-Systemerweiterung installieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Install VPN System Extension" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instalar la extensión del sistema VPN" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Installer l'extension système VPN" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Installa l'estensione di sistema VPN" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wil je de VPN-systeemextensie installeren?" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zainstaluj rozszerzenie systemowe VPN" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Instala a extensão do sistema VPN" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Установка VPN-расширения системы" + } + } + } + }, + "network.protection.onboarding.move.to.applications.action" : { + "comment" : "Action button title for the onboarding move-app-to-applications step", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "App für dich verschieben und neu starten …" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Move App for Me and Restart…" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mover la aplicación y reiniciar…" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Déplacer l'application pour moi et redémarrer…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sposta l'app per me e riavvia..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "App voor mij verplaatsen en opnieuw opstarten ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przenieś aplikację do mnie i uruchom ponownie..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mover a app por mim e reiniciar…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Перенести и перезапустить..." + } + } + } + }, + "network.protection.onboarding.move.to.applications.desc" : { + "comment" : "Description for the onboarding move-app-to-applications step", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Um das VPN nutzen zu können, muss sich die DuckDuckGo-App im Ordner „Programme“ auf deinem Mac befinden. Klicke auf die Schaltfläche unten, um die App zu verschieben und den Browser neu zu starten." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "To use the VPN, the DuckDuckGo app needs to be in the Applications folder on your Mac. Click the button below to move the app and restart the browser." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Para usar la VPN, la aplicación DuckDuckGo debe estar en la carpeta Aplicaciones de tu Mac. Haz clic en el botón de abajo para mover la aplicación y reinicia el navegador." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour pouvoir utiliser le VPN, l'application DuckDuckGo doit se trouver dans le dossier Applications de votre Mac. Cliquez sur le bouton ci-dessous pour déplacer l'application et redémarrer le navigateur." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Per usare la VPN, l'app DuckDuckGo deve trovarsi nella cartella Applicazioni del tuo Mac. Fai clic sul pulsante qui sotto per spostare l'app e riavviare il browser." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voor gebruik van de VPN moet de DuckDuckGo-app in de map 'Apps' op je Mac staan. Klik op de knop hieronder om de app te verplaatsen en de browser opnieuw op te starten." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do korzystania z VPN wymagane jest umieszczenie aplikacji DuckDuckGo w folderze Aplikacje na komputerze Mac. Kliknij przycisk poniżej, aby przenieść aplikację i zrestartować przeglądarkę." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Para utilizares a VPN, a aplicação DuckDuckGo precisa de estar na pasta Aplicações do teu Mac. Clica no botão abaixo para mover a aplicação e reiniciar o navegador." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Для использования VPN приложение DuckDuckGo должно находиться в папке «Программы». Чтобы переместить приложение и перезапустить браузер, нажмите кнопку ниже." + } + } + } + }, + "network.protection.onboarding.move.to.applications.title" : { + "comment" : "Title for the onboarding move-app-to-applications step", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo-App verschieben" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Move DuckDuckGo App" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mover la aplicación DuckDuckGo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Déplacer l'application DuckDuckGo" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sposta l'app DuckDuckGo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo-app verplaatsen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przenieś aplikację DuckDuckGo" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Move a aplicação DuckDuckGo" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Перемещение в «Программы»" + } + } + } + }, + "network.protection.report.site.issues.button.cancel" : { + "comment" : "Report site issues view cancel button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jetzt nicht" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Not Now" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ahora no" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pas maintenant" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non adesso" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Niet nu" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie teraz" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Agora não" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Не сейчас" + } + } + } + }, + "network.protection.report.site.issues.button.dontask" : { + "comment" : "Report site issues view button not to ask again", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nicht erneut fragen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Don't Ask Again" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No volver a preguntar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ne plus demander" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non chiedere più" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Niet opnieuw vragen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie pytaj ponownie" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não perguntar novamente" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Больше не спрашивать" + } + } + } + }, + "network.protection.report.site.issues.button.report" : { + "comment" : "Report site issues confirmation button to send report", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Melden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Report" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Informar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rapport" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rapporto" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Melden" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zgłoś" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comunicar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сообщить" + } + } + } + }, + "network.protection.report.site.issues.description" : { + "comment" : "Description for report site issues view for website “%@”", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bitte teile uns mit, wenn du %@ aufgrund von Problemen vom VPN ausgeschlossen hast." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Please let us know if you excluded %@ from the VPN because you experienced issues." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Por favor, indícanos si has excluido a %@ de la VPN porque has tenido problemas." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Merci de nous indiquer si vous avez exclu %@ du VPN parce que vous rencontriez des problèmes." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comunicaci se hai escluso %@ dalla VPN perché hai riscontrato problemi." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Laat het ons weten als je %@ van de VPN hebt uitgesloten omdat je problemen hebt ondervonden." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Poinformuj nas, jeśli sieć VPN została wyłączona dla aplikacji %@ z powodu problemów." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Indica-nos se excluíste o Website %@ da VPN porque tiveste problemas." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Если вы отключили VPN на сайте %@ из-за сбоев, сообщите нам." + } + } + } + }, + "network.protection.report.site.issues.footer" : { + "comment" : "Footer for report site issues view", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Berichte enthalten nur die Domain der betroffenen Website." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Reports only include the domain of the affected website." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Los informes solo incluyen el dominio del sitio web afectado." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Les rapports incluent uniquement le domaine du site Web concerné." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "I rapporti includono solo il dominio del sito web interessato." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rapporten bevatten alleen het domein van de getroffen website." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Raporty zawierają tylko domenę witryny, której dotyczy problem." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Os relatórios apenas incluem o domínio do Website afetado." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "В отчет войдет только домен пострадавшего сайта." + } + } + } + }, + "network.protection.report.site.issues.title" : { + "comment" : "Title for report site issues view for website “%@”", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ein Problem mit %@ melden?" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Report an issue with %@?" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¿Informar de un problema con %@?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Signaler un problème avec %@ ?" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Segnala un problema con %@?" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Een probleem met %@ melden?" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zgłosić problem z %@?" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Comunicar um problema com %@?" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сообщить о сбое на сайте %@?" + } + } + } + }, + "network.protection.server.address.unknown" : { + "comment" : "When we can't tell the user the IP of the NetP server is", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unbekannt" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Unknown" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desconocido" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inconnu" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sconosciuto" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onbekend" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nieznane" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desconhecido" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Неизвестно" + } + } + } + }, + "network.protection.server.location.link" : { + "comment" : "Clickable text linking to the server location picker screen", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "%@..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "@%..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@..." + } + } + } + }, + "network.protection.server.location.unknown" : { + "comment" : "When we can't tell the user the location of the NetP server", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unbekannt..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Unknown..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desconocido..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inconnu…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sconosciuto..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Onbekend ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nieznana..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desconhecido…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Неизвестно..." + } + } + } + }, + "network.protection.site.troubleshooting.exclude" : { + "comment" : "Option to exclude a “%@” website from the VPN", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ von VPN ausschließen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Exclude %@ from VPN" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Excluir a %@ de la VPN" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Exclure %@ du VPN" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Escludi %@ dalla VPN" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "%@ uitsluiten van de VPN" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyklucz %@ z VPN" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Excluir %@ da VPN" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отключить VPN на %@" + } + } + } + }, + "network.protection.site.troubleshooting.title" : { + "comment" : "Title for VPN website preferences view", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Website-Einstellungen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Website Preferences" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Preferencias del sitio web" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Préférences du site Web" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Preferenze del sito web" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Websitevoorkeuren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Preferencje strony internetowej" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Preferências de Websites" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Предпочтения по сайтам" + } + } + } + }, + "network.protection.status.connected" : { + "comment" : "The label for the NetP VPN when connected", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verbunden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Connected" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Conectado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connecté" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connesso" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verbonden" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Połączono" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ligada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подключен" + } + } + } + }, + "network.protection.status.connecting" : { + "comment" : "The label for the NetP VPN when connecting", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verbinden ..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Connecting..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Conectando..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connexion en cours…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connessione in corso..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Er wordt verbinding gemaakt ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Łączenie..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A ligar…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Выполняется подключение..." + } + } + } + }, + "network.protection.status.disconnected" : { + "comment" : "The label for the NetP VPN when disconnected", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nicht verbunden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Not connected" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No conectado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non connecté" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non collegata" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Niet verbonden" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie połączono" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não ligada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Не подключен" + } + } + } + }, + "network.protection.status.disconnecting" : { + "comment" : "The label for the NetP VPN when disconnecting", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wird getrennt ..." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Disconnecting..." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desconectando..." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Déconnexion en cours…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Disconnessione in corso..." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "De verbinding wordt verbroken ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Odłączanie..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A desligar…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отключение..." + } + } + } + }, + "network.protection.status.header.message.off" : { + "comment" : "Message label text for the status view when VPN is disconnected", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stell eine Verbindung her, um den gesamten Internetverkehr deines Geräts zu sichern." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Connect to secure all of your device’s\nInternet traffic." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Conéctate para proteger todo el tráfico de Internet\nde tu dispositivo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connectez-vous pour sécuriser tout le trafic\ntrafic Internet de votre appareil." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Connetti per proteggere tutto il traffico\nInternet del tuo dispositivo." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Maak verbinding om het internetverkeer van al je\napparaten te beveiligen." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nawiąż połączenie, aby zabezpieczyć ruch internetowy urządzenia." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Liga a VPN para protegeres todo o tráfego de Internet\ndo teu dispositivo." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Выполните подключение для защиты\nтрафика всех устройств." + } + } + } + }, + "network.protection.status.header.message.on" : { + "comment" : "Message label text for the status view when VPN is connected", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Der gesamte Internetverkehr des Geräts wird über das VPN gesichert." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "All device Internet traffic is being secured\nthrough the VPN." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Todo el tráfico de Internet del dispositivo está protegido\n a través de VPN." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le trafic Internet de tous les appareils est sécurisé\nvia le VPN." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tutto il traffico Internet del dispositivo è protetto\n tramite la VPN." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Al het internetverkeer van apparaten wordt beveiligd\nvia de VPN." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cały ruch internetowy urządzenia jest zabezpieczony\nprzez VPN." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Todo o tráfego de Internet do dispositivo está protegido\n através da VPN." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Трафик всех устройств \nзащищен по VPN." + } + } + } + }, + "network.protection.status.view.connection.details" : { + "comment" : "Connection details label shown in NetworkProtection's status view.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verbindungsdetails" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Connection Details" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Detalles de conexión" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Détails de la connexion" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dettagli della connessione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verbindingsdetails" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Szczegóły połączenia" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Detalhes da ligação" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "О подключении" + } + } + } + }, + "network.protection.status.view.connection.label" : { + "comment" : "Connection label shown in NetworkProtection's status view.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "VPN" + } + }, + "en-US" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + } + } + }, + "network.protection.status.view.feature.isoff" : { + "comment" : "Text shown in NetworkProtection's status view when NetP is OFF.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo-VPN ist Aus" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "DuckDuckGo VPN is OFF" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN está desactivado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le VPN DuckDuckGo est désactivé" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN è disattivata" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN is uitgeschakeld" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usługa DuckDuckGo VPN jest wyłączona" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A DuckDuckGo VPN está Desativada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN отключен" + } + } + } + }, + "network.protection.status.view.feature.ison" : { + "comment" : "Text shown in NetworkProtection's status view when NetP is ON.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo-VPN ist An" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "DuckDuckGo VPN is ON" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN está activado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Le VPN DuckDuckGo est activé" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN è attiva" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN is ingeschakeld" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usługa DuckDuckGo VPN jest włączona" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A DuckDuckGo VPN está Ativada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN включен" + } + } + } + }, + "network.protection.status.view.ip.address" : { + "comment" : "IP Address label shown in NetworkProtection's status view.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "IP-Adresse" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "IP Address" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dirección IP" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Adresse IP" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Indirizzo IP" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "IP-adres" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Adres IP" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Endereço IP" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "IP-адрес" + } + } + } + }, + "network.protection.status.view.location" : { + "comment" : "Location label shown in NetworkProtection's status view.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Standort" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Location" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ubicación" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Localisation" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Posizione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Locatie" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lokalizacja" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Localização" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Геопозиция" + } + } + } + }, + "network.protection.subscription.expired.resubscribe.button" : { + "comment" : "Button for the prompt that takes the user to the page to resubscribe.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Pro abonnieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Subscribe to Privacy Pro" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suscribirse a Privacy Pro" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "S'abonner à Privacy Pro" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Iscriviti a Privacy Pro" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonneren op Privacy Pro" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subskrybuj Privacy Pro" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subscreve o Privacy Pro" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Оформить подписку на Privacy Pro" + } + } + } + }, + "network.protection.subscription.expired.subtitle" : { + "comment" : "Subtitle for the prompt that tells the user their subscription expired.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonniere Privacy Pro, um die Verbindung zum DuckDuckGo-VPN wiederherzustellen." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suscríbete a Privacy Pro para volver a conectar la VPN de DuckDuckGo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnez-vous à Privacy Pro pour reconnecter le VPN DuckDuckGo." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Iscriviti a Privacy Pro per riconnettere la VPN di DuckDuckGo." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonneer je op Privacy Pro om opnieuw verbinding te maken met DuckDuckGo VPN." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subskrybuj Privacy Pro, aby ponownie połączyć się z siecią DuckDuckGo VPN." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subscreve o Privacy Pro para voltar a ligar a DuckDuckGo VPN." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Чтобы вновь подключиться к DuckDuckGo VPN, оформите подписку Privacy Pro." + } + } + } + }, + "network.protection.subscription.expired.title" : { + "comment" : "Title for the prompt that tells the user their subscription expired.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN ist getrennt" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "VPN disconnected" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La VPN se ha desconectado" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN déconnecté" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN disconnessa" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "De VPN-verbinding is verbroken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Połączenie VPN zostało przerwane" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A VPN está desativada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN отключен" + } + } + } + }, + "network.protection.subscription.expired.uninstall.button" : { + "comment" : "Button for the prompt that uninstalls the VPN.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo-VPN deinstallieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Uninstall DuckDuckGo VPN" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desinstalar la VPN de DuckDuckGo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Désinstaller le VPN DuckDuckGo" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Disinstalla la VPN di DuckDuckGo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DuckDuckGo VPN verwijderen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Odinstaluj DuckDuckGo VPN" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Desinstalar VPN DuckDuckGo" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Удалить DuckDuckGo VPN" + } + } + } + }, + "network.protection.vpn.data-volume" : { + "comment" : "Title for the data volume section in the VPN status view", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Datenvolumen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Data Volume" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volumen de datos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volume de données" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volume dati" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Datavolume" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ilość danych" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volume de Dados" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Объем трафика" + } + } + } + }, + "network.protection.vpn.dns-server" : { + "comment" : "Title for the DNS server section in the VPN status view", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "DNS-Server" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "DNS Server" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Servidor DNS" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Serveur DNS" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Server DNS" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "DNS-server" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Serwer DNS" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Servidor DNS" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "DNS-сервер" + } + } + } + }, + "network.protection.vpn.failure.login-item-version-mismatched" : { + "comment" : "Error message for the Login item version mismatched error", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aufgrund eines Versionskonflikts kann keine Verbindung hergestellt werden. Wenn du mehrere Versionen des Browsers installiert hast, entferne alle bis auf die neueste Version von DuckDuckGo und starte deinen Mac neu." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Unable to connect due to versioning conflict. If you have multiple versions of the browser installed, remove all but the most recent version of DuckDuckGo and restart your Mac." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se puede conectar debido a un conflicto de versiones. Si tienes varias versiones del navegador instaladas, elimina todas excepto la versión más reciente de DuckDuckGo y reinicia tu Mac." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible de se connecter en raison d'un conflit de versions. Si vous avez installé plusieurs versions du navigateur, supprimez toutes les versions de DuckDuckGo à l'exception de la plus récente, puis redémarrez votre Mac." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossibile connettersi a causa di un conflitto di versione. Se hai installato più versioni del browser, rimuovile tutte tranne la versione più recente di DuckDuckGo e riavvia il Mac." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Er kan geen verbinding worden gemaakt vanwege een versieconflict. Als je meerdere versies van de browser hebt geïnstalleerd, moet je alle versies van DuckDuckGo behalve de meest recente versie verwijderen en je Mac opnieuw opstarten." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie można nawiązać połączenia z powodu konfliktu wersji. Jeśli masz zainstalowanych kilka wersji przeglądarki, usuń wszystkie oprócz najnowszej wersji DuckDuckGo i uruchom ponownie komputer Mac." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não é possível estabelecer ligação devido a um conflito de versões. Se tiveres várias versões do navegador DuckDuckGo instaladas, remove-as todas, exceto a mais recente, e reinicia o teu Mac." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Сбой подключения вследствие конфликта версий. Если у вас установлено несколько версий браузера, удалите все, кроме последней версии DuckDuckGo, и перезапустите компьютер." + } + } + } + }, + "network.protection.vpn.failure.operation-not-permitted" : { + "comment" : "Error message for the Operation not permitted error", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aufgrund eines unerwarteten Fehlers kann keine Verbindung hergestellt werden. Ein Neustart deines Macs kann das Problem normalerweise beheben." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Unable to connect due to an unexpected error. Restarting your Mac can usually fix the issue." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se puede conectar debido a un error inesperado. Reiniciar tu Mac suele solucionar el problema." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible de se connecter en raison d’une erreur inattendue. Le redémarrage de votre Mac peut généralement résoudre le problème." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossibile connettersi a causa di un errore imprevisto. Il riavvio del Mac di solito risolve il problema." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Er kan geen verbinding worden gemaakt vanwege een onverwachte fout. Het probleem kan meestal worden opgelost door je Mac opnieuw op te starten." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie można nawiązać połączenia z powodu nieoczekiwanego błędu. Ponowne uruchomienie komputera Mac zwykle rozwiązuje problem." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não foi possível estabelecer ligação devido a um erro inesperado. Geralmente, reiniciar o teu Mac pode resolver o problema." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подключение не состоялось из-за непредвиденной ошибки. Перезагрузка компьютера обычно помогает устранить подобные проблемы." + } + } + } + }, + "network.protection.vpn.failure.registered-server-fetching-failed" : { + "comment" : "Error message for the Failed to fetch registered server error", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Es kann keine Verbindung hergestellt werden. Überprüfe deine Internetverbindung. Stelle sicher, dass andere Software oder Services die DuckDuckGo-VPN-Server nicht blockieren." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Unable to connect. Double check your internet connection. Make sure other software or services aren't blocking DuckDuckGo VPN servers." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se ha podido conectar. Vuelve a comprobar tu conexión a Internet. Asegúrate de que otros programas o servicios no bloqueen los servidores VPN de DuckDuckGo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossible de se connecter. Vérifiez à nouveau votre connexion Internet. Assurez-vous que d’autres logiciels ou services ne bloquent pas les serveurs VPN DuckDuckGo." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impossibile connettersi. Ricontrolla la connessione Internet. Assicurati che altri software o servizi non blocchino i server VPN di DuckDuckGo." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Er kan geen verbinding worden gemaakt. Controleer je internetverbinding nogmaals. Zorg ervoor dat andere software of diensten de DuckDuckGo VPN-servers niet blokkeren." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie można nawiązać połączenia. Sprawdź połączenie z Internetem. Upewnij się, że inne programy lub usługi nie blokują serwerów DuckDuckGo VPN." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não é possível estabelecer ligação. Verifica novamente a tua ligação à Internet. Certifica-te de que outros softwares ou serviços não estão a bloquear os servidores da VPN da DuckDuckGo." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подключиться не удалось. Проверьте соединение с Интернетом. Также убедитесь, что другие программы и службы не блокируют VPN-серверы DuckDuckGo." + } + } + } + }, + "network.protection.vpn.location.connected" : { + "comment" : "Description of the location type in the VPN status view", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verbundener Standort" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Connected Location" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ubicación conectada" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Localisation connectée" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Posizione connessa" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verbonden locatie" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Połączona lokalizacja" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Localização Ligada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Место подключения" + } + } + } + }, + "network.protection.vpn.location.selected" : { + "comment" : "Description of the location type in the VPN status view", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ausgewählter Standort" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Selected Location" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ubicación seleccionada" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Emplacement sélectionné" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Posizione selezionata" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Geselecteerde locatie" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wybrana lokalizacja" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Localização Selecionada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Выбранное место" + } + } + } + }, + "network.protection.vpn.send-feedback" : { + "comment" : "Action button title for the Send feedback option", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rückmeldung senden …" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Send Feedback…" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar comentarios…" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer des commentaires…" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invia feedback…" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feedback verzenden ..." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyślij opinię..." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar feedback…" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отправить отзыв…" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/ReportSiteIssueView/ReportSiteIssuesView.swift b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/ReportSiteIssueView/ReportSiteIssuesView.swift index 2281353884..4474e0499f 100644 --- a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/ReportSiteIssueView/ReportSiteIssuesView.swift +++ b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/ReportSiteIssueView/ReportSiteIssuesView.swift @@ -25,13 +25,8 @@ import VPNPixels struct ReportSiteIssuesView: ModalView { let domain: String - private let title = "Report" @Environment(\.dismiss) private var dismiss - private let cancelActionTitle = "Not Now" - private let defaultActionTitle = "Report" - private let dontAskAgainTitle = "Don't Ask Again" - let defaultAction: @MainActor (_ dismiss: () -> Void) -> Void let cancelAction: @MainActor (_ dismiss: () -> Void) -> Void let dontAskAgainAction: @MainActor (_ dismiss: () -> Void) -> Void @@ -40,36 +35,36 @@ struct ReportSiteIssuesView: ModalView { Dialog { Image(.siteBreakage128) - Text("Report an issue with \(domain)?") + Text(String(format: UserText.networkProtectionReportSiteIssuesViewTitle, domain)) .font(Font.custom("SF Pro", size: 17) .weight(.bold)) .multilineText() - Text("Please let us know if you excluded \(domain) from the VPN because you experienced issues.") + Text(String(format: UserText.networkProtectionReportSiteIssuesViewDescription, domain)) .font(Font.custom("SF Pro", size: 13)) .fixedSize(horizontal: false, vertical: true) .lineLimit(2) .multilineTextAlignment(.center) .multilineText() - Text("Reports only include the domain of the affected website.") + Text(UserText.networkProtectionReportSiteIssuesViewFooter) .font(Font.custom("SF Pro", size: 11)) .fixedSize(horizontal: false, vertical: true) .lineLimit(2) .multilineTextAlignment(.center) .multilineText() } buttons: { - Button(dontAskAgainTitle) { + Button(UserText.networkProtectionReportSiteIssuesViewButtonDontAsk) { dontAskAgainAction(dismiss) } Spacer() - Button(cancelActionTitle) { + Button(UserText.networkProtectionReportSiteIssuesViewButtonCancel) { cancelAction(dismiss) } - Button(defaultActionTitle) { + Button(UserText.networkProtectionReportSiteIssuesViewButtonReport) { defaultAction(dismiss) } } diff --git a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/SiteTroubleshootingView/SiteTroubleshootingView.swift b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/SiteTroubleshootingView/SiteTroubleshootingView.swift index b8f5e0d929..c04522fd55 100644 --- a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/SiteTroubleshootingView/SiteTroubleshootingView.swift +++ b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/SiteTroubleshootingView/SiteTroubleshootingView.swift @@ -46,7 +46,7 @@ public struct SiteTroubleshootingView: View { .padding(EdgeInsets(top: 5, leading: 9, bottom: 5, trailing: 9)) VStack(alignment: .leading) { - Text("Website Preferences") + Text(UserText.networkProtectionSiteTroubleShootingViewTitle) .applySectionHeaderAttributes(colorScheme: colorScheme) .padding(.vertical, 3) .padding(.horizontal, 9) @@ -67,7 +67,7 @@ public struct SiteTroubleshootingView: View { .frame(width: Self.iconSize, height: Self.iconSize) } - Text("Exclude \(siteInfo.domain) from VPN") + Text(String(format: UserText.networkProtectionSiteTroubleShootingViewExcludeWebsite, siteInfo.domain)) .applyLabelAttributes(colorScheme: colorScheme) Spacer() diff --git a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/TipViews/Model/VPNAutoconnectTip.swift b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/TipViews/Model/VPNAutoconnectTip.swift index 676fe645aa..7305b68b99 100644 --- a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/TipViews/Model/VPNAutoconnectTip.swift +++ b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/TipViews/Model/VPNAutoconnectTip.swift @@ -46,11 +46,11 @@ extension VPNAutoconnectTip: Tip { } var title: Text { - Text("Connect Automatically") + Text(UserText.networkProtectionAutoconnectTipTitle) } var message: Text? { - Text("The VPN can connect on its own when you log in to your computer.") + Text(UserText.networkProtectionAutoconnectTipMessage) } var image: Image? { @@ -59,7 +59,7 @@ extension VPNAutoconnectTip: Tip { var actions: [Action] { [Action(id: ActionIdentifiers.enable.rawValue) { - Text("Enable") + Text(UserText.networkProtectionAutoconnectTipEnableAction) }] } diff --git a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/TipViews/Model/VPNDomainExclusionsTip.swift b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/TipViews/Model/VPNDomainExclusionsTip.swift index f166e82375..0d1add65e4 100644 --- a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/TipViews/Model/VPNDomainExclusionsTip.swift +++ b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/TipViews/Model/VPNDomainExclusionsTip.swift @@ -45,11 +45,11 @@ extension VPNDomainExclusionsTip: Tip { } var title: Text { - Text("Website not working?") + Text(UserText.networkProtectionDomainExclusionsTipTitle) } var message: Text? { - Text("Exclude websites that block VPN traffic so you can use them without turning the VPN off.") + Text(UserText.networkProtectionDomainExclusionsTipMessage) } var image: Image? { diff --git a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/TipViews/Model/VPNGeoswitchingTip.swift b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/TipViews/Model/VPNGeoswitchingTip.swift index 3b5a9e5173..6477824f2d 100644 --- a/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/TipViews/Model/VPNGeoswitchingTip.swift +++ b/LocalPackages/NetworkProtectionMac/Sources/NetworkProtectionUI/Views/TipViews/Model/VPNGeoswitchingTip.swift @@ -37,11 +37,11 @@ extension VPNGeoswitchingTip: Tip { } var title: Text { - Text("Change Your Location") + Text(UserText.networkProtectionGeoswitchingTipTitle) } var message: Text? { - Text("Connect to any of our servers worldwide to customize the VPN location.") + Text(UserText.networkProtectionGeoswitchingTipMessage) } var image: Image? { diff --git a/LocalPackages/SubscriptionUI/Package.swift b/LocalPackages/SubscriptionUI/Package.swift index 93e6c195f5..5073fbb3e0 100644 --- a/LocalPackages/SubscriptionUI/Package.swift +++ b/LocalPackages/SubscriptionUI/Package.swift @@ -1,10 +1,11 @@ -// swift-tools-version: 5.8 +// swift-tools-version: 5.9 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "SubscriptionUI", + defaultLocalization: "en", platforms: [ .macOS("11.4") ], products: [ .library( diff --git a/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/DebugMenu/DebugPurchaseView.swift b/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/DebugMenu/DebugPurchaseView.swift index 07250f3c00..01eb9a0fba 100644 --- a/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/DebugMenu/DebugPurchaseView.swift +++ b/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/DebugMenu/DebugPurchaseView.swift @@ -47,7 +47,7 @@ public struct DebugPurchaseView: View { private var loadingProductsView: some View { VStack { - Text("Loading subscriptions...") + Text(verbatim: "Loading subscriptions...") .font(.largeTitle) ActivityIndicator(isAnimating: .constant(true), style: .spinning) } @@ -56,7 +56,7 @@ public struct DebugPurchaseView: View { private var purchaseSubscriptionSection: some View { VStack { - Text("Purchase Subscription") + Text(verbatim: "Purchase Subscription") .font(.largeTitle) Spacer(minLength: 16) VStack { @@ -113,7 +113,7 @@ struct SubscriptionRow: View { .font(.title) Text(product.description) .font(.body) - Text("Price: \(product.displayPrice)") + Text(verbatim: "Price: \(product.displayPrice)") .font(.caption) } @@ -129,7 +129,7 @@ struct SubscriptionRow: View { } else if isBeingPurchased { ActivityIndicator(isAnimating: .constant(true), style: .spinning) } else { - Text("Buy") + Text(verbatim: "Buy") .bold() .foregroundColor(.white) } diff --git a/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/Preferences/PreferencesSubscriptionModel.swift b/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/Preferences/PreferencesSubscriptionModel.swift index 50f7114fa7..dfed042d42 100644 --- a/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/Preferences/PreferencesSubscriptionModel.swift +++ b/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/Preferences/PreferencesSubscriptionModel.swift @@ -452,24 +452,15 @@ public final class PreferencesSubscriptionModel: ObservableObject { @MainActor func updateDescription(for date: Date, status: Subscription.Status, period: Subscription.BillingPeriod) { - let formattedDate = dateFormatter.string(from: date) - let billingPeriod: String - - switch period { - case .monthly: billingPeriod = UserText.monthlySubscriptionBillingPeriod.lowercased() - case .yearly: billingPeriod = UserText.yearlySubscriptionBillingPeriod.lowercased() - case .unknown: billingPeriod = "" - } - switch status { case .autoRenewable: - self.subscriptionDetails = UserText.preferencesSubscriptionActiveRenewCaption(period: billingPeriod, formattedDate: formattedDate) + self.subscriptionDetails = UserText.preferencesSubscriptionRenewingCaption(billingPeriod: period, formattedDate: formattedDate) case .expired, .inactive: self.subscriptionDetails = UserText.preferencesSubscriptionExpiredCaption(formattedDate: formattedDate) default: - self.subscriptionDetails = UserText.preferencesSubscriptionActiveExpireCaption(period: billingPeriod, formattedDate: formattedDate) + self.subscriptionDetails = UserText.preferencesSubscriptionExpiringCaption(billingPeriod: period, formattedDate: formattedDate) } } diff --git a/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/Resources/Localizable.xcstrings b/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/Resources/Localizable.xcstrings new file mode 100644 index 0000000000..c7836d0be0 --- /dev/null +++ b/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/Resources/Localizable.xcstrings @@ -0,0 +1,4376 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "Cancel" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abbrechen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancelar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annuler" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annulla" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annuleren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anuluj" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancelar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отменить" + } + } + } + }, + "Close" : { + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Schließen" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cerrar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fermer" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chiudi" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sluiten" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zamknij" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fechar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Закрыть" + } + } + } + }, + "subscription.access.channel.email.name" : { + "comment" : "Service name displayed when accessing subscription using email address", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "E-Mail" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Email" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Correo electrónico" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Adresse électronique" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Email" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "E-mail" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "E-mail" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "E-mail" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Электронная почта" + } + } + } + }, + "subscription.activate.modal.description" : { + "comment" : "Activate subscription modal view subtitle description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Greife über eine E-Mail-Adresse auf dein Privacy Pro Abonnement zu." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Access your Privacy Pro subscription via an email address." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accede a tu suscripción a Privacy Pro a través de una dirección de correo electrónico." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accédez à votre abonnement Privacy Pro via une adresse e-mail." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accedi al tuo abbonamento Privacy Pro tramite un indirizzo e-mail." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Krijg toegang tot je Privacy Pro-abonnement via een e-mailadres." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Uzyskaj dostęp do subskrypcji Privacy Pro za pośrednictwem adresu e-mail." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Acede à tua subscrição Privacy Pro com um endereço de e-mail." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подписку на услуги Privacy Pro можно активировать по электронной почте." + } + } + } + }, + "subscription.activate.modal.email.description" : { + "comment" : "Activate subscription modal description for email address channel", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verwende deine E-Mail-Adresse, um dein Abonnement auf diesem Gerät zu aktivieren." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Use your email to activate your subscription on this device." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utiliza tu correo electrónico para activar tu suscripción en este dispositivo." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utilisez votre adresse e-mail pour activer votre abonnement sur cet appareil." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usa la tua e-mail per attivare l'abbonamento su questo dispositivo." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gebruik je e-mailadres om je abonnement op dit apparaat te activeren." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Użyj adresu e-mail, aby aktywować subskrypcję na tym urządzeniu." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utiliza o teu e-mail para ativares a tua subscrição neste dispositivo." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Используйте адрес электронной почты, чтобы активировать подписку на этом устройстве." + } + } + } + }, + "subscription.activate.modal.restore.purchase.description" : { + "comment" : "Activate subscription modal description via restore purchase from Apple ID", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dein Abonnement ist automatisch in DuckDuckGo auf jedem Gerät verfügbar, das bei deinem Apple ID-Konto angemeldet ist." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tu suscripción está disponible automáticamente en DuckDuckGo en cualquier dispositivo que haya iniciado sesión en tu ID de Apple." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre abonnement est automatiquement disponible dans DuckDuckGo sur n'importe quel appareil connecté à votre identifiant Apple." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il tuo abbonamento è automaticamente disponibile in DuckDuckGo su qualsiasi dispositivo connesso al tuo ID Apple." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je abonnement is automatisch beschikbaar in DuckDuckGo op elk apparaat dat is aangemeld bij je Apple-ID." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twoja subskrypcja jest automatycznie dostępna w DuckDuckGo na każdym urządzeniu, na którym zalogujesz się na konto Apple ID." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tua subscrição está automaticamente disponível no DuckDuckGo em qualquer dispositivo com sessão iniciada com o teu Apple ID." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ваша подписка на DuckDuckGo автоматически доступна на любом устройстве: просто войдите в учетную запись Apple ID." + } + } + } + }, + "subscription.activate.modal.title" : { + "comment" : "Activate subscription modal view title", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement auf diesem Gerät aktivieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Activate your subscription on this device" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activar tu suscripción en este dispositivo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activez votre abonnement sur cet appareil" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Attiva il tuo abbonamento su questo dispositivo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activeer je abonnement op dit apparaat" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aktywuj subskrypcję na tym urządzeniu" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ativa a tua subscrição neste dispositivo" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Активировать подписку на этом устройстве" + } + } + } + }, + "subscription.alert.button.cancel" : { + "comment" : "Alert button for dismissing it", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abbrechen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Cancel" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancelar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annuler" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annulla" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annuleren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anuluj" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancelar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отменить" + } + } + } + }, + "subscription.alert.button.ok" : { + "comment" : "Alert button for confirming it", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "OK" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "De acuerdo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ok" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "OK" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Хорошо" + } + } + } + }, + "subscription.alert.button.restore" : { + "comment" : "Alert button for restoring past subscription purchases", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wiederherstellen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Restore" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rétablir" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ripristina" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Herstellen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przywróć" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repor" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Восстановить" + } + } + } + }, + "subscription.alert.button.retry" : { + "comment" : "Alert button for continue action", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fortsetzen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Continue" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Continuar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Continuer" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Continua" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Doorgaan" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kontynuuj" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Continuar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Продолжить" + } + } + } + }, + "subscription.alert.button.view.plans" : { + "comment" : "Alert button for viewing subscription plans", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tarife anzeigen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "View Plans" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ver planes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voir les forfaits" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Visualizza i piani" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnementen bekijken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyświetl plany" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ver Planos" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Просмотреть тарифы" + } + } + } + }, + "subscription.alert.something.went.wrong.description" : { + "comment" : "Alert message when unknown error has occurred", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wir haben Probleme mit der Verbindung. Bitte versuche es zu einem späteren Zeitpunkt erneut." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "We’re having trouble connecting. Please try again later." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tenemos problemas para conectarnos. Inténtalo de nuevo más tarde." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous avons du mal à nous connecter. Veuillez réessayer plus tard." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stiamo riscontrando problemi di connessione. Riprova in seguito." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Er zijn problemen met de verbinding. Probeer het later opnieuw." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wystąpił problem z połączeniem. Spróbuj ponownie później." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Falha na ligação. Tenta novamente mais tarde." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Возникли проблемы с подключением. Повторите попытку позже." + } + } + } + }, + "subscription.alert.something.went.wrong.title" : { + "comment" : "Alert title when unknown error has occurred", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Etwas ist schiefgelaufen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Something Went Wrong" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se ha producido un error" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une erreur s'est produite" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si è verificato un errore" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Er is iets misgegaan" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wystąpił błąd" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ocorreu um erro" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Что-то пошло не так" + } + } + } + }, + "subscription.alert.subscription.apple-id.sync-failed.title" : { + "comment" : "Alert message when the subscription failed to restore", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Beim Synchronisieren deiner Apple-ID ist was schiefgelaufen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Something Went Wrong When Syncing Your Apple ID" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se ha producido un error al sincronizar tu ID de Apple" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Une erreur s'est produite lors de la synchronisation de votre identifiant Apple" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si è verificato un errore durante la sincronizzazione del tuo ID Apple" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Er is iets misgegaan bij het synchroniseren van je Apple-ID" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wystąpił błąd podczas synchronizowania konta Apple ID" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ocorreu um erro ao sincronizar o teu Apple ID" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "При синхронизации Apple ID что-то пошло не так" + } + } + } + }, + "subscription.alert.subscription.found.description" : { + "comment" : "Alert message when subscription was found", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wir haben ein Abonnement gefunden, das mit dieser Apple ID verknüpft ist." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "We found a subscription associated with this Apple ID." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hemos encontrado una suscripción asociada a esta ID de Apple." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous avons trouvé un abonnement associé à cet identifiant Apple." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abbiamo trovato un abbonamento associato a questo ID Apple." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "We hebben een abonnement gevonden dat aan deze Apple-ID is gekoppeld." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Znaleźliśmy subskrypcję powiązaną z tym Apple ID." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Encontrámos uma subscrição associada a este Apple ID." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Мы нашли подписку, привязанную к этой учетной записи Apple ID." + } + } + } + }, + "subscription.alert.subscription.found.title" : { + "comment" : "Alert title when subscription was found", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement gefunden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Subscription Found" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suscripción encontrada" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement trouvé" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abbonamento trovato" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement gevonden" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Znaleziono subskrypcję" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subscrição encontrada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подписка найдена" + } + } + } + }, + "subscription.alert.subscription.inactive.description" : { + "comment" : "Alert message when subscription was inactive", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Das mit dieser Apple ID verknüpfte Abonnement ist nicht mehr aktiv." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "The subscription associated with this Apple ID is no longer active." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "La suscripción asociada a esta ID de Apple ya no está activa." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'abonnement associé à cet identifiant Apple n'est plus actif." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'abbonamento associato a questo ID Apple non è più attivo." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je abonnement dat aan deze Apple-ID is gekoppeld, is niet langer actief." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subskrypcja powiązana z tym kontem Apple ID nie jest już aktywna." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tua subscrição associada a este ID Apple já não está ativa." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подписка, закрепленная за этой учетной записью Apple ID, утратила активный статус." + } + } + } + }, + "subscription.alert.subscription.inactive.title" : { + "comment" : "Alert title when subscription was inactive", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement nicht gefunden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Subscription Not Found" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suscripción no encontrada" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement introuvable" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abbonamento non trovato" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement niet gevonden" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie znaleziono subskrypcji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subscrição não encontrada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подписка не найдена" + } + } + } + }, + "subscription.alert.subscription.not.found.description" : { + "comment" : "Alert message when subscription was not found", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wir konnten kein Abo finden, das mit dieser Apple ID verknüpft ist." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "We couldn’t find a subscription associated with this Apple ID." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "No hemos podido encontrar una suscripción asociada a esta ID de Apple." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nous n'avons pas trouvé d'abonnement associé à cet identifiant Apple." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non siamo riusciti a trovare un abbonamento associato a questo ID Apple." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "We kunnen geen abonnement vinden dat aan deze Apple-ID is gekoppeld." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie znaleźliśmy subskrypcji powiązanej z tym Apple ID." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Não foi possível encontrar uma subscrição associada a este Apple ID." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Мы не нашли подписку, привязанную к этой учетной записи Apple ID." + } + } + } + }, + "subscription.alert.subscription.not.found.title" : { + "comment" : "Alert title when subscription was not found", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement nicht gefunden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Subscription Not Found" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suscripción no encontrada" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement introuvable" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abbonamento non trovato" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement niet gevonden" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie znaleziono subskrypcji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subscrição não encontrada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подписка не найдена" + } + } + } + }, + "subscription.appstore.activate.modal.description" : { + "comment" : "Activate subscription modal view subtitle description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Greife auf diesem Gerät über Apple ID oder eine E-Mail Adresse auf dein Privacy-Pro-Abonnement zu." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Access your Privacy Pro subscription on this device via Apple ID or an email address." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accede a tu suscripción a Privacy Pro en este dispositivo mediante la ID de Apple o una dirección de correo electrónico." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accédez à votre abonnement Privacy Pro sur cet appareil via un identifiant Apple ou via une adresse e-mail." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Accedi al tuo abbonamento Privacy Pro su questo dispositivo tramite ID Apple o un indirizzo e-mail." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Krijg toegang tot je Privacy Pro-abonnement op dit apparaat via je Apple-ID of e-mailadres." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Uzyskaj dostęp do subskrypcji Privacy Pro na tym urządzeniu za pośrednictwem Apple ID lub adresu e-mail." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Acede à tua subscrição Privacy Pro neste dispositivo através do teu Apple ID ou de um endereço de e-mail." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Преимуществами подписки Privacy Pro можно пользоваться на этом устройстве с помощью Apple ID или адреса электронной почты." + } + } + } + }, + "subscription.dialog.change.apple.description" : { + "comment" : "Change plan or billing dialog subtitle description for subscription purchased via Apple", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dein Abonnement wurde über den Apple App Store erworben. Um deinen Tarif oder deine Rechnungseinstellungen zu ändern, öffne bitte auf einem Gerät, das mit der Apple-ID angemeldet ist, mit der du dein Abo gekauft hast, die Systemeinstellungen > Apple-ID > Medien und Käufe > Abos > Verwalten." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your subscription was purchased through the Apple App Store. To change your plan or billing settings, please go to System Settings > Apple ID > Media and Purchases > Subscriptions > Manage on a device signed in to the same Apple ID used to purchase your subscription." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Has adquirido tu suscripción a través de la App Store de Apple. Para cambiar el plan o la configuración de facturación, ve a Ajustes del sistema > ID de Apple > Multimedia y compras > Suscripciones > Gestionar en un dispositivo con la misma ID de Apple que usaste para comprar tu suscripción." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre abonnement a été souscrit via l'App Store d'Apple. Pour modifier votre forfait ou vos paramètres de facturation, allez dans Réglages système > ID Apple > Contenu multimédia et achats > Abonnements > Gérer sur un appareil connecté au même identifiant Apple que celui utilisé pour souscrire votre abonnement." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'abbonamento è stato acquistato tramite l'App Store di Apple. Per modificare il tuo piano o le impostazioni di fatturazione, vai a Impostazioni di sistema > ID Apple > Media e acquisti > Abbonamenti > Gestisci su un dispositivo connesso allo stesso ID Apple usato per acquistare l'abbonamento." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je abonnement is aangeschaft via de Apple App Store. Je kunt je abonnement of factureringsinstellingen wijzigen via 'Systeeminstellingen' > 'Apple-ID' > 'Media en aankopen' > 'Abonnementen' > 'Beheer' op een apparaat dat is aangemeld bij dezelfde Apple-ID waarmee je het abonnement hebt gekocht." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twoja subskrypcja została zakupiona za pośrednictwem sklepu Apple App Store. Aby zmienić plan lub ustawienia rozliczeń, wybierz kolejno Ustawienia systemowe > Apple ID > Multimedia i zakupy > Subskrypcje > Zarządzaj na urządzeniu zalogowanym na konto Apple ID wykorzystane do zakupu subskrypcji." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tua subscrição foi adquirida na Apple App Store. Para alterares o teu plano ou as definições de faturação, acede a Definições do Sistema > ID Apple > Multimédia e Compras > Subscrições > Gerir num dispositivo com sessão iniciada com o mesmo Apple ID utilizado para comprar a tua subscrição." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подписка приобретена в Apple App Store. Чтобы изменить тарифный план или платежные параметры, откройте раздел «Системные настройки > Apple ID > Контент и покупки > Подписки > Управление» на устройстве, где выполнен вход под тем же идентификатором Apple ID, с помощью которого была оформлена подписка." + } + } + } + }, + "subscription.dialog.change.done.button" : { + "comment" : "Button to close the change subscription dialog", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fertig" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Done" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hecho" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Terminé" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fatto" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Klaar" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gotowe" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Feito" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Готово" + } + } + } + }, + "subscription.dialog.change.google.description" : { + "comment" : "Change plan or billing dialog subtitle description for subscription purchased via Google", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dein Abonnement wurde über den Google Play Store erworben. Um deinen Tarif oder deine Rechnungseinstellungen zu ändern, öffne bitte die Google Play Store-Abonnementeinstellungen auf einem Gerät, das mit demselben Google-Konto angemeldet ist, mit dem du dein Abonnement gekauft hast." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your subscription was purchased through the Google Play Store. To change your plan or billing settings, please open Google Play Store subscription settings on a device signed in to the same Google Account used to purchase your subscription." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Has adquirido tu suscripción a través de Google Play Store. Para cambiar tu plan o la configuración de facturación, abre la configuración de suscripción de Google Play Store en un dispositivo en el que hayas iniciado sesión con la misma cuenta de Google que usaste para comprar tu suscripción." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre abonnement a été souscrit via le Google Play Store. Pour modifier votre forfait ou vos paramètres de facturation, ouvrez les paramètres d'abonnement du Google Play Store sur un appareil connecté au même compte Google que celui utilisé pour souscrire votre abonnement." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il tuo abbonamento è stato acquistato tramite Google Play Store. Accedi alle impostazioni dell'abbonamento di Google Play Store su un dispositivo collegato allo stesso account Google usato per effettuare l'acquisto dell'abbonamento." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je abonnement is aangeschaft via de Google Play Store. Je kunt je abonnement of factureringsinstellingen wijzigen door de abonnementsinstellingen van de Google Play Store te openen op een apparaat dat is aangemeld bij hetzelfde Google-account waarmee je het abonnement hebt gekocht." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twoja subskrypcja została zakupiona za pośrednictwem sklepu Google Play. Aby zmienić plan lub ustawienia płatności, otwórz ustawienia subskrypcji w sklepie Google Play na urządzeniu zalogowanym na konto Google wykorzystane do zakupu subskrypcji." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tua subscrição foi adquirida na Google Play Store. Para alterares o teu plano ou as definições de faturação, abre as definições da subscrição na Google Play Store num dispositivo com sessão iniciada na Conta Google usada para comprar a subscrição." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Подписка приобретена в магазине приложений Google Play Store. Чтобы изменить тарифный план или платежные параметры, откройте настройки подписки в Google Play Store на устройстве, где выполнен вход в учетную запись Google, с помощью которой была оформлена подписка." + } + } + } + }, + "subscription.dialog.change.title" : { + "comment" : "Change plan or billing dialog title", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tarif oder Abrechnung ändern" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Change Plan or Billing" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cambiar plan o facturación" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Changer de forfait ou de facturation" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cambia piano o fatturazione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plan of factuur wijzigen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zmiana planu lub płatności" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Alterar Plano ou Faturação" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Изменение тарифа или оплаты" + } + } + } + }, + "subscription.dialog.remove.cancel.button" : { + "comment" : "Button to cancel removing subscription from device", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abbrechen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Cancel" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancelar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annuler" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annulla" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Annuleren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Anuluj" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cancelar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отменить" + } + } + } + }, + "subscription.dialog.remove.confirm" : { + "comment" : "Button to confirm removing subscription from device", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement entfernen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Remove Subscription" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Eliminar suscripción" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer l'abonnement" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rimuovi abbonamento" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement verwijderen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usuń subskrypcję" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remover Subscrição" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Удалить подписку" + } + } + } + }, + "subscription.dialog.remove.description" : { + "comment" : "Remove subscription from device dialog subtitle description", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dies hat zur Folge, dass du mit diesem Gerät nicht mehr auf dein Privacy-Pro-Abonnement zugreifen kannst. Dein Abonnement wird dadurch nicht gekündigt; es bleibt auf deinen anderen Geräten aktiv." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ya no podrás acceder a tu suscripción a Privacy Pro en este dispositivo. Esto no cancelará tu suscripción, que seguirá activa en tus otros dispositivos." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vous ne pourrez plus accéder à votre abonnement Privacy Pro sur cet appareil. Cela n'annulera pas votre abonnement et il restera actif sur vos autres appareils." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non potrai più accedere al tuo abbonamento Privacy Pro su questo dispositivo. Questo non annulla il tuo abbonamento, che rimane attivo sugli altri tuoi dispositivi." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je hebt niet langer toegang tot je Privacy Pro-abonnement op dit apparaat. Je abonnement wordt niet opgezegd en het blijft actief op je andere apparaten." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nie będziesz już mieć dostępu do subskrypcji Privacy Pro na tym urządzeniu. Nie spowoduje to anulowania Twojej subskrypcji, która pozostanie aktywna na pozostałych urządzeniach." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Perderás acesso à subscrição Privacy Pro neste dispositivo. Isto não irá cancelar a tua subscrição, e ela permanecerá ativa nos teus outros dispositivos." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Вы утратите доступ к возможностям тарифа Privacy Pro на этом устройстве. Сама же подписка не отменяется и по-прежнему будет работать на других устройствах." + } + } + } + }, + "subscription.dialog.remove.title" : { + "comment" : "Remove subscription from device dialog title", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Von diesem Gerät entfernen?" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Remove from this device?" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¿Eliminar de este dispositivo?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer de cet appareil ?" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rimuovere da questo dispositivo?" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verwijderen van dit apparaat?" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usunąć z tego urządzenia?" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remover deste dispositivo?" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Удалить с этого устройства?" + } + } + } + }, + "subscription.modal.enter.email.button" : { + "comment" : "Button for opening page to enter email address", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "E-Mail-Adresse eingeben" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Enter Email" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introducir correo electrónico" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Saisir votre e-mail" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Inserisci l'e-mail" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "E-mailadres invoeren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wpisz adres e-mail" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Introduzir E-mail" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ввести адрес эл. почты" + } + } + } + }, + "subscription.modal.restore.purchase.button" : { + "comment" : "Button for restoring past subscription purchase", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Kauf wiederherstellen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Restore Purchase" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurar compra" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rétablir l'achat" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ripristina acquisto" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aankoop herstellen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Przywróć zakup" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Restaurar Compra" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Восстановить покупку" + } + } + } + }, + "subscription.preferences.button.view.plans" : { + "comment" : "Button for viewing subscription plans on expired subscription", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tarife anzeigen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "View Plans" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ver planes" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voir les forfaits" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Visualizza i piani" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnementen bekijken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyświetl plany" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ver Planos" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Просмотреть тарифы" + } + } + } + }, + "subscription.preferences.feedback.button" : { + "comment" : "Title for the subscription feedback button", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rückmeldung senden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Send Feedback" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar comentarios" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer vos remarques" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invia feedback" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verstuur feedback" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyślij opinię" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar comentário" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отправить отзыв" + } + } + } + }, + "subscription.preferences.feedback.caption" : { + "comment" : "Caption for the subscription feedback section", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hilf mit, Privacy Pro zu verbessern. Dein Feedback ist wichtig für uns. Du kannst uns gerne Probleme melden oder uns allgemeines Feedback geben." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Help improve Privacy Pro. Your feedback matters to us. Feel free to report any issues or provide general feedback." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ayuda a mejorar Privacy Pro. Tu opinión nos importa. No dudes en informar de cualquier incidencia o dar tu opinión general." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Participez à l'amélioration de Privacy Pro. Nous accordons de l'importance à votre avis. N'hésitez pas à signaler tout problème rencontré ou à faire part de vos commentaires d'ordre général." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Contribuisci a migliorare Privacy Pro. La tua opinione è importante per noi. Non esitare a segnalare eventuali problemi o a esprimere commenti di carattere generale." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Help ons Privacy Pro te verbeteren. We vinden jouw feedback belangrijk. Voel je vrij om eventuele problemen te melden of algemene feedback te geven." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pomóż ulepszyć Privacy Pro. Twoja opinia jest dla nas ważna. Zachęcamy do zgłaszania wszelkich problemów i przekazywania ogólnych opinii." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajuda a melhorar o Privacy Pro. A tua opinião é importante para nós. Não hesites em comunicar quaisquer problemas ou dar feedback geral." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Помогите нам улучшить тариф Privacy Pro. Мы очень ценим ваше мнение, поэтому не стесняйтесь отправлять замечания о проблемах и комментарии общего характера." + } + } + } + }, + "subscription.preferences.feedback.title" : { + "comment" : "Title for the subscription feedback section", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rückmeldung senden" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Send Feedback" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar comentarios" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Envoyer vos remarques" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Invia feedback" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verstuur feedback" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyślij opinię" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Enviar comentário" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Отправить отзыв" + } + } + } + }, + "subscription.preferences.i.have.a.subscription.button" : { + "comment" : "Button enabling user to activate a subscription user bought earlier or on another device", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ich habe ein Abonnement" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "I Have a Subscription" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tengo una suscripción" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "J'ai un abonnement" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ho un abbonamento" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ik heb een abonnement" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Mam subskrypcję" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tenho uma Subscrição" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "У меня уже есть подписка" + } + } + } + }, + "subscription.preferences.manage.subscription.button" : { + "comment" : "Button to manage subscription", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement verwalten" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Manage Subscription" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gestionar suscripción" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gérer l'abonnement" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gestisci l'abbonamento" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnement beheren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zarządzaj subskrypcją" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gerir Subscrição" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Управление подпиской" + } + } + } + }, + "subscription.preferences.purchase.button" : { + "comment" : "Button to open a page where user can learn more and purchase the subscription", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Pro kaufen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Get Privacy Pro" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Conseguir Privacy Pro" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obtenir Privacy Pro" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ottieni Privacy Pro" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Pro kopen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Uzyskaj Privacy Pro" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obter Privacy Pro" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Перейти на Privacy Pro" + } + } + } + }, + "subscription.preferences.remove.from.this.device.button" : { + "comment" : "Button to remove subscription from this device", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Von diesem Gerät entfernen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Remove From This Device" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Eliminar de este dispositivo" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Supprimer de cet appareil" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rimuovi da questo dispositivo" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verwijderen van dit apparaat" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usuń z tego urządzenia" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Remover Deste Dispositivo" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Удалить с этого устройства" + } + } + } + }, + "subscription.preferences.services.identity.theft.restoration.button.title" : { + "comment" : "Title for the Identity Theft Restoration service button to open its settings", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ansehen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "View" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ver" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voir" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Visualizza" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Weergeven" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wyświetl" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Visualizar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Вид" + } + } + } + }, + "subscription.preferences.services.identity.theft.restoration.description" : { + "comment" : "Description for the Identity Theft Restoration service listed in the subscription preferences pane", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hilfe bei der Wiederherstellung gestohlener Konten und finanzieller Verluste im Falle eines Identitätsdiebstahls." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Get help restoring stolen accounts and financial losses in the event of identity theft." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obtén ayuda para restaurar cuentas robadas y pérdidas económicas en caso de robo de identidad." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obtenez de l'aide pour restituer les comptes volés et les pertes financières en cas d'usurpation d'identité." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ottieni aiuto per ripristinare gli account rubati e le perdite finanziarie in caso di furto di identità." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Krijg hulp bij het herstellen van gestolen accounts en financiële verliezen in geval van identiteitsdiefstal." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otrzymaj pomoc dotyczącą przywracania skradzionych kont i rekompensaty strat finansowych w przypadku kradzieży tożsamości." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obtém ajuda para restaurar contas roubadas e perdas financeiras em caso de roubo de identidade." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Помощь по возврату учетных записей и денежных средств в случае «кражи личности»." + } + } + } + }, + "subscription.preferences.services.identity.theft.restoration.title" : { + "comment" : "Title for the Identity Theft Restoration service listed in the subscription preferences pane", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Identity Theft Restoration" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Identity Theft Restoration" + } + } + } + }, + "subscription.preferences.services.personal.information.removal.button.title" : { + "comment" : "Title for the Personal Information Removal service button to open its settings", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Öffnen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Open" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apri" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Openen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aberto" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Открыть" + } + } + } + }, + "subscription.preferences.services.personal.information.removal.description" : { + "comment" : "Description for the Personal Information Removal service listed in the subscription preferences pane", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Finde deine personenbezogenen Daten auf Websites, die diese speichern und verkaufen, und entferne sie." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Find and remove your personal information from sites that store and sell it." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Busca y elimina tu información personal de los sitios que la almacenan y venden." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trouvez vos informations personnelles et supprimez-les des sites qui les conservent et les vendent." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trova e rimuovi le tue informazioni personali dai siti che le conservano e le vendono." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zoek en verwijder je persoonlijke gegevens van websites die deze opslaan en verkopen." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Znajdź i usuń swoje dane osobowe z witryn, które je przechowują i sprzedają." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Encontra e remove as tuas informações pessoais de sites que as armazenam e vendem." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Поиск и удаление личных данных с сайтов, которые хранят и продают информацию." + } + } + } + }, + "subscription.preferences.services.personal.information.removal.title" : { + "comment" : "Title for the Personal Information Removal service listed in the subscription preferences pane", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Personal Information Removal" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Personal Information Removal" + } + } + } + }, + "subscription.preferences.services.vpn.button.title" : { + "comment" : "Title for the VPN service button to open its settings", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Öffnen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Open" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abrir" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ouvrir" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Apri" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Openen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Otwórz" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aberto" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Открыть" + } + } + } + }, + "subscription.preferences.services.vpn.description" : { + "comment" : "Description for the VPN service listed in the subscription preferences pane", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Vollständiger Geräteschutz mit dem auf Geschwindigkeit und Sicherheit ausgelegten VPN." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Full-device protection with the VPN built for speed and security." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Protección completa del dispositivo con la VPN diseñada para la velocidad y seguridad." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Protection complète de votre appareil avec le VPN conçu pour la vitesse et la sécurité." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Protezione completa del dispositivo con la VPN progettata per velocità e sicurezza." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Volledige apparaatbeveiliging met een VPN dat is ontwikkeld voor snelheid en veiligheid." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pełna ochrona urządzenia dzięki sieci VPN zapewniającej szybkość i bezpieczeństwo." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Proteção completa do dispositivo com a VPN criada para velocidade e segurança." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Полная защита устройства с помощью VPN. Скорость и безопасность в одном флаконе." + } + } + } + }, + "subscription.preferences.services.vpn.title" : { + "comment" : "Title for the VPN service listed in the subscription preferences pane", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "VPN" + } + }, + "en-US" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "VPN" + } + } + } + }, + "subscription.preferences.subscription.activate.add.email.button" : { + "comment" : "Button for adding email address to subscription", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "E-Mail-Adresse hinzufügen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Add Email" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Añadir correo electrónico" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajouter un e-mail" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aggiungi e-mail" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "E-mailadres toevoegen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dodaj adres e-mail" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Adicionar E-mail" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Добавить адрес эл. почты" + } + } + } + }, + "subscription.preferences.subscription.activate.edit.email.button" : { + "comment" : "Button for editing email address added to subscription", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bearbeiten" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Edit" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Editar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifica" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bewerken" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Edytuj" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Editar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Правка" + } + } + } + }, + "subscription.preferences.subscription.activate.no.email.caption" : { + "comment" : "Caption for the subscription preferences activate section when email is not added to subscription", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Füge eine optionale E-Mail-Adresse zu deinem Abo hinzu oder verwende deine Apple-ID, um auf anderen Geräten auf Privacy Pro zuzugreifen. [Mehr erfahren](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Add an optional email to your subscription or use your Apple ID to access Privacy Pro on other devices. [Learn more](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Añade un correo electrónico opcional a tu suscripción o usa tu ID de Apple para acceder a Privacy Pro en otros dispositivos. [Más información](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajoutez un e-mail facultatif à votre abonnement ou utilisez votre identifiant Apple pour accéder à Privacy Pro sur d'autres appareils. [En savoir plus](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aggiungi un'e-mail opzionale al tuo abbonamento o usa il tuo ID Apple per accedere a Privacy Pro su altri dispositivi. [Scopri di più](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Voeg een optioneel e-mailadres toe aan je abonnement of gebruik je Apple-ID om toegang te krijgen tot Privacy Pro op andere apparaten. [Meer informatie](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dodaj opcjonalny adres e-mail do subskrypcji lub użyj Apple ID, aby uzyskać dostęp do Privacy Pro na innych urządzeniach. [Więcej informacji](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Adiciona um e-mail opcional à tua subscrição ou usa o teu Apple ID para acederes ao Privacy Pro noutros dispositivos. [Sabe mais](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Привяжите к подписке дополнительный адрес электронной почты, чтобы пользоваться преимуществами тарифа Privacy Pro на других устройствах с тем же Apple ID. [Подробнее...](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + } + } + }, + "subscription.preferences.subscription.activate.title" : { + "comment" : "Title for the subscription preferences activate section", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Auf anderen Geräten aktivieren" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Activate on Other Devices" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activar en otros dispositivos" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activer sur d'autres appareils" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Attiva sugli altri dispositivi" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Activeren op andere apparaten" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aktywuj na innych urządzeniach" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ativar Noutros Dispositivos" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Активация подписки на других устройствах" + } + } + } + }, + "subscription.preferences.subscription.activate.with.email.caption" : { + "comment" : "Caption for the subscription preferences activate section when email is added to subscription", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Verwende diese E-Mail-Adresse, um dein Abonnement in der DuckDuckGo-App unter Einstellungen > Privacy Pro auf deinen anderen Geräten zu aktivieren. [Mehr erfahren](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Use this email to activate your subscription in Settings > Privacy Pro in the DuckDuckGo app on your other devices. [Learn more](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utiliza este correo electrónico para activar tu suscripción en Configuración > Privacy Pro en la aplicación DuckDuckGo en tus otros dispositivos. [Más información](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utilisez cet e-mail pour activer votre abonnement dans Réglages > Privacy Pro dans l'application DuckDuckGo sur vos autres appareils. [En savoir plus](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Usa questa e-mail per attivare il tuo abbonamento in Impostazioni > Privacy Pro nell'app DuckDuckGo sugli altri tuoi dispositivi. [Scopri di più](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Gebruik deze e-mail om je abonnement te activeren in 'Instellingen' > 'Privacy Pro' in de DuckDuckGo-app op je andere apparaten. [Meer informatie](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Użyj tego adresu e-mail, aby aktywować subskrypcję poprzez wybór opcji Ustawienia > Privacy Pro w aplikacji DuckDuckGo na innych urządzeniach. [Więcej informacji](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Utiliza este e-mail para ativares a tua subscrição em Definições > Privacy Pro na aplicação DuckDuckGo nos teus restantes dispositivos. [Sabe mais](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Используйте этот адрес для активации подписки в разделе «Настройки > Privacy Pro» в приложении DuckDuckGo на других устройствах. [Подробнее...](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)" + } + } + } + }, + "subscription.preferences.subscription.active.expiring.monthly.caption" : { + "comment" : "Caption for the subscription preferences pane when the monthly subscription is active and will expire, the parameter is date of expiry.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dein Monatsabonnement läuft am %@ ab." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your monthly subscription expires on %@." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tu suscripción mensual caduca el %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre abonnement mensuel expire le %@." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il tuo abbonamento mensile scade il %@." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je maandabonnement verloopt op %@." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twoja miesięczna subskrypcja wygasa w dniu %@." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tua subscrição mensal expira a %@." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ваша ежемесячная подписка завершится %@." + } + } + } + }, + "subscription.preferences.subscription.active.expiring.unknown.caption" : { + "comment" : "Caption for the subscription preferences pane when the subscription is active and will expire, the parameter is date of expiry.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dein Abonnement läuft am %@ ab." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your subscription expires on %@." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tu suscripción caduca el %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre abonnement expire le %@." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il tuo abbonamento scade il %@." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je abonnement verloopt op %@." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twoja subskrypcja wygasa w dniu %@." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tua subscrição expira a %@." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ваша подписка завершится %@." + } + } + } + }, + "subscription.preferences.subscription.active.expiring.yearly.caption" : { + "comment" : "Caption for the subscription preferences pane when the annual subscription is active and will expire, the parameter is date of expiry.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dein Jahresabonnement läuft am %@ ab." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your annual subscription expires on %@." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tu suscripción anual caduca el %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre abonnement annuel expire le %@." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il tuo abbonamento annuale scade il %@." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je jaarabonnement verloopt op %@." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twoja roczna subskrypcja wygasa w dniu %@." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tua subscrição anual expira a %@." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ваша годовая подписка завершится %@." + } + } + } + }, + "subscription.preferences.subscription.active.renewing.monthly.caption" : { + "comment" : "Caption for the subscription preferences pane when the monthly subscription is active and will renew, the parameter is date of renewal.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dein monatliches Abonnement verlängert sich am %@." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your monthly subscription renews on %@." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tu suscripción mensual se renueva el %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre abonnement mensuel sera renouvelé le %@." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il tuo abbonamento mensile si rinnova il %@." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je maandabonnement wordt verlengd op %@." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twoja miesięczna subskrypcja odnawia się w dniu %@." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tua subscrição mensal renova-se a %@." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ваша ежемесячная подписка продлится %@." + } + } + } + }, + "subscription.preferences.subscription.active.renewing.unknown.caption" : { + "comment" : "Caption for the subscription preferences pane when the subscription is active and will renew, the parameter is date of renewal.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dein Abonnement verlängert sich am %@." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your subscription renews on %@." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tu suscripción se renueva el %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre abonnement sera renouvelé le %@." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il tuo abbonamento si rinnova il %@." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je abonnement wordt verlengd op %@." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twoja subskrypcja odnawia się w dniu %@." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tua subscrição renova-se a %@." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ваша подписка продлится %@." + } + } + } + }, + "subscription.preferences.subscription.active.renewing.yearly.caption" : { + "comment" : "Caption for the subscription preferences pane when the annual subscription is active and will renew, the parameter is date of renewal.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dein Jahresabonnement verlängert sich am %@." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your annual subscription renews on %@." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tu suscripción anual se renueva el %@." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre abonnement annuel sera renouvelé le %@." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il tuo abbonamento annuale si rinnova il %@." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je jaarlijkse abonnement wordt verlengd op %@." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twoja roczna subskrypcja odnawia się w dniu %@." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tua subscrição anual renova-se a %@." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ваша годовая подписка продлится %@." + } + } + } + }, + "subscription.preferences.subscription.expired.caption" : { + "comment" : "Caption for the subscription preferences pane when the subscription activation is pending\nCaption for the subscription preferences pane when the subscription has expired. The parameter is date of expiry.", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonniere erneut, um Privacy Pro weiter zu nutzen." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Subscribe again to continue using Privacy Pro." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suscríbete de nuevo para seguir usando Privacy Pro." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnez-vous à nouveau pour continuer à utiliser Privacy Pro." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Iscriviti di nuovo per continuare a usare Privacy Pro." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonneer je opnieuw om Privacy Pro te blijven gebruiken." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wznów subskrypcję, aby nadal korzystać z Privacy Pro." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Subscreve novamente para continuares a utilizar o Privacy Pro." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Чтобы пользоваться возможностями Privacy Pro, оформите подписку заново." + } + } + } + }, + "subscription.preferences.subscription.footer.caption" : { + "comment" : "Caption for the subscription preferences pane footer", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erhalte Antworten auf häufig gestellte Fragen oder kontaktiere den Privacy-Pro-Support über unsere Hilfeseiten." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Get answers to frequently asked questions or contact Privacy Pro support from our help pages." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obtén respuestas a las preguntas más frecuentes o ponte en contacto con el servicio de asistencia de Privacy Pro en nuestras páginas de ayuda." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trouvez les réponses aux questions fréquemment posées ou contactez l'assistance de Privacy Pro sur nos pages d'aide." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ottieni risposte alle domande frequenti o contatta l'assistenza di Privacy Pro dalle nostre pagine di assistenza." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Krijg antwoorden op veelgestelde vragen of neem contact op met de klantenservice van Privacy Pro via onze helppagina's." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Uzyskaj odpowiedzi na często zadawane pytania lub skontaktuj się z pomocą techniczną Privacy Pro na naszych stronach pomocy." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obtém respostas a perguntas frequentes ou contacta o apoio técnico do Privacy Pro a partir das nossas páginas de ajuda." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "На страницах справочного раздела вы найдете ответы на часто задаваемые вопросы, а также контактную информацию службы поддержки Privacy Pro." + } + } + } + }, + "subscription.preferences.subscription.footer.title" : { + "comment" : "Title for the subscription preferences pane footer", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Brauchst du Hilfe mit Privacy Pro?" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Need help with Privacy Pro?" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "¿Necesitas ayuda con Privacy Pro?" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Besoin d'aide pour l'utilisation de Privacy Pro ?" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hai bisogno di aiuto con Privacy Pro?" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Hulp nodig met Privacy Pro?" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Potrzebujesz pomocy z Privacy Pro?" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Precisas de ajuda com o Privacy Pro?" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Нужна помощь с Privacy Pro?" + } + } + } + }, + "subscription.preferences.subscription.help.footer.caption" : { + "comment" : "Caption for the subscription preferences pane footer", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Erhalte Antworten auf häufig gestellte Fragen oder kontaktiere den Privacy-Pro-Support über unsere Hilfeseiten. Die Verfügbarkeit von Funktionen variiert je nach Land." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Get answers to frequently asked questions or contact Privacy Pro support from our help pages. Feature availability varies by country." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obtén respuestas a las preguntas más frecuentes o ponte en contacto con el servicio de asistencia de Privacy Pro en nuestras páginas de ayuda. La disponibilidad de las funciones varía según el país." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trouvez les réponses aux questions fréquemment posées ou contactez l'assistance de Privacy Pro sur nos pages d'aide. La disponibilité des fonctionnalités varie selon les pays." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ottieni risposte alle domande frequenti o contatta l'assistenza di Privacy Pro dalle nostre pagine di assistenza. La disponibilità delle funzioni varia in base al paese." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Krijg antwoorden op veelgestelde vragen of neem contact op met de klantenservice van Privacy Pro via onze hulppagina's. De beschikbaarheid van functies verschilt per land." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Uzyskaj odpowiedzi na często zadawane pytania lub skontaktuj się z pomocą techniczną Privacy Pro na naszych stronach pomocy. Dostępność funkcji różni się w zależności od kraju." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Obtém respostas a perguntas frequentes ou contacta o apoio técnico do Privacy Pro a partir das nossas páginas de ajuda. A disponibilidade das funcionalidades varia consoante o país." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "На страницах справки вы найдете ответы на распространенные вопросы, а также контакты поддержки Privacy Pro. Доступность функций зависит от страны." + } + } + } + }, + "subscription.preferences.subscription.inactive.header" : { + "comment" : "Header for the subscription preferences pane when the subscription is inactive", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Schütze deine Verbindung und Identität mit Privacy Pro" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Protect your connection and identity with Privacy Pro" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Protege tu conexión e identidad con Privacy Pro" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Protégez votre connexion et votre identité avec Privacy Pro" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Proteggi la tua connessione e la tua identità con Privacy Pro" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bescherm je verbinding en identiteit met Privacy Pro" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chroń połączenie i tożsamość dzięki subskrypcji Privacy Pro" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Protege a tua ligação e identidade com o Privacy Pro" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Тариф Privacy Pro для защиты соединения и личных данных" + } + } + } + }, + "subscription.preferences.subscription.inactive.row.caption" : { + "comment" : "Caption for the subscription preferences pane when the subscription is inactive", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Zwei Premium-Schutzmaßnahmen in einem Abonnement." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Two premium protections in one subscription." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dos protecciones prémium en una sola suscripción." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Deux protections haut de gamme dans un seul abonnement." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Due protezioni premium in un unico abbonamento." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twee premiumbeveiligingen in één abonnement." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dwa zabezpieczenia premium w jednej subskrypcji." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Duas proteções premium numa só subscrição." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Два вида премиум-защиты по одной подписке." + } + } + } + }, + "subscription.preferences.subscription.inactive.us.caption" : { + "comment" : "Caption for the subscription preferences pane when the subscription is inactive", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Drei Premium-Schutzmaßnahmen in einem Abonnement." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Three premium protections in one subscription." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tres protecciones premium en una sola suscripción." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trois protections haut de gamme en un seul abonnement." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tre protezioni premium in un unico semplice abbonamento." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Drie premium beveiligingen in één abonnement." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trzy zabezpieczenia premium w jednej subskrypcji." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Três proteções premium numa só subscrição." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Три вида премиум-защиты по одной подписке." + } + } + } + }, + "subscription.preferences.subscription.pending.caption" : { + "comment" : "Caption for the subscription preferences pane when the subscription activation is pending", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Das dauert länger als üblich. Bitte versuche es später noch einmal." + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "This is taking longer than usual. Please check back later." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Está tardando más de lo normal. Vuelve a comprobarlo más tarde." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Cela prend plus de temps que la normale ; veuillez revenir plus tard." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "L'operazione sta richiedendo più tempo del solito. Controlla più tardi." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dit duurt langer dan normaal. Kom later nog eens terug." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Trwa to dłużej niż zwykle. Sprawdź później." + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Este processo está a demorar mais tempo do que o habitual. Verifica mais tarde." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Этот процесс занимает больше времени, чем обычно. Загляните сюда позже." + } + } + } + }, + "subscription.preferences.subscription.pending.header" : { + "comment" : "Header for the subscription preferences pane when the subscription activation is pending", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Dein Abonnement wird aktiviert" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Your subscription is being activated" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se está activando tu suscripción" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Votre abonnement est en cours d’activation" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Il tuo abbonamento è in fase di attivazione" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Je abonnement wordt geactiveerd" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Twoja subskrypcja jest aktywowana" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "A tua subscrição está a ser ativada" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ваша подписка активируется" + } + } + } + }, + "subscription.preferences.subscription.settings.title" : { + "comment" : "Title for the subscription preferences settings section", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnementeinstellungen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Subscription Settings" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ajustes de suscripción" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Paramètres d'abonnement" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Impostazioni dell'abbonamento" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Abonnementinstellingen" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ustawienia subskrypcji" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Definições de Subscrição" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Настройки подписки" + } + } + } + }, + "subscription.preferences.title" : { + "comment" : "Title for the preferences pane for the subscription", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Pro" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Privacy Pro" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Pro" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Pro" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Pro" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Pro" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Pro" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Pro" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Privacy Pro" + } + } + } + }, + "subscription.preferences.update.plan.or.cancel.button" : { + "comment" : "Button to update subscription plan or cancel", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tarif aktualisieren oder kündigen" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "Update Plan or Cancel" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Actualizar el plan o cancelar" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Modifier le forfait ou le résilier" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aggiorna o o annulla il piano" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Plan bijwerken of annuleren" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aktualizuj lub anuluj plan" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Atualizar Plano ou Cancelar" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Изменить или отменить подписку" + } + } + } + }, + "subscription.preferences.view.faqs.button" : { + "comment" : "Button to open page for FAQs", + "extractionState" : "extracted_with_value", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "F&A und Support" + } + }, + "en" : { + "stringUnit" : { + "state" : "new", + "value" : "FAQs and Support" + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Preguntas frecuentes y asistencia" + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "FAQ et assistance" + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Domande frequenti e assistenza" + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Veelgestelde vragen en ondersteuning" + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Często zadawane pytania i pomoc techniczna" + } + }, + "pt" : { + "stringUnit" : { + "state" : "translated", + "value" : "Perguntas Frequentes e Apoio Técnico" + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "ЧаВо и поддержка" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/UserText.swift b/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/UserText.swift index 17480c4234..a0c9d163a0 100644 --- a/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/UserText.swift +++ b/LocalPackages/SubscriptionUI/Sources/SubscriptionUI/UserText.swift @@ -22,129 +22,164 @@ import Subscription enum UserText { // MARK: - Subscription preferences - static let preferencesTitle = NSLocalizedString("subscription.preferences.title", value: "Privacy Pro", comment: "Title for the preferences pane for the subscription") + static let preferencesTitle = NSLocalizedString("subscription.preferences.title", bundle: Bundle.module, value: "Privacy Pro", comment: "Title for the preferences pane for the subscription") - static let vpnServiceTitle = NSLocalizedString("subscription.preferences.services.vpn.title", value: "VPN", comment: "Title for the VPN service listed in the subscription preferences pane") - static let vpnServiceDescription = NSLocalizedString("subscription.preferences.services.vpn.description", value: "Full-device protection with the VPN built for speed and security.", comment: "Description for the VPN service listed in the subscription preferences pane") - static let vpnServiceButtonTitle = NSLocalizedString("subscription.preferences.services.vpn.button.title", value: "Open", comment: "Title for the VPN service button to open its settings") + static let vpnServiceTitle = NSLocalizedString("subscription.preferences.services.vpn.title", bundle: Bundle.module, value: "VPN", comment: "Title for the VPN service listed in the subscription preferences pane") + static let vpnServiceDescription = NSLocalizedString("subscription.preferences.services.vpn.description", bundle: Bundle.module, value: "Full-device protection with the VPN built for speed and security.", comment: "Description for the VPN service listed in the subscription preferences pane") + static let vpnServiceButtonTitle = NSLocalizedString("subscription.preferences.services.vpn.button.title", bundle: Bundle.module, value: "Open", comment: "Title for the VPN service button to open its settings") - static let personalInformationRemovalServiceTitle = NSLocalizedString("subscription.preferences.services.personal.information.removal.title", value: "Personal Information Removal", comment: "Title for the Personal Information Removal service listed in the subscription preferences pane") - static let personalInformationRemovalServiceDescription = NSLocalizedString("subscription.preferences.services.personal.information.removal.description", value: "Find and remove your personal information from sites that store and sell it.", comment: "Description for the Personal Information Removal service listed in the subscription preferences pane") - static let personalInformationRemovalServiceButtonTitle = NSLocalizedString("subscription.preferences.services.personal.information.removal.button.title", value: "Open", comment: "Title for the Personal Information Removal service button to open its settings") + static let personalInformationRemovalServiceTitle = NSLocalizedString("subscription.preferences.services.personal.information.removal.title", bundle: Bundle.module, value: "Personal Information Removal", comment: "Title for the Personal Information Removal service listed in the subscription preferences pane") + static let personalInformationRemovalServiceDescription = NSLocalizedString("subscription.preferences.services.personal.information.removal.description", bundle: Bundle.module, value: "Find and remove your personal information from sites that store and sell it.", comment: "Description for the Personal Information Removal service listed in the subscription preferences pane") + static let personalInformationRemovalServiceButtonTitle = NSLocalizedString("subscription.preferences.services.personal.information.removal.button.title", bundle: Bundle.module, value: "Open", comment: "Title for the Personal Information Removal service button to open its settings") - static let identityTheftRestorationServiceTitle = NSLocalizedString("subscription.preferences.services.identity.theft.restoration.title", value: "Identity Theft Restoration", comment: "Title for the Identity Theft Restoration service listed in the subscription preferences pane") - static let identityTheftRestorationServiceDescription = NSLocalizedString("subscription.preferences.services.identity.theft.restoration.description", value: "Get help restoring stolen accounts and financial losses in the event of identity theft.", comment: "Description for the Identity Theft Restoration service listed in the subscription preferences pane") - static let identityTheftRestorationServiceButtonTitle = NSLocalizedString("subscription.preferences.services.identity.theft.restoration.button.title", value: "View", comment: "Title for the Identity Theft Restoration service button to open its settings") + static let identityTheftRestorationServiceTitle = NSLocalizedString("subscription.preferences.services.identity.theft.restoration.title", bundle: Bundle.module, value: "Identity Theft Restoration", comment: "Title for the Identity Theft Restoration service listed in the subscription preferences pane") + static let identityTheftRestorationServiceDescription = NSLocalizedString("subscription.preferences.services.identity.theft.restoration.description", bundle: Bundle.module, value: "Get help restoring stolen accounts and financial losses in the event of identity theft.", comment: "Description for the Identity Theft Restoration service listed in the subscription preferences pane") + static let identityTheftRestorationServiceButtonTitle = NSLocalizedString("subscription.preferences.services.identity.theft.restoration.button.title", bundle: Bundle.module, value: "View", comment: "Title for the Identity Theft Restoration service button to open its settings") // MARK: Preferences activate section - static let activateSectionTitle = NSLocalizedString("subscription.preferences.subscription.activate.title", value: "Activate on Other Devices", comment: "Title for the subscription preferences activate section") - static let activateSectionNoEmailCaption = NSLocalizedString("subscription.preferences.subscription.activate.no.email.caption", value: "Add an optional email to your subscription or use your Apple ID to access Privacy Pro on other devices. [Learn more](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)", comment: "Caption for the subscription preferences activate section when email is not added to subscription") - static let activateSectionWithEmailCaption = NSLocalizedString("subscription.preferences.subscription.activate.with.email.caption", value: "Use this email to activate your subscription in Settings > Privacy Pro in the DuckDuckGo app on your other devices. [Learn more](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)", comment: "Caption for the subscription preferences activate section when email is added to subscription") - static let addEmailButton = NSLocalizedString("subscription.preferences.subscription.activate.add.email.button", value: "Add Email", comment: "Button for adding email address to subscription") - static let editEmailButton = NSLocalizedString("subscription.preferences.subscription.activate.edit.email.button", value: "Edit", comment: "Button for editing email address added to subscription") + static let activateSectionTitle = NSLocalizedString("subscription.preferences.subscription.activate.title", bundle: Bundle.module, value: "Activate on Other Devices", comment: "Title for the subscription preferences activate section") + static let activateSectionNoEmailCaption = NSLocalizedString("subscription.preferences.subscription.activate.no.email.caption", bundle: Bundle.module, value: "Add an optional email to your subscription or use your Apple ID to access Privacy Pro on other devices. [Learn more](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)", comment: "Caption for the subscription preferences activate section when email is not added to subscription") + static let activateSectionWithEmailCaption = NSLocalizedString("subscription.preferences.subscription.activate.with.email.caption", bundle: Bundle.module, value: "Use this email to activate your subscription in Settings > Privacy Pro in the DuckDuckGo app on your other devices. [Learn more](https://duckduckgo.com/duckduckgo-help-pages/privacy-pro/adding-email/)", comment: "Caption for the subscription preferences activate section when email is added to subscription") + static let addEmailButton = NSLocalizedString("subscription.preferences.subscription.activate.add.email.button", bundle: Bundle.module, value: "Add Email", comment: "Button for adding email address to subscription") + static let editEmailButton = NSLocalizedString("subscription.preferences.subscription.activate.edit.email.button", bundle: Bundle.module, value: "Edit", comment: "Button for editing email address added to subscription") // MARK: Preferences settings section - static let settingsSectionTitle = NSLocalizedString("subscription.preferences.subscription.settings.title", value: "Subscription Settings", comment: "Title for the subscription preferences settings section") + static let settingsSectionTitle = NSLocalizedString("subscription.preferences.subscription.settings.title", bundle: Bundle.module, value: "Subscription Settings", comment: "Title for the subscription preferences settings section") // MARK: Preferences footer - static let preferencesSubscriptionFooterTitle = NSLocalizedString("subscription.preferences.subscription.footer.title", value: "Need help with Privacy Pro?", comment: "Title for the subscription preferences pane footer") - static let preferencesSubscriptionFooterCaption = NSLocalizedString("subscription.preferences.subscription.footer.caption", value: "Get answers to frequently asked questions or contact Privacy Pro support from our help pages.", comment: "Caption for the subscription preferences pane footer") - static let preferencesSubscriptionHelpFooterCaption = NSLocalizedString("subscription.preferences.subscription.help.footer.caption", value: "Get answers to frequently asked questions or contact Privacy Pro support from our help pages. Feature availability varies by country.", comment: "Caption for the subscription preferences pane footer") - static let viewFaqsButton = NSLocalizedString("subscription.preferences.view.faqs.button", value: "FAQs and Support", comment: "Button to open page for FAQs") - static let preferencesSubscriptionFeedbackTitle = NSLocalizedString("subscription.preferences.feedback.title", value: "Send Feedback", comment: "Title for the subscription feedback section") - static let preferencesSubscriptionFeedbackCaption = NSLocalizedString("subscription.preferences.feedback.caption", value: "Help improve Privacy Pro. Your feedback matters to us. Feel free to report any issues or provide general feedback.", comment: "Caption for the subscription feedback section") - static let preferencesSubscriptionFeedbackButton = NSLocalizedString("subscription.preferences.feedback.button", value: "Send Feedback", comment: "Title for the subscription feedback button") - - static func preferencesSubscriptionActiveRenewCaption(period: String, formattedDate: String) -> String { - let localized = NSLocalizedString("subscription.preferences.subscription.active.renew.caption", value: "Your %@ Privacy Pro subscription renews on %@.", comment: "Caption for the subscription preferences pane when the subscription is active and will renew. First parameter is renewal period (monthly/yearly). Second parameter is date.") - return String(format: localized, period, formattedDate) + static let preferencesSubscriptionFooterTitle = NSLocalizedString("subscription.preferences.subscription.footer.title", bundle: Bundle.module, value: "Need help with Privacy Pro?", comment: "Title for the subscription preferences pane footer") + static let preferencesSubscriptionFooterCaption = NSLocalizedString("subscription.preferences.subscription.footer.caption", bundle: Bundle.module, value: "Get answers to frequently asked questions or contact Privacy Pro support from our help pages.", comment: "Caption for the subscription preferences pane footer") + static let preferencesSubscriptionHelpFooterCaption = NSLocalizedString("subscription.preferences.subscription.help.footer.caption", bundle: Bundle.module, value: "Get answers to frequently asked questions or contact Privacy Pro support from our help pages. Feature availability varies by country.", comment: "Caption for the subscription preferences pane footer") + static let viewFaqsButton = NSLocalizedString("subscription.preferences.view.faqs.button", bundle: Bundle.module, value: "FAQs and Support", comment: "Button to open page for FAQs") + static let preferencesSubscriptionFeedbackTitle = NSLocalizedString("subscription.preferences.feedback.title", bundle: Bundle.module, value: "Send Feedback", comment: "Title for the subscription feedback section") + static let preferencesSubscriptionFeedbackCaption = NSLocalizedString("subscription.preferences.feedback.caption", bundle: Bundle.module, value: "Help improve Privacy Pro. Your feedback matters to us. Feel free to report any issues or provide general feedback.", comment: "Caption for the subscription feedback section") + static let preferencesSubscriptionFeedbackButton = NSLocalizedString("subscription.preferences.feedback.button", bundle: Bundle.module, value: "Send Feedback", comment: "Title for the subscription feedback button") + + static func preferencesSubscriptionRenewingCaption(billingPeriod: Subscription.BillingPeriod, formattedDate: String) -> String { + let localized: String + + switch billingPeriod { + case .monthly: + localized = NSLocalizedString("subscription.preferences.subscription.active.renewing.monthly.caption", + bundle: Bundle.module, + value: "Your monthly subscription renews on %@.", + comment: "Caption for the subscription preferences pane when the monthly subscription is active and will renew, the parameter is date of renewal.") + case .yearly: + localized = NSLocalizedString("subscription.preferences.subscription.active.renewing.yearly.caption", + bundle: Bundle.module, + value: "Your annual subscription renews on %@.", + comment: "Caption for the subscription preferences pane when the annual subscription is active and will renew, the parameter is date of renewal.") + case .unknown: + localized = NSLocalizedString("subscription.preferences.subscription.active.renewing.unknown.caption", + bundle: Bundle.module, + value: "Your subscription renews on %@.", + comment: "Caption for the subscription preferences pane when the subscription is active and will renew, the parameter is date of renewal.") + } + + return String(format: localized, formattedDate) } - static func preferencesSubscriptionActiveExpireCaption(period: String, formattedDate: String) -> String { - let localized = NSLocalizedString("subscription.preferences.subscription.active.expire.caption", value: "Your %@ Privacy Pro subscription expires on %@.", comment: "Caption for the subscription preferences pane when the subscription is active but will expire. First parameter is renewal period (monthly/yearly). Second parameter is date.") - return String(format: localized, period, formattedDate) + static func preferencesSubscriptionExpiringCaption(billingPeriod: Subscription.BillingPeriod, formattedDate: String) -> String { + let localized: String + + switch billingPeriod { + case .monthly: + localized = NSLocalizedString("subscription.preferences.subscription.active.expiring.monthly.caption", + bundle: Bundle.module, + value: "Your monthly subscription expires on %@.", + comment: "Caption for the subscription preferences pane when the monthly subscription is active and will expire, the parameter is date of expiry.") + case .yearly: + localized = NSLocalizedString("subscription.preferences.subscription.active.expiring.yearly.caption", + bundle: Bundle.module, + value: "Your annual subscription expires on %@.", + comment: "Caption for the subscription preferences pane when the annual subscription is active and will expire, the parameter is date of expiry.") + case .unknown: + localized = NSLocalizedString("subscription.preferences.subscription.active.expiring.unknown.caption", + bundle: Bundle.module, + value: "Your subscription expires on %@.", + comment: "Caption for the subscription preferences pane when the subscription is active and will expire, the parameter is date of expiry.") + } + + return String(format: localized, formattedDate) } static func preferencesSubscriptionExpiredCaption(formattedDate: String) -> String { - let localized = NSLocalizedString("subscription.preferences.subscription.expired.caption", value: "Your Privacy Pro subscription expired on %@", comment: "Caption for the subscription preferences pane when the subscription has expired. The parameter is date of expiry.") + let localized = NSLocalizedString("subscription.preferences.subscription.expired.caption", bundle: Bundle.module, value: "Your Privacy Pro subscription expired on %@", comment: "Caption for the subscription preferences pane when the subscription has expired. The parameter is date of expiry.") return String(format: localized, formattedDate) } - static let monthlySubscriptionBillingPeriod = NSLocalizedString("subscription.billing.period.monthly", value: "Monthly", comment: "Type of subscription billing period that lasts a month") - static let yearlySubscriptionBillingPeriod = NSLocalizedString("subscription.billing.period.yearly", value: "Yearly", comment: "Type of subscription billing period that lasts a year") - - static let manageSubscriptionButton = NSLocalizedString("subscription.preferences.manage.subscription.button", value: "Manage Subscription", comment: "Button to manage subscription") - static let updatePlanOrCancelButton = NSLocalizedString("subscription.preferences.update.plan.or.cancel.button", value: "Update Plan or Cancel", comment: "Button to update subscription plan or cancel") - static let removeFromThisDeviceButton = NSLocalizedString("subscription.preferences.remove.from.this.device.button", value: "Remove From This Device", comment: "Button to remove subscription from this device") + static let manageSubscriptionButton = NSLocalizedString("subscription.preferences.manage.subscription.button", bundle: Bundle.module, value: "Manage Subscription", comment: "Button to manage subscription") + static let updatePlanOrCancelButton = NSLocalizedString("subscription.preferences.update.plan.or.cancel.button", bundle: Bundle.module, value: "Update Plan or Cancel", comment: "Button to update subscription plan or cancel") + static let removeFromThisDeviceButton = NSLocalizedString("subscription.preferences.remove.from.this.device.button", bundle: Bundle.module, value: "Remove From This Device", comment: "Button to remove subscription from this device") // MARK: Preferences when subscription is inactive - static let preferencesSubscriptionInactiveHeader = NSLocalizedString("subscription.preferences.subscription.inactive.header", value: "Protect your connection and identity with Privacy Pro", comment: "Header for the subscription preferences pane when the subscription is inactive") - static let preferencesSubscriptionInactiveUSCaption = NSLocalizedString("subscription.preferences.subscription.inactive.us.caption", value: "Three premium protections in one subscription.", comment: "Caption for the subscription preferences pane when the subscription is inactive") - static let preferencesSubscriptionInactiveROWCaption = NSLocalizedString("subscription.preferences.subscription.inactive.row.caption", value: "Two premium protections in one subscription.", comment: "Caption for the subscription preferences pane when the subscription is inactive") + static let preferencesSubscriptionInactiveHeader = NSLocalizedString("subscription.preferences.subscription.inactive.header", bundle: Bundle.module, value: "Protect your connection and identity with Privacy Pro", comment: "Header for the subscription preferences pane when the subscription is inactive") + static let preferencesSubscriptionInactiveUSCaption = NSLocalizedString("subscription.preferences.subscription.inactive.us.caption", bundle: Bundle.module, value: "Three premium protections in one subscription.", comment: "Caption for the subscription preferences pane when the subscription is inactive") + static let preferencesSubscriptionInactiveROWCaption = NSLocalizedString("subscription.preferences.subscription.inactive.row.caption", bundle: Bundle.module, value: "Two premium protections in one subscription.", comment: "Caption for the subscription preferences pane when the subscription is inactive") - static let purchaseButton = NSLocalizedString("subscription.preferences.purchase.button", value: "Get Privacy Pro", comment: "Button to open a page where user can learn more and purchase the subscription") - static let haveSubscriptionButton = NSLocalizedString("subscription.preferences.i.have.a.subscription.button", value: "I Have a Subscription", comment: "Button enabling user to activate a subscription user bought earlier or on another device") + static let purchaseButton = NSLocalizedString("subscription.preferences.purchase.button", bundle: Bundle.module, value: "Get Privacy Pro", comment: "Button to open a page where user can learn more and purchase the subscription") + static let haveSubscriptionButton = NSLocalizedString("subscription.preferences.i.have.a.subscription.button", bundle: Bundle.module, value: "I Have a Subscription", comment: "Button enabling user to activate a subscription user bought earlier or on another device") // MARK: Preferences when subscription activation is pending - static let preferencesSubscriptionPendingHeader = NSLocalizedString("subscription.preferences.subscription.pending.header", value: "Your subscription is being activated", comment: "Header for the subscription preferences pane when the subscription activation is pending") - static let preferencesSubscriptionPendingCaption = NSLocalizedString("subscription.preferences.subscription.pending.caption", value: "This is taking longer than usual. Please check back later.", comment: "Caption for the subscription preferences pane when the subscription activation is pending") + static let preferencesSubscriptionPendingHeader = NSLocalizedString("subscription.preferences.subscription.pending.header", bundle: Bundle.module, value: "Your subscription is being activated", comment: "Header for the subscription preferences pane when the subscription activation is pending") + static let preferencesSubscriptionPendingCaption = NSLocalizedString("subscription.preferences.subscription.pending.caption", bundle: Bundle.module, value: "This is taking longer than usual. Please check back later.", comment: "Caption for the subscription preferences pane when the subscription activation is pending") // MARK: Preferences when subscription is expired - static let preferencesSubscriptionExpiredCaption = NSLocalizedString("subscription.preferences.subscription.expired.caption", value: "Subscribe again to continue using Privacy Pro.", comment: "Caption for the subscription preferences pane when the subscription activation is pending") + static let preferencesSubscriptionExpiredCaption = NSLocalizedString("subscription.preferences.subscription.expired.caption", bundle: Bundle.module, value: "Subscribe again to continue using Privacy Pro.", comment: "Caption for the subscription preferences pane when the subscription activation is pending") - static let viewPlansExpiredButtonTitle = NSLocalizedString("subscription.preferences.button.view.plans", value: "View Plans", comment: "Button for viewing subscription plans on expired subscription") + static let viewPlansExpiredButtonTitle = NSLocalizedString("subscription.preferences.button.view.plans", bundle: Bundle.module, value: "View Plans", comment: "Button for viewing subscription plans on expired subscription") // MARK: - Change plan or billing dialogs - static let changeSubscriptionDialogTitle = NSLocalizedString("subscription.dialog.change.title", value: "Change Plan or Billing", comment: "Change plan or billing dialog title") - static let changeSubscriptionGoogleDialogDescription = NSLocalizedString("subscription.dialog.change.google.description", value: "Your subscription was purchased through the Google Play Store. To change your plan or billing settings, please open Google Play Store subscription settings on a device signed in to the same Google Account used to purchase your subscription.", comment: "Change plan or billing dialog subtitle description for subscription purchased via Google") - static let changeSubscriptionAppleDialogDescription = NSLocalizedString("subscription.dialog.change.apple.description", value: "Your subscription was purchased through the Apple App Store. To change your plan or billing settings, please go to System Settings > Apple ID > Media and Purchases > Subscriptions > Manage on a device signed in to the same Apple ID used to purchase your subscription.", comment: "Change plan or billing dialog subtitle description for subscription purchased via Apple") - static let changeSubscriptionDialogDone = NSLocalizedString("subscription.dialog.change.done.button", value: "Done", comment: "Button to close the change subscription dialog") + static let changeSubscriptionDialogTitle = NSLocalizedString("subscription.dialog.change.title", bundle: Bundle.module, value: "Change Plan or Billing", comment: "Change plan or billing dialog title") + static let changeSubscriptionGoogleDialogDescription = NSLocalizedString("subscription.dialog.change.google.description", bundle: Bundle.module, value: "Your subscription was purchased through the Google Play Store. To change your plan or billing settings, please open Google Play Store subscription settings on a device signed in to the same Google Account used to purchase your subscription.", comment: "Change plan or billing dialog subtitle description for subscription purchased via Google") + static let changeSubscriptionAppleDialogDescription = NSLocalizedString("subscription.dialog.change.apple.description", bundle: Bundle.module, value: "Your subscription was purchased through the Apple App Store. To change your plan or billing settings, please go to System Settings > Apple ID > Media and Purchases > Subscriptions > Manage on a device signed in to the same Apple ID used to purchase your subscription.", comment: "Change plan or billing dialog subtitle description for subscription purchased via Apple") + static let changeSubscriptionDialogDone = NSLocalizedString("subscription.dialog.change.done.button", bundle: Bundle.module, value: "Done", comment: "Button to close the change subscription dialog") // MARK: - Remove from this device dialog - static let removeSubscriptionDialogTitle = NSLocalizedString("subscription.dialog.remove.title", value: "Remove from this device?", comment: "Remove subscription from device dialog title") - static let removeSubscriptionDialogDescription = NSLocalizedString("subscription.dialog.remove.description", value: "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices.", comment: "Remove subscription from device dialog subtitle description") - static let removeSubscriptionDialogCancel = NSLocalizedString("subscription.dialog.remove.cancel.button", value: "Cancel", comment: "Button to cancel removing subscription from device") - static let removeSubscriptionDialogConfirm = NSLocalizedString("subscription.dialog.remove.confirm", value: "Remove Subscription", comment: "Button to confirm removing subscription from device") + static let removeSubscriptionDialogTitle = NSLocalizedString("subscription.dialog.remove.title", bundle: Bundle.module, value: "Remove from this device?", comment: "Remove subscription from device dialog title") + static let removeSubscriptionDialogDescription = NSLocalizedString("subscription.dialog.remove.description", bundle: Bundle.module, value: "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices.", comment: "Remove subscription from device dialog subtitle description") + static let removeSubscriptionDialogCancel = NSLocalizedString("subscription.dialog.remove.cancel.button", bundle: Bundle.module, value: "Cancel", comment: "Button to cancel removing subscription from device") + static let removeSubscriptionDialogConfirm = NSLocalizedString("subscription.dialog.remove.confirm", bundle: Bundle.module, value: "Remove Subscription", comment: "Button to confirm removing subscription from device") // MARK: - Services for accessing the subscription - static let email = NSLocalizedString("subscription.access.channel.email.name", value: "Email", comment: "Service name displayed when accessing subscription using email address") + static let email = NSLocalizedString("subscription.access.channel.email.name", bundle: Bundle.module, value: "Email", comment: "Service name displayed when accessing subscription using email address") // MARK: - Activate subscription modal - static let activateModalTitle = NSLocalizedString("subscription.activate.modal.title", value: "Activate your subscription on this device", comment: "Activate subscription modal view title") + static let activateModalTitle = NSLocalizedString("subscription.activate.modal.title", bundle: Bundle.module, value: "Activate your subscription on this device", comment: "Activate subscription modal view title") static func activateModalDescription(platform: SubscriptionEnvironment.PurchasePlatform) -> String { switch platform { case .appStore: - NSLocalizedString("subscription.appstore.activate.modal.description", value: "Access your Privacy Pro subscription on this device via Apple ID or an email address.", comment: "Activate subscription modal view subtitle description") + NSLocalizedString("subscription.appstore.activate.modal.description", bundle: Bundle.module, value: "Access your Privacy Pro subscription on this device via Apple ID or an email address.", comment: "Activate subscription modal view subtitle description") case .stripe: - NSLocalizedString("subscription.activate.modal.description", value: "Access your Privacy Pro subscription via an email address.", comment: "Activate subscription modal view subtitle description") + NSLocalizedString("subscription.activate.modal.description", bundle: Bundle.module, value: "Access your Privacy Pro subscription via an email address.", comment: "Activate subscription modal view subtitle description") } } - static let activateModalEmailDescription = NSLocalizedString("subscription.activate.modal.email.description", value: "Use your email to activate your subscription on this device.", comment: "Activate subscription modal description for email address channel") - static let restorePurchaseDescription = NSLocalizedString("subscription.activate.modal.restore.purchase.description", value: "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID.", comment: "Activate subscription modal description via restore purchase from Apple ID") + static let activateModalEmailDescription = NSLocalizedString("subscription.activate.modal.email.description", bundle: Bundle.module, value: "Use your email to activate your subscription on this device.", comment: "Activate subscription modal description for email address channel") + static let restorePurchaseDescription = NSLocalizedString("subscription.activate.modal.restore.purchase.description", bundle: Bundle.module, value: "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID.", comment: "Activate subscription modal description via restore purchase from Apple ID") // MARK: - Activate/share modal buttons - static let restorePurchaseButton = NSLocalizedString("subscription.modal.restore.purchase.button", value: "Restore Purchase", comment: "Button for restoring past subscription purchase") - static let enterEmailButton = NSLocalizedString("subscription.modal.enter.email.button", value: "Enter Email", comment: "Button for opening page to enter email address") + static let restorePurchaseButton = NSLocalizedString("subscription.modal.restore.purchase.button", bundle: Bundle.module, value: "Restore Purchase", comment: "Button for restoring past subscription purchase") + static let enterEmailButton = NSLocalizedString("subscription.modal.enter.email.button", bundle: Bundle.module, value: "Enter Email", comment: "Button for opening page to enter email address") // MARK: - Alerts - static let okButtonTitle = NSLocalizedString("subscription.alert.button.ok", value: "OK", comment: "Alert button for confirming it") - static let cancelButtonTitle = NSLocalizedString("subscription.alert.button.cancel", value: "Cancel", comment: "Alert button for dismissing it") - static let continueButtonTitle = NSLocalizedString("subscription.alert.button.retry", value: "Continue", comment: "Alert button for continue action") - static let viewPlansButtonTitle = NSLocalizedString("subscription.alert.button.view.plans", value: "View Plans", comment: "Alert button for viewing subscription plans") - static let restoreButtonTitle = NSLocalizedString("subscription.alert.button.restore", value: "Restore", comment: "Alert button for restoring past subscription purchases") + static let okButtonTitle = NSLocalizedString("subscription.alert.button.ok", bundle: Bundle.module, value: "OK", comment: "Alert button for confirming it") + static let cancelButtonTitle = NSLocalizedString("subscription.alert.button.cancel", bundle: Bundle.module, value: "Cancel", comment: "Alert button for dismissing it") + static let continueButtonTitle = NSLocalizedString("subscription.alert.button.retry", bundle: Bundle.module, value: "Continue", comment: "Alert button for continue action") + static let viewPlansButtonTitle = NSLocalizedString("subscription.alert.button.view.plans", bundle: Bundle.module, value: "View Plans", comment: "Alert button for viewing subscription plans") + static let restoreButtonTitle = NSLocalizedString("subscription.alert.button.restore", bundle: Bundle.module, value: "Restore", comment: "Alert button for restoring past subscription purchases") - static let somethingWentWrongAlertTitle = NSLocalizedString("subscription.alert.something.went.wrong.title", value: "Something Went Wrong", comment: "Alert title when unknown error has occurred") - static let somethingWentWrongAlertDescription = NSLocalizedString("subscription.alert.something.went.wrong.description", value: "We’re having trouble connecting. Please try again later.", comment: "Alert message when unknown error has occurred") + static let somethingWentWrongAlertTitle = NSLocalizedString("subscription.alert.something.went.wrong.title", bundle: Bundle.module, value: "Something Went Wrong", comment: "Alert title when unknown error has occurred") + static let somethingWentWrongAlertDescription = NSLocalizedString("subscription.alert.something.went.wrong.description", bundle: Bundle.module, value: "We’re having trouble connecting. Please try again later.", comment: "Alert message when unknown error has occurred") - static let subscriptionNotFoundAlertTitle = NSLocalizedString("subscription.alert.subscription.not.found.title", value: "Subscription Not Found", comment: "Alert title when subscription was not found") - static let subscriptionNotFoundAlertDescription = NSLocalizedString("subscription.alert.subscription.not.found.description", value: "We couldn’t find a subscription associated with this Apple ID.", comment: "Alert message when subscription was not found") + static let subscriptionNotFoundAlertTitle = NSLocalizedString("subscription.alert.subscription.not.found.title", bundle: Bundle.module, value: "Subscription Not Found", comment: "Alert title when subscription was not found") + static let subscriptionNotFoundAlertDescription = NSLocalizedString("subscription.alert.subscription.not.found.description", bundle: Bundle.module, value: "We couldn’t find a subscription associated with this Apple ID.", comment: "Alert message when subscription was not found") - static let subscriptionInactiveAlertTitle = NSLocalizedString("subscription.alert.subscription.inactive.title", value: "Subscription Not Found", comment: "Alert title when subscription was inactive") - static let subscriptionInactiveAlertDescription = NSLocalizedString("subscription.alert.subscription.inactive.description", value: "The subscription associated with this Apple ID is no longer active.", comment: "Alert message when subscription was inactive") + static let subscriptionInactiveAlertTitle = NSLocalizedString("subscription.alert.subscription.inactive.title", bundle: Bundle.module, value: "Subscription Not Found", comment: "Alert title when subscription was inactive") + static let subscriptionInactiveAlertDescription = NSLocalizedString("subscription.alert.subscription.inactive.description", bundle: Bundle.module, value: "The subscription associated with this Apple ID is no longer active.", comment: "Alert message when subscription was inactive") - static let subscriptionFoundAlertTitle = NSLocalizedString("subscription.alert.subscription.found.title", value: "Subscription Found", comment: "Alert title when subscription was found") - static let subscriptionFoundAlertDescription = NSLocalizedString("subscription.alert.subscription.found.description", value: "We found a subscription associated with this Apple ID.", comment: "Alert message when subscription was found") + static let subscriptionFoundAlertTitle = NSLocalizedString("subscription.alert.subscription.found.title", bundle: Bundle.module, value: "Subscription Found", comment: "Alert title when subscription was found") + static let subscriptionFoundAlertDescription = NSLocalizedString("subscription.alert.subscription.found.description", bundle: Bundle.module, value: "We found a subscription associated with this Apple ID.", comment: "Alert message when subscription was found") - static let subscriptionAppleIDSyncFailedAlertTitle = NSLocalizedString("subscription.alert.subscription.apple-id.sync-failed.title", value: "Something Went Wrong When Syncing Your Apple ID", comment: "Alert message when the subscription failed to restore") + static let subscriptionAppleIDSyncFailedAlertTitle = NSLocalizedString("subscription.alert.subscription.apple-id.sync-failed.title", bundle: Bundle.module, value: "Something Went Wrong When Syncing Your Apple ID", comment: "Alert message when the subscription failed to restore") } diff --git a/scripts/loc_export.sh b/scripts/loc_export.sh index f7cee94f6a..ae95ae7d31 100755 --- a/scripts/loc_export.sh +++ b/scripts/loc_export.sh @@ -83,10 +83,12 @@ declare -a unwanted_paths=( "DuckDuckGoNotifications/Localizable.xcstrings" "DuckDuckGoVPN/Info-AppStore-InfoPlist.xcstrings" "DuckDuckGoVPN/InfoPlist.xcstrings" - "DuckDuckGoVPN/Localizable.xcstrings" + "NetworkProtectionAppExtension/Info.plist" + "NetworkProtectionAppExtension/InfoPlist.xcstrings" "VPNProxyExtension/InfoPlist.xcstrings" - "DuckDuckGoNotifications/Resources/InfoPlist.xcstrings" "DuckDuckGo/Suggestions/View/Base.lproj/Suggestion.storyboard" + "sandbox-test-tool/Info.plist" + "sandbox-test-tool/InfoPlist.xcstrings" ) # Loop through each unwanted path and remove the corresponding elements From f17094d6944e80e7bf002807433005a949d47c3a Mon Sep 17 00:00:00 2001 From: Dominik Kapusta Date: Thu, 12 Dec 2024 17:18:58 +0100 Subject: [PATCH 09/10] Fix displaying multi-line custom background category names (#3664) Task/Issue URL: https://app.asana.com/0/1201621708115095/1208921971523524/f Description: This change fixes layout of BackgroundCategoryView to correctly align multi-line title labels with other grid items. --- .../BackgroundCategoryView.swift | 35 ++++++++++--------- .../BackgroundThumbnailView.swift | 19 +++++----- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/DuckDuckGo/HomePage/View/HomePageSettings/BackgroundCategoryView.swift b/DuckDuckGo/HomePage/View/HomePageSettings/BackgroundCategoryView.swift index 95f6a45f12..2d9002c069 100644 --- a/DuckDuckGo/HomePage/View/HomePageSettings/BackgroundCategoryView.swift +++ b/DuckDuckGo/HomePage/View/HomePageSettings/BackgroundCategoryView.swift @@ -40,25 +40,28 @@ extension HomePage.Views { var body: some View { Button(action: action) { - VStack(alignment: .leading, spacing: Const.titleSpacing) { - ZStack { - if modeModel.contentType == .customImagePicker && !model.hasUserImages { - BackgroundThumbnailView(displayMode: .addBackground) - } else if modeModel.contentType == .defaultBackground { - BackgroundThumbnailView(displayMode: .categoryView) { - Color.newTabPageBackground + VStack(alignment: .leading, spacing: 0) { + VStack(alignment: .leading, spacing: Const.titleSpacing) { + ZStack { + if modeModel.contentType == .customImagePicker && !model.hasUserImages { + BackgroundThumbnailView(displayMode: .addBackground) + } else if modeModel.contentType == .defaultBackground { + BackgroundThumbnailView(displayMode: .categoryView) { + Color.newTabPageBackground + } + } else { + BackgroundThumbnailView( + displayMode: .categoryView, + customBackground: modeModel.customBackgroundThumbnail ?? .solidColor(.color01) + ) } - } else { - BackgroundThumbnailView( - displayMode: .categoryView, - customBackground: modeModel.customBackgroundThumbnail ?? .solidColor(.color01) - ) + } + if showTitle { + Text(modeModel.title) + .font(.system(size: 11)) } } - if showTitle { - Text(modeModel.title) - .font(.system(size: 11)) - } + Spacer(minLength: 0) } } .buttonStyle(.plain) diff --git a/DuckDuckGo/HomePage/View/HomePageSettings/BackgroundThumbnailView.swift b/DuckDuckGo/HomePage/View/HomePageSettings/BackgroundThumbnailView.swift index 33b78c82c3..259acc62d8 100644 --- a/DuckDuckGo/HomePage/View/HomePageSettings/BackgroundThumbnailView.swift +++ b/DuckDuckGo/HomePage/View/HomePageSettings/BackgroundThumbnailView.swift @@ -98,14 +98,17 @@ extension HomePage.Views { var body: some View { ZStack { - RoundedRectangle(cornerRadius: 4) - .fill(.clear) - .background(thumbnailContent) - .cornerRadius(4) - RoundedRectangle(cornerRadius: 4) - .stroke(Color.homeSettingsBackgroundPreviewStroke) - .frame(height: SettingsView.Const.gridItemHeight) - .background(selectionBackground) + Group { + RoundedRectangle(cornerRadius: 4) + .fill(.clear) + .background(thumbnailContent) + .cornerRadius(4) + RoundedRectangle(cornerRadius: 4) + .stroke(Color.homeSettingsBackgroundPreviewStroke) + .background(selectionBackground) + } + .frame(height: SettingsView.Const.gridItemHeight) + if displayMode.allowsDeletingCustomBackgrounds, case .userImage(let image) = customBackground { HStack { Spacer() From ee8dfa8684c9b50599f394bbeaf636172701ae88 Mon Sep 17 00:00:00 2001 From: Anka Date: Fri, 13 Dec 2024 05:19:09 +0000 Subject: [PATCH 10/10] Bump version to 1.118.0 (328) --- Configuration/BuildNumber.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Configuration/BuildNumber.xcconfig b/Configuration/BuildNumber.xcconfig index 6000f1fbc5..2a883b580f 100644 --- a/Configuration/BuildNumber.xcconfig +++ b/Configuration/BuildNumber.xcconfig @@ -1 +1 @@ -CURRENT_PROJECT_VERSION = 327 +CURRENT_PROJECT_VERSION = 328