From 8e959f383e9c95564aaeca5a450132ddda03ede2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20=C5=81yp?= Date: Mon, 30 Oct 2023 16:05:32 +0100 Subject: [PATCH 1/8] Switch to next phase of new experiment for UA (#2118) --- Core/DefaultVariantManager.swift | 7 +++++-- Core/UserAgentManager.swift | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Core/DefaultVariantManager.swift b/Core/DefaultVariantManager.swift index 7539b2981b..158b52d99d 100644 --- a/Core/DefaultVariantManager.swift +++ b/Core/DefaultVariantManager.swift @@ -27,6 +27,7 @@ extension FeatureName { // public static let experimentalFeature = FeatureName(rawValue: "experimentalFeature") public static let fixedUserAgent = FeatureName(rawValue: "fixedUserAgent") + public static let closestUserAgent = FeatureName(rawValue: "closestUserAgent") } public struct VariantIOS: Variant { @@ -61,8 +62,10 @@ public struct VariantIOS: Variant { VariantIOS(name: "sc", weight: doNotAllocate, isIncluded: When.always, features: []), VariantIOS(name: "sd", weight: doNotAllocate, isIncluded: When.always, features: []), VariantIOS(name: "se", weight: doNotAllocate, isIncluded: When.always, features: []), - VariantIOS(name: "me", weight: 1, isIncluded: When.always, features: []), - VariantIOS(name: "mf", weight: 1, isIncluded: When.always, features: [.fixedUserAgent]), + VariantIOS(name: "me", weight: doNotAllocate, isIncluded: When.always, features: []), + VariantIOS(name: "mf", weight: doNotAllocate, isIncluded: When.always, features: []), + VariantIOS(name: "mg", weight: 1, isIncluded: When.always, features: [.fixedUserAgent]), + VariantIOS(name: "mh", weight: 1, isIncluded: When.always, features: [.closestUserAgent]), returningUser ] diff --git a/Core/UserAgentManager.swift b/Core/UserAgentManager.swift index 0e03659e2e..6434f24758 100644 --- a/Core/UserAgentManager.swift +++ b/Core/UserAgentManager.swift @@ -212,6 +212,8 @@ struct UserAgent { if DefaultVariantManager().isSupported(feature: .fixedUserAgent) { return ddgFixedLogic(forUrl: url, isDesktop: isDesktop, privacyConfig: privacyConfig) + } else if DefaultVariantManager().isSupported(feature: .closestUserAgent) { + return closestLogic(forUrl: url, isDesktop: isDesktop, privacyConfig: privacyConfig) } switch defaultPolicy(forConfig: privacyConfig) { From 784f05aa2fe90ec99295ca9885d27f3bbb443d47 Mon Sep 17 00:00:00 2001 From: Diego Rey Mendez Date: Tue, 31 Oct 2023 00:23:01 +0100 Subject: [PATCH 2/8] Integrates the latest DBP changes in BSK (#2108) Task/Issue URL: https://app.asana.com/0/0/1205755216985387/f BSK PR: https://github.com/duckduckgo/BrowserServicesKit/pull/532 macOS PR: https://github.com/duckduckgo/macos-browser/pull/1751 ## Description Integrates the latest BSK changes. --- Core/Core.h | 1 - DuckDuckGo.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/swiftpm/Package.resolved | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Core/Core.h b/Core/Core.h index 8d22735937..ac21b9bd95 100644 --- a/Core/Core.h +++ b/Core/Core.h @@ -19,7 +19,6 @@ #import -#import "BloomFilterWrapper.h" //! Project version number for Core. diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 73d7733850..a18515068d 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -8968,7 +8968,7 @@ repositoryURL = "https://github.com/DuckDuckGo/BrowserServicesKit"; requirement = { kind = exactVersion; - version = 82.0.1; + version = 82.0.2; }; }; C14882EB27F211A000D59F0C /* XCRemoteSwiftPackageReference "SwiftSoup" */ = { diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 42760f18a2..525be5fff2 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -15,8 +15,8 @@ "repositoryURL": "https://github.com/DuckDuckGo/BrowserServicesKit", "state": { "branch": null, - "revision": "8f7a94a70812862203955b3d2bbb909420fa55dd", - "version": "82.0.1" + "revision": "8768193257dd1f461218ed2a8d7893156bde4bda", + "version": "82.0.2" } }, { @@ -156,7 +156,7 @@ }, { "package": "TrackerRadarKit", - "repositoryURL": "https://github.com/duckduckgo/TrackerRadarKit.git", + "repositoryURL": "https://github.com/duckduckgo/TrackerRadarKit", "state": { "branch": null, "revision": "4684440d03304e7638a2c8086895367e90987463", From ce8ce7538ce5cbfe915d334d758fa3dc2b9b37c2 Mon Sep 17 00:00:00 2001 From: amddg44 Date: Tue, 31 Oct 2023 08:27:26 +0100 Subject: [PATCH 3/8] Fix for deeplink crash when preparing webview preview (#2116) Task/Issue URL: https://app.asana.com/0/414709148257752/1205793869765618/f Tech Design URL: CC: Description: When launching the app from deeplink the webView size can be 0,0 causing UIGraphicsBeginImageContextWithOptions to crash --- DuckDuckGo/TabViewController.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DuckDuckGo/TabViewController.swift b/DuckDuckGo/TabViewController.swift index 2ba270fa41..04a448e738 100644 --- a/DuckDuckGo/TabViewController.swift +++ b/DuckDuckGo/TabViewController.swift @@ -1094,7 +1094,8 @@ extension TabViewController: WKNavigationDelegate { func preparePreview(completion: @escaping (UIImage?) -> Void) { DispatchQueue.main.async { [weak self] in - guard let webView = self?.webView else { completion(nil); return } + guard let webView = self?.webView, + webView.bounds.height > 0 && webView.bounds.width > 0 else { completion(nil); return } UIGraphicsBeginImageContextWithOptions(webView.bounds.size, false, UIScreen.main.scale) webView.drawHierarchy(in: webView.bounds, afterScreenUpdates: true) if let jsAlertController = self?.jsAlertController { From ff096da69dd0298fc1cba1fdd7c87efad5c01872 Mon Sep 17 00:00:00 2001 From: Graeme Arthur Date: Tue, 31 Oct 2023 18:51:04 +0100 Subject: [PATCH 4/8] Add toggling of NetP Notifications to iOS (#2112) Co-authored-by: Sam Symons --- Core/UserDefaults+NetworkProtection.swift | 34 +++++++ DuckDuckGo.xcodeproj/project.pbxproj | 30 ++++++- .../xcshareddata/swiftpm/Package.resolved | 4 +- DuckDuckGo/DuckDuckGo.entitlements | 1 + ...orkProtectionConvenienceInitialisers.swift | 10 +++ DuckDuckGo/NetworkProtectionStatusView.swift | 9 +- .../NetworkProtectionStatusViewModel.swift | 6 ++ ...etworkProtectionVPNNotificationsView.swift | 90 +++++++++++++++++++ ...kProtectionVPNNotificationsViewModel.swift | 79 ++++++++++++++++ ...NotificationsAuthorizationController.swift | 87 ++++++++++++++++++ DuckDuckGo/UIApplicationExtension.swift | 41 +++++++++ DuckDuckGo/UserText.swift | 4 + DuckDuckGo/en.lproj/Localizable.strings | 12 +++ ...etworkProtectionPacketTunnelProvider.swift | 11 ++- .../PacketTunnelProvider.entitlements | 1 + 15 files changed, 412 insertions(+), 7 deletions(-) create mode 100644 Core/UserDefaults+NetworkProtection.swift create mode 100644 DuckDuckGo/NetworkProtectionVPNNotificationsView.swift create mode 100644 DuckDuckGo/NetworkProtectionVPNNotificationsViewModel.swift create mode 100644 DuckDuckGo/NotificationsAuthorizationController.swift create mode 100644 DuckDuckGo/UIApplicationExtension.swift diff --git a/Core/UserDefaults+NetworkProtection.swift b/Core/UserDefaults+NetworkProtection.swift new file mode 100644 index 0000000000..fb9def1004 --- /dev/null +++ b/Core/UserDefaults+NetworkProtection.swift @@ -0,0 +1,34 @@ +// +// UserDefaults+NetworkProtection.swift +// DuckDuckGo +// +// Copyright © 2023 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. +// + +#if NETWORK_PROTECTION + +import Foundation + +public extension UserDefaults { + static var networkProtectionGroupDefaults: UserDefaults { + let suiteName = "\(Global.groupIdPrefix).netp" + guard let defaults = UserDefaults(suiteName: suiteName) else { + fatalError("Failed to create netP UserDefaults") + } + return defaults + } +} + +#endif diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index a18515068d..fac3670a7d 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -765,6 +765,11 @@ EE8594992A44791C008A6D06 /* NetworkProtectionTunnelController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE8594982A44791C008A6D06 /* NetworkProtectionTunnelController.swift */; }; EE8E568A2A56BCE400F11DCA /* NetworkProtection in Frameworks */ = {isa = PBXBuildFile; productRef = EE8E56892A56BCE400F11DCA /* NetworkProtection */; }; EE9D68D12AE00CF300B55EF4 /* NetworkProtectionVPNSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE9D68D02AE00CF300B55EF4 /* NetworkProtectionVPNSettingsView.swift */; }; + EE9D68D52AE1526600B55EF4 /* NetworkProtectionVPNNotificationsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE9D68D42AE1526600B55EF4 /* NetworkProtectionVPNNotificationsView.swift */; }; + EE9D68D82AE15AD600B55EF4 /* UIApplicationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE9D68D72AE15AD600B55EF4 /* UIApplicationExtension.swift */; }; + EE9D68DA2AE1659F00B55EF4 /* NetworkProtectionVPNNotificationsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE9D68D92AE1659F00B55EF4 /* NetworkProtectionVPNNotificationsViewModel.swift */; }; + EE9D68DC2AE16AE100B55EF4 /* NotificationsAuthorizationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE9D68DB2AE16AE100B55EF4 /* NotificationsAuthorizationController.swift */; }; + EE9D68DE2AE2A65600B55EF4 /* UserDefaults+NetworkProtection.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE9D68DD2AE2A65600B55EF4 /* UserDefaults+NetworkProtection.swift */; }; EEDFE2DA2AC6ED4F00F0E19C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = EEDFE2DC2AC6ED4F00F0E19C /* Localizable.strings */; }; EEEB80A32A421CE600386378 /* NetworkProtectionPacketTunnelProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEEB80A22A421CE600386378 /* NetworkProtectionPacketTunnelProvider.swift */; }; EEF0F8CC2ABC832300630031 /* NetworkProtectionDebugFeatures.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEF0F8CB2ABC832200630031 /* NetworkProtectionDebugFeatures.swift */; }; @@ -2333,6 +2338,11 @@ EE7A92862AC6DE4700832A36 /* NetworkProtectionNotificationIdentifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkProtectionNotificationIdentifier.swift; sourceTree = ""; }; EE8594982A44791C008A6D06 /* NetworkProtectionTunnelController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkProtectionTunnelController.swift; sourceTree = ""; }; EE9D68D02AE00CF300B55EF4 /* NetworkProtectionVPNSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkProtectionVPNSettingsView.swift; sourceTree = ""; }; + EE9D68D42AE1526600B55EF4 /* NetworkProtectionVPNNotificationsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkProtectionVPNNotificationsView.swift; sourceTree = ""; }; + EE9D68D72AE15AD600B55EF4 /* UIApplicationExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIApplicationExtension.swift; sourceTree = ""; }; + EE9D68D92AE1659F00B55EF4 /* NetworkProtectionVPNNotificationsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkProtectionVPNNotificationsViewModel.swift; sourceTree = ""; }; + EE9D68DB2AE16AE100B55EF4 /* NotificationsAuthorizationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationsAuthorizationController.swift; sourceTree = ""; }; + EE9D68DD2AE2A65600B55EF4 /* UserDefaults+NetworkProtection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefaults+NetworkProtection.swift"; sourceTree = ""; }; EEB8FDB92A990AEE00EBEDCF /* Configuration-Alpha.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Configuration-Alpha.xcconfig"; path = "Configuration/Configuration-Alpha.xcconfig"; sourceTree = ""; }; EEDFE2DB2AC6ED4F00F0E19C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; EEDFE2DD2AC6ED5B00F0E19C /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Localizable.strings; sourceTree = ""; }; @@ -4346,6 +4356,7 @@ children = ( EE0153E02A6EABE0002A8B26 /* NetworkProtectionConvenienceInitialisers.swift */, EE458D0C2AB1DA4600FC651A /* EventMapping+NetworkProtectionError.swift */, + EE9D68DB2AE16AE100B55EF4 /* NotificationsAuthorizationController.swift */, ); name = Helpers; sourceTree = ""; @@ -4409,6 +4420,7 @@ isa = PBXGroup; children = ( EE7A92862AC6DE4700832A36 /* NetworkProtectionNotificationIdentifier.swift */, + EE9D68DD2AE2A65600B55EF4 /* UserDefaults+NetworkProtection.swift */, ); name = NetworkProtection; sourceTree = ""; @@ -4421,9 +4433,19 @@ name = VPNSettings; sourceTree = ""; }; + EE9D68D62AE1527F00B55EF4 /* VPNNotifications */ = { + isa = PBXGroup; + children = ( + EE9D68D42AE1526600B55EF4 /* NetworkProtectionVPNNotificationsView.swift */, + EE9D68D92AE1659F00B55EF4 /* NetworkProtectionVPNNotificationsViewModel.swift */, + ); + name = VPNNotifications; + sourceTree = ""; + }; EECD94B22A28B8580085C66E /* NetworkProtection */ = { isa = PBXGroup; children = ( + EE9D68D62AE1527F00B55EF4 /* VPNNotifications */, EE9D68CF2AE00CE000B55EF4 /* VPNSettings */, EE458D122ABB651500FC651A /* Debug */, EE0153E22A6FE031002A8B26 /* Root */, @@ -5098,6 +5120,7 @@ F1DE78591E5CD2A70058895A /* UIViewExtension.swift */, F1F5337B1F26A9EF00D80D4F /* UserText.swift */, 986DA94924884B18004A7E39 /* WebViewTransition.swift */, + EE9D68D72AE15AD600B55EF4 /* UIApplicationExtension.swift */, ); name = UserInterface; sourceTree = ""; @@ -6104,6 +6127,7 @@ F1DE78581E5CAE350058895A /* TabViewGridCell.swift in Sources */, 984D035824ACCC6F0066CFB8 /* TabViewListCell.swift in Sources */, B6BA95C328891E33004ABA20 /* BrowsingMenuAnimator.swift in Sources */, + EE9D68DC2AE16AE100B55EF4 /* NotificationsAuthorizationController.swift in Sources */, AA3D854923DA1DFB00788410 /* AppIcon.swift in Sources */, 8590CB612684D0600089F6BF /* CookieDebugViewController.swift in Sources */, 319A37152829A55F0079FBCE /* AutofillListItemTableViewCell.swift in Sources */, @@ -6125,6 +6149,7 @@ 1E8AD1C727BE9B2900ABA377 /* DownloadsListDataSource.swift in Sources */, 3157B43527F497F50042D3D7 /* SaveLoginViewController.swift in Sources */, 853C5F6121C277C7001F7A05 /* global.swift in Sources */, + EE9D68D82AE15AD600B55EF4 /* UIApplicationExtension.swift in Sources */, F13B4BD31F1822C700814661 /* Tab.swift in Sources */, F1BE54581E69DE1000FCF649 /* TutorialSettings.swift in Sources */, 1EE52ABB28FB1D6300B750C1 /* UIImageExtension.swift in Sources */, @@ -6146,6 +6171,7 @@ C1B7B529289420830098FD6A /* RemoteMessaging.xcdatamodeld in Sources */, 986B16C425E92DF0007D23E8 /* BrowsingMenuViewController.swift in Sources */, 988AC355257E47C100793C64 /* RequeryLogic.swift in Sources */, + EE9D68D52AE1526600B55EF4 /* NetworkProtectionVPNNotificationsView.swift in Sources */, 1E4F4A5A297193DE00625985 /* MainViewController+CookiesManaged.swift in Sources */, 8586A10D24CBA7070049720E /* FindInPageActivity.swift in Sources */, 1E1626072968413B0004127F /* ViewExtension.swift in Sources */, @@ -6430,6 +6456,7 @@ 8586A11024CCCD040049720E /* TabsBarViewController.swift in Sources */, F1D796F41E7C2A410019D451 /* BookmarksDelegate.swift in Sources */, C1B7B52428941F2A0098FD6A /* RemoteMessageRequest.swift in Sources */, + EE9D68DA2AE1659F00B55EF4 /* NetworkProtectionVPNNotificationsViewModel.swift in Sources */, 1E8AD1D727C2E24E00ABA377 /* DownloadsListRowViewModel.swift in Sources */, C1B0F6422AB08BE9001EAF05 /* MockPrivacyConfiguration.swift in Sources */, 1E865AF0272042DB001C74F3 /* TextSizeSettingsViewController.swift in Sources */, @@ -6689,6 +6716,7 @@ CB2A7EF4285383B300885F67 /* AppLastCompiledRulesStore.swift in Sources */, 4B75EA9226A266CB00018634 /* PrintingUserScript.swift in Sources */, 37445F972A155F7C0029F789 /* SyncDataProviders.swift in Sources */, + EE9D68DE2AE2A65600B55EF4 /* UserDefaults+NetworkProtection.swift in Sources */, CB258D1F29A52B2500DEBA24 /* Configuration.swift in Sources */, 9847C00027A2DDBB00DB07AA /* AppPrivacyConfigurationDataProvider.swift in Sources */, F143C3281E4A9A0E00CFDE3A /* StringExtension.swift in Sources */, @@ -8968,7 +8996,7 @@ repositoryURL = "https://github.com/DuckDuckGo/BrowserServicesKit"; requirement = { kind = exactVersion; - version = 82.0.2; + version = 82.1.0; }; }; C14882EB27F211A000D59F0C /* XCRemoteSwiftPackageReference "SwiftSoup" */ = { diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 525be5fff2..0836aa38a9 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -15,8 +15,8 @@ "repositoryURL": "https://github.com/DuckDuckGo/BrowserServicesKit", "state": { "branch": null, - "revision": "8768193257dd1f461218ed2a8d7893156bde4bda", - "version": "82.0.2" + "revision": "71e916d070cedcba9ccb3ce9431797260bf5cbea", + "version": "82.1.0" } }, { diff --git a/DuckDuckGo/DuckDuckGo.entitlements b/DuckDuckGo/DuckDuckGo.entitlements index 3b229351b9..82bd4ed6cd 100644 --- a/DuckDuckGo/DuckDuckGo.entitlements +++ b/DuckDuckGo/DuckDuckGo.entitlements @@ -15,6 +15,7 @@ $(GROUP_ID_PREFIX).statistics $(GROUP_ID_PREFIX).database $(GROUP_ID_PREFIX).apptp + $(GROUP_ID_PREFIX).netp diff --git a/DuckDuckGo/NetworkProtectionConvenienceInitialisers.swift b/DuckDuckGo/NetworkProtectionConvenienceInitialisers.swift index 248b52aa81..0587a405b8 100644 --- a/DuckDuckGo/NetworkProtectionConvenienceInitialisers.swift +++ b/DuckDuckGo/NetworkProtectionConvenienceInitialisers.swift @@ -58,4 +58,14 @@ extension NetworkProtectionCodeRedemptionCoordinator { } } +extension NetworkProtectionVPNNotificationsViewModel { + convenience init() { + let notificationsSettingsStore = NetworkProtectionNotificationsSettingsUserDefaultsStore(userDefaults: .networkProtectionGroupDefaults) + self.init( + notificationsAuthorization: NotificationsAuthorizationController(), + notificationsSettingsStore: notificationsSettingsStore + ) + } +} + #endif diff --git a/DuckDuckGo/NetworkProtectionStatusView.swift b/DuckDuckGo/NetworkProtectionStatusView.swift index c7b1e13dcf..de8c854726 100644 --- a/DuckDuckGo/NetworkProtectionStatusView.swift +++ b/DuckDuckGo/NetworkProtectionStatusView.swift @@ -40,9 +40,12 @@ struct NetworkProtectionStatusView: View { } settings() } - .animation(.default, value: statusModel.shouldShowError) .padding(.top, statusModel.error == nil ? 0 : -20) - .animation(.default, value: statusModel.shouldShowConnectionDetails) + .if(statusModel.animationsOn, transform: { + $0 + .animation(.default, value: statusModel.shouldShowConnectionDetails) + .animation(.default, value: statusModel.shouldShowError) + }) .applyInsetGroupedListStyle() .navigationTitle(UserText.netPNavTitle) } @@ -134,7 +137,7 @@ struct NetworkProtectionStatusView: View { NavigationLink(UserText.netPVPNSettingsTitle, destination: NetworkProtectionVPNSettingsView()) .font(.system(size: 16)) .foregroundColor(.textPrimary) - NavigationLink(UserText.netPVPNNotificationsTitle, destination: Text("Coming soon!")) + NavigationLink(UserText.netPVPNNotificationsTitle, destination: NetworkProtectionVPNNotificationsView()) .font(.system(size: 16)) .foregroundColor(.textPrimary) } header: { diff --git a/DuckDuckGo/NetworkProtectionStatusViewModel.swift b/DuckDuckGo/NetworkProtectionStatusViewModel.swift index 3ee41e6b67..dc8924c38b 100644 --- a/DuckDuckGo/NetworkProtectionStatusViewModel.swift +++ b/DuckDuckGo/NetworkProtectionStatusViewModel.swift @@ -65,6 +65,8 @@ final class NetworkProtectionStatusViewModel: ObservableObject { @Published public var location: String? @Published public var ipAddress: String? + @Published public var animationsOn: Bool = false + public init(tunnelController: TunnelController = NetworkProtectionTunnelController(), statusObserver: ConnectionStatusObserver = ConnectionStatusObserverThroughSession(), serverInfoObserver: ConnectionServerInfoObserver = ConnectionServerInfoObserverThroughSession(), @@ -166,7 +168,11 @@ final class NetworkProtectionStatusViewModel: ObservableObject { .store(in: &cancellables) } + @MainActor func didToggleNetP(to enabled: Bool) async { + // This is to prevent weird looking animations on navigating to the screen. + // It makes sense as animations should mostly only happen when a user has interacted. + animationsOn = true if enabled { await enableNetP() } else { diff --git a/DuckDuckGo/NetworkProtectionVPNNotificationsView.swift b/DuckDuckGo/NetworkProtectionVPNNotificationsView.swift new file mode 100644 index 0000000000..d5b0d22fd2 --- /dev/null +++ b/DuckDuckGo/NetworkProtectionVPNNotificationsView.swift @@ -0,0 +1,90 @@ +// +// NetworkProtectionVPNNotificationsView.swift +// DuckDuckGo +// +// Copyright © 2023 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. +// + +#if NETWORK_PROTECTION + +import SwiftUI +import UIKit +import NetworkProtection +import Core + +@available(iOS 15, *) +struct NetworkProtectionVPNNotificationsView: View { + @StateObject var model = NetworkProtectionVPNNotificationsViewModel() + + var body: some View { + List { + switch model.viewKind { + case .loading: + EmptyView() + case .unauthorized: + unauthorizedView + case .authorized: + authorizedView + } + } + .animation(.default, value: model.viewKind) + .applyInsetGroupedListStyle() + .navigationTitle(UserText.netPVPNNotificationsTitle).onAppear { + Task { + await model.onViewAppeared() + } + } + } + + @ViewBuilder + private var unauthorizedView: some View { + Section { + Button(UserText.netPTurnOnNotificationsButtonTitle) { + model.turnOnNotifications() + } + .foregroundColor(.controlColor) + } footer: { + Text(UserText.netPTurnOnNotificationsSectionFooter) + .foregroundColor(.textSecondary) + .font(.system(size: 13)) + .padding(.top, 6) + } + } + + @ViewBuilder + private var authorizedView: some View { + Section { + Toggle(UserText.netPVPNAlertsToggleTitle, isOn: Binding( + get: { model.alertsEnabled }, + set: model.didToggleAlerts(to:) + )) + .toggleStyle(SwitchToggleStyle(tint: .controlColor)) + } footer: { + Text(UserText.netPVPNAlertsToggleSectionFooter) + .foregroundColor(.textSecondary) + .font(.system(size: 13)) + .padding(.top, 6) + } + } +} + +private extension Color { + static let textPrimary = Color(designSystemColor: .textPrimary) + static let textSecondary = Color(designSystemColor: .textSecondary) + static let cellBackground = Color(designSystemColor: .surface) + static let controlColor = Color(designSystemColor: .accent) +} + +#endif diff --git a/DuckDuckGo/NetworkProtectionVPNNotificationsViewModel.swift b/DuckDuckGo/NetworkProtectionVPNNotificationsViewModel.swift new file mode 100644 index 0000000000..62833eb25a --- /dev/null +++ b/DuckDuckGo/NetworkProtectionVPNNotificationsViewModel.swift @@ -0,0 +1,79 @@ +// +// NetworkProtectionVPNNotificationsViewModel.swift +// DuckDuckGo +// +// Copyright © 2023 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. +// + +#if NETWORK_PROTECTION + +import Combine +import UserNotifications +import NetworkProtection + +enum NetworkProtectionNotificationsViewKind: Equatable { + case loading + case unauthorized + case authorized +} + +final class NetworkProtectionVPNNotificationsViewModel: ObservableObject { + private var notificationsAuthorization: NotificationsAuthorizationControlling + private var notificationsSettingsStore: NetworkProtectionNotificationsSettingsStore + @Published var viewKind: NetworkProtectionNotificationsViewKind = .loading + var alertsEnabled: Bool { + self.notificationsSettingsStore.alertsEnabled + } + + init(notificationsAuthorization: NotificationsAuthorizationControlling, + notificationsSettingsStore: NetworkProtectionNotificationsSettingsStore) { + self.notificationsAuthorization = notificationsAuthorization + self.notificationsSettingsStore = notificationsSettingsStore + self.notificationsAuthorization.delegate = self + } + + @MainActor + func onViewAppeared() async { + let status = await notificationsAuthorization.authorizationStatus + updateViewKind(for: status) + } + + func turnOnNotifications() { + notificationsAuthorization.requestAlertAuthorization() + } + + func didToggleAlerts(to enabled: Bool) { + notificationsSettingsStore.alertsEnabled = enabled + } + + private func updateViewKind(for authorizationStatus: UNAuthorizationStatus) { + switch authorizationStatus { + case .notDetermined, .denied: + viewKind = .unauthorized + case .authorized, .ephemeral, .provisional: + viewKind = .authorized + @unknown default: + assertionFailure("Unhandled enum case") + } + } +} + +extension NetworkProtectionVPNNotificationsViewModel: NotificationsPermissionsControllerDelegate { + func authorizationStateDidChange(toStatus status: UNAuthorizationStatus) { + updateViewKind(for: status) + } +} + +#endif diff --git a/DuckDuckGo/NotificationsAuthorizationController.swift b/DuckDuckGo/NotificationsAuthorizationController.swift new file mode 100644 index 0000000000..a5524a4cc9 --- /dev/null +++ b/DuckDuckGo/NotificationsAuthorizationController.swift @@ -0,0 +1,87 @@ +// +// NotificationsAuthorizationController.swift +// DuckDuckGo +// +// Copyright © 2023 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 UserNotifications +import UIKit +import Combine + +protocol NotificationsAuthorizationControlling { + var authorizationStatus: UNAuthorizationStatus { get async } + var delegate: NotificationsPermissionsControllerDelegate? { get set } + + func requestAlertAuthorization() +} + +protocol NotificationsPermissionsControllerDelegate: AnyObject { + func authorizationStateDidChange(toStatus status: UNAuthorizationStatus) +} + +final class NotificationsAuthorizationController: NotificationsAuthorizationControlling { + + weak var delegate: NotificationsPermissionsControllerDelegate? + var notificationCancellable: AnyCancellable? + + var authorizationStatus: UNAuthorizationStatus { + get async { + let settings: UNNotificationSettings = await UNUserNotificationCenter.current().notificationSettings() + return settings.authorizationStatus + } + } + + init() { + // To handle navigating back from iOS Settings after changing the authorization + notificationCancellable = NotificationCenter.default.publisher(for: UIApplication.didBecomeActiveNotification) + .sink { _ in + Task { [weak self] in + await self?.updateDelegateWithNewState() + } + } + } + + func requestAlertAuthorization() { + Task { + switch await authorizationStatus { + case .notDetermined: + await requestAuthorization(options: .alert) + case .denied: + _ = await UIApplication.shared.openAppNotificationSettings() + case .authorized, .provisional, .ephemeral: + break + @unknown default: + break + } + } + } + + private func requestAuthorization(options: UNAuthorizationOptions) async { + do { + let authorized = try await UNUserNotificationCenter.current().requestAuthorization(options: options) + if authorized { + await updateDelegateWithNewState() + } + } catch { } + } + + private func updateDelegateWithNewState() async { + let newState = await authorizationStatus + DispatchQueue.main.async { [weak self] in + self?.delegate?.authorizationStateDidChange(toStatus: newState) + } + } +} diff --git a/DuckDuckGo/UIApplicationExtension.swift b/DuckDuckGo/UIApplicationExtension.swift new file mode 100644 index 0000000000..c89cabd385 --- /dev/null +++ b/DuckDuckGo/UIApplicationExtension.swift @@ -0,0 +1,41 @@ +// +// UIApplicationExtension.swift +// DuckDuckGo +// +// Copyright © 2023 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 UIKit + +extension UIApplication { + private static let notificationSettingsURL: URL? = { + let settingsString: String + if #available(iOS 16, *) { + settingsString = UIApplication.openNotificationSettingsURLString + } else if #available(iOS 15.4, *) { + settingsString = UIApplicationOpenNotificationSettingsURLString + } else { + settingsString = UIApplication.openSettingsURLString + } + return URL(string: settingsString) + }() + + func openAppNotificationSettings() async -> Bool { + guard + let url = UIApplication.notificationSettingsURL, + self.canOpenURL(url) else { return false } + return await self.open(url) + } +} diff --git a/DuckDuckGo/UserText.swift b/DuckDuckGo/UserText.swift index 8d2331337d..0447b01e09 100644 --- a/DuckDuckGo/UserText.swift +++ b/DuckDuckGo/UserText.swift @@ -656,6 +656,10 @@ In addition to the details entered into this form, your app issue report will co static let netPAlwaysOnSettingFooter = NSLocalizedString("network.protection.vpn.always.on.setting.footer", value: "Automatically restore a VPN connection after interruption.", comment: "Footer text for the Always on VPN setting item.") static let netPSecureDNSSettingTitle = NSLocalizedString("network.protection.vpn.secure.dns.setting.title", value: "Secure DNS", comment: "Title for the Always on VPN setting item.") static let netPSecureDNSSettingFooter = NSLocalizedString("network.protection.vpn.secure.dns.setting.footer", value: "Network Protection prevents DNS leaks to your Internet Service Provider by routing DNS queries though the VPN tunnel to our own resolver.", comment: "Footer text for the Always on VPN setting item.") + static let netPTurnOnNotificationsButtonTitle = NSLocalizedString("network.protection.turn.on.notifications.button.title", value: "Turn on Notifications", comment: "Title for the button to link to the iOS app settings and enable notifications app-wide.") + static let netPTurnOnNotificationsSectionFooter = NSLocalizedString("network.protection.turn.on.notifications.section.footer", value: "Allow DuckDuckGo to notify you if your connection drops or VPN status changes.", comment: "Footer text under the button to link to the iOS app settings and enable notifications app-wide.") + static let netPVPNAlertsToggleTitle = NSLocalizedString("network.protection.vpn.alerts.toggle.title", value: "VPN Alerts", comment: "Title for the toggle for VPN alerts.") + static let netPVPNAlertsToggleSectionFooter = NSLocalizedString("network.protection.vpn.alerts.toggle.section.footer", value: "Get notified if your connection drops or VPN status changes.", comment: "List section footer for the toggle for VPN alerts.") static let netPOpenVPNQuickAction = NSLocalizedString("network.protection.quick-action.open-vpn", value: "Open VPN", comment: "Title text for an iOS quick action that opens VPN settings") diff --git a/DuckDuckGo/en.lproj/Localizable.strings b/DuckDuckGo/en.lproj/Localizable.strings index b966ba574d..bdcc498b88 100644 --- a/DuckDuckGo/en.lproj/Localizable.strings +++ b/DuckDuckGo/en.lproj/Localizable.strings @@ -1441,6 +1441,18 @@ https://duckduckgo.com/mac"; /* Title label text for the status view when netP is disconnected */ "network.protection.status.view.title" = "Network Protection"; +/* Title for the button to link to the iOS app settings and enable notifications app-wide. */ +"network.protection.turn.on.notifications.button.title" = "Turn on Notifications"; + +/* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ +"network.protection.turn.on.notifications.section.footer" = "Allow DuckDuckGo to notify you if your connection drops or VPN status changes."; + +/* List section footer for the toggle for VPN alerts. */ +"network.protection.vpn.alerts.toggle.section.footer" = "Get notified if your connection drops or VPN status changes."; + +/* Title for the toggle for VPN alerts. */ +"network.protection.vpn.alerts.toggle.title" = "VPN Alerts"; + /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.always.on.setting.footer" = "Automatically restore a VPN connection after interruption."; diff --git a/PacketTunnelProvider/NetworkProtection/NetworkProtectionPacketTunnelProvider.swift b/PacketTunnelProvider/NetworkProtection/NetworkProtectionPacketTunnelProvider.swift index ccb15449ae..5db8d2c3c5 100644 --- a/PacketTunnelProvider/NetworkProtection/NetworkProtectionPacketTunnelProvider.swift +++ b/PacketTunnelProvider/NetworkProtection/NetworkProtectionPacketTunnelProvider.swift @@ -17,6 +17,8 @@ // limitations under the License. // +#if NETWORK_PROTECTION + import Foundation import NetworkProtection import Common @@ -167,8 +169,13 @@ final class NetworkProtectionPacketTunnelProvider: PacketTunnelProvider { errorEvents: nil) let errorStore = NetworkProtectionTunnelErrorStore() let notificationsPresenter = NetworkProtectionUNNotificationPresenter() + let notificationsSettingsStore = NetworkProtectionNotificationsSettingsUserDefaultsStore(userDefaults: .networkProtectionGroupDefaults) + let nofificationsPresenterDecorator = NetworkProtectionNotificationsPresenterTogglableDecorator( + notificationSettingsStore: notificationsSettingsStore, + wrappee: notificationsPresenter + ) notificationsPresenter.requestAuthorization() - super.init(notificationsPresenter: notificationsPresenter, + super.init(notificationsPresenter: nofificationsPresenterDecorator, tunnelHealthStore: NetworkProtectionTunnelHealthStore(), controllerErrorStore: errorStore, keychainType: .dataProtection(.unspecified), @@ -203,3 +210,5 @@ final class NetworkProtectionPacketTunnelProvider: PacketTunnelProvider { } } } + +#endif diff --git a/PacketTunnelProvider/PacketTunnelProvider.entitlements b/PacketTunnelProvider/PacketTunnelProvider.entitlements index 86c503b63c..5e171bb76b 100644 --- a/PacketTunnelProvider/PacketTunnelProvider.entitlements +++ b/PacketTunnelProvider/PacketTunnelProvider.entitlements @@ -9,6 +9,7 @@ com.apple.security.application-groups $(GROUP_ID_PREFIX).apptp + $(GROUP_ID_PREFIX).netp From 4dd122baf151286db73d003b1f8eb91eef75ba3a Mon Sep 17 00:00:00 2001 From: Elle Sullivan Date: Tue, 31 Oct 2023 18:10:28 +0000 Subject: [PATCH 5/8] Release 7.95.0 (#2122) --- Configuration/Version.xcconfig | 2 +- .../AppPrivacyConfigurationDataProvider.swift | 4 +- Core/ios-config.json | 578 +++++++++--------- DuckDuckGo.xcodeproj/project.pbxproj | 42 +- DuckDuckGo/Settings.bundle/Root.plist | 2 +- fastlane/metadata/default/release_notes.txt | 2 +- 6 files changed, 300 insertions(+), 330 deletions(-) diff --git a/Configuration/Version.xcconfig b/Configuration/Version.xcconfig index 13569f4d38..f1e581c2e5 100644 --- a/Configuration/Version.xcconfig +++ b/Configuration/Version.xcconfig @@ -1 +1 @@ -MARKETING_VERSION = 7.94.0 +MARKETING_VERSION = 7.95.0 diff --git a/Core/AppPrivacyConfigurationDataProvider.swift b/Core/AppPrivacyConfigurationDataProvider.swift index 1bb935f009..1c31465803 100644 --- a/Core/AppPrivacyConfigurationDataProvider.swift +++ b/Core/AppPrivacyConfigurationDataProvider.swift @@ -23,8 +23,8 @@ import BrowserServicesKit final public class AppPrivacyConfigurationDataProvider: EmbeddedDataProvider { public struct Constants { - public static let embeddedDataETag = "\"34b6806ec63c85144adb71af7e899b40\"" - public static let embeddedDataSHA = "167fdf9054fd7a0f8b2e9b5f84a8dae7d569752b0278d82b6a394380531f61e5" + public static let embeddedDataETag = "\"a0d037f309e88ecd0b730418db6d73c5\"" + public static let embeddedDataSHA = "9fc440e5eb590195150839759a56b34dd91cd5d11c84867526467362b7da08e7" } public var embeddedDataEtag: String { diff --git a/Core/ios-config.json b/Core/ios-config.json index 6c63a428f3..2cf867b907 100644 --- a/Core/ios-config.json +++ b/Core/ios-config.json @@ -1,6 +1,6 @@ { "readme": "https://github.com/duckduckgo/privacy-configuration", - "version": 1697654992169, + "version": 1698745071843, "features": { "adClickAttribution": { "readme": "https://help.duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#3rd-party-tracker-loading-protection", @@ -85,10 +85,6 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "settings": { @@ -114,7 +110,12 @@ ] }, "state": "enabled", - "hash": "cf1e1726876b6f6510eae65e2bc37047" + "hash": "c4367cb8ce342c06a089afa2bf8a7b84" + }, + "androidBrowserConfig": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" }, "autoconsent": { "exceptions": [ @@ -289,10 +290,6 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "settings": { @@ -301,7 +298,7 @@ ] }, "state": "enabled", - "hash": "6b201ccc9308a1e9b574b8a7da5a9b52" + "hash": "faab10f2de9c911fe8632c12dcfd52f5" }, "autofill": { "exceptions": [ @@ -343,12 +340,15 @@ "steps": [ { "percent": 1 + }, + { + "percent": 10 } ] } } }, - "hash": "555acbcb681d4f9b342dd2539c8e2c40" + "hash": "3a139910043488682718a3908993f8d3" }, "clickToLoad": { "exceptions": [ @@ -1163,10 +1163,6 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "settings": { @@ -1184,7 +1180,7 @@ } }, "state": "disabled", - "hash": "282361b69a7a17fbd3a6c53cdfba6b97" + "hash": "0348b68a4f222f86bb690dba5a230bed" }, "clickToPlay": { "exceptions": [ @@ -1199,10 +1195,6 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "settings": { @@ -1215,7 +1207,7 @@ } }, "state": "disabled", - "hash": "849beddfafbff071cd4a08697c265a38" + "hash": "41113a821c203f193f59b74df66c29a3" }, "contentBlocking": { "state": "enabled", @@ -1240,6 +1232,10 @@ "domain": "ads.google.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1401" }, + { + "domain": "sundancecatalog.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1420" + }, { "domain": "earth.google.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1099" @@ -1251,13 +1247,9 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], - "hash": "f94b331bc97d678adbd90ed74feb40b2" + "hash": "f7cc238fd4b1655cfcfb8d4a72a88d03" }, "cookie": { "settings": { @@ -1310,18 +1302,14 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "disabled", - "hash": "ee691572b20893705632f670a2f72801" + "hash": "a25d857f1b17af5e17c11eae8bb4c3b2" }, "customUserAgent": { "settings": { - "defaultPolicy": "ddg", + "defaultPolicy": "ddgFixed", "ddgFixedSites": [], "ddgDefaultSites": [ { @@ -1329,131 +1317,131 @@ "reason": "Internal exclusion to roll out experiment" } ], - "ddgFixedUserAgent": { + "closestUserAgent": { "versions": [ - "391", - "389", - "388", - "386", - "383", - "382", - "379", - "377", - "376", - "374", - "371", - "370", - "367", - "365", - "364", - "361", - "360", - "358", - "356", - "353", - "351", - "349", - "348", - "345", - "343", - "341", - "340", - "338", - "336", - "334", - "332", - "330", - "327", - "325", - "324", - "322", - "319", - "317", - "316", - "314", - "311", - "310", - "307", - "305", - "303", - "301", - "299", - "297", - "296", - "294", - "292", - "290", - "288", - "286", - "283", - "282", - "280", - "277", - "275", - "273", - "272", - "270", - "267", - "265", - "264", - "261", - "259", - "258", - "255", - "253", - "252", - "250", - "247", - "246", - "243", - "242", - "240", - "237", - "235", - "233", - "231", - "229", - "227", - "225", - "224", - "221", - "219", - "217", - "216", - "214", - "212", - "210", - "207", - "206", - "204", - "201", - "200", - "198", - "195", - "193", - "192", - "189", - "188", - "186", - "183", - "181", - "179", - "177", - "175", - "174", - "172", - "170", - "168", - "166", - "164", - "162", - "159", - "158", - "156", - "153", - "151", - "149", - "147" + "392", + "390", + "387", + "385", + "384", + "381", + "380", + "378", + "375", + "373", + "372", + "369", + "368", + "366", + "363", + "362", + "359", + "357", + "355", + "354", + "352", + "350", + "347", + "346", + "344", + "342", + "339", + "337", + "335", + "333", + "331", + "329", + "328", + "326", + "323", + "321", + "320", + "318", + "315", + "313", + "312", + "309", + "308", + "306", + "304", + "302", + "300", + "298", + "295", + "293", + "291", + "289", + "287", + "285", + "284", + "281", + "279", + "278", + "276", + "274", + "271", + "269", + "268", + "266", + "263", + "262", + "260", + "257", + "256", + "254", + "251", + "249", + "248", + "245", + "244", + "241", + "239", + "238", + "236", + "234", + "232", + "230", + "228", + "226", + "223", + "222", + "220", + "218", + "215", + "213", + "211", + "209", + "208", + "205", + "203", + "202", + "199", + "197", + "196", + "194", + "191", + "190", + "187", + "185", + "184", + "182", + "180", + "178", + "176", + "173", + "171", + "169", + "167", + "165", + "163", + "161", + "160", + "157", + "155", + "154", + "152", + "150", + "148" ] }, "omitApplicationSites": [ @@ -1509,10 +1497,6 @@ "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" - }, { "domain": "cvs.com", "reason": "Navigation section at the top of the main page renders as text." @@ -1521,6 +1505,10 @@ "domain": "facebook.com", "reason": "When going to the main login page, there is a banner at the top which warns of an 'Unsupported browser'." }, + { + "domain": "formula1.com", + "reason": "Stream page shows 'unsupported browser'" + }, { "domain": "hulu.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1145" @@ -1566,16 +1554,12 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ] }, "exceptions": [], "state": "enabled", - "hash": "10c9207834e45150fb4fa54cc22a9b92" + "hash": "2cb1f5495863943f82cb660836d9d844" }, "duckPlayer": { "exceptions": [], @@ -1732,10 +1716,6 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "settings": { @@ -2194,6 +2174,15 @@ } ] }, + { + "domain": "avito.ru", + "rules": [ + { + "selector": "[class*='advert-mimicry-block']", + "type": "hide" + } + ] + }, { "domain": "bbc.com", "rules": [ @@ -2335,15 +2324,6 @@ } ] }, - { - "domain": "dallasnews.com", - "rules": [ - { - "selector": "[data-targeting]", - "type": "hide-empty" - } - ] - }, { "domain": "dallasnews.com", "rules": [ @@ -2365,6 +2345,15 @@ } ] }, + { + "domain": "deseret.com", + "rules": [ + { + "selector": "[data-targeting]", + "type": "override" + } + ] + }, { "domain": "ebay.com", "rules": [ @@ -3414,6 +3403,15 @@ } ] }, + { + "domain": "whitakerfuneralhome.com", + "rules": [ + { + "selector": ".top-banner", + "type": "override" + } + ] + }, { "domain": "winnipegfreepress.com", "rules": [ @@ -3581,7 +3579,7 @@ ] }, "state": "enabled", - "hash": "b14a407a0c2cb050996646dfaadaf2db" + "hash": "acd3ac81772327d9018204dd0e268b28" }, "exceptionHandler": { "exceptions": [ @@ -3596,18 +3594,18 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "disabled", - "hash": "f3fcace884f1423ec9c111587966d0bb" + "hash": "4cf9d85cdd66d5b30776fb9a38f8e143" }, "fingerprintingAudio": { "state": "disabled", "exceptions": [ + { + "domain": "litebluesso.usps.gov", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1424" + }, { "domain": "earth.google.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1099" @@ -3619,16 +3617,16 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], - "hash": "47ea2125485511e0d94a8e767b246068" + "hash": "39522240455c067b38ce044b9c24d946" }, "fingerprintingBattery": { "exceptions": [ + { + "domain": "litebluesso.usps.gov", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1424" + }, { "domain": "earth.google.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1099" @@ -3640,14 +3638,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "enabled", - "hash": "0f48731cc79a1d8d063df9f955f6acd4" + "hash": "0cb72d321c9503d7601ab0d94c0f0ac5" }, "fingerprintingCanvas": { "settings": { @@ -3710,6 +3704,10 @@ "domain": "ikea.com", "reason": "When creating an account, after filling out details and going to e-mail confirmation, there is an error 'Something went wrong', and the e-mail may not be received. Clicking 'Send new code' appears successful, but after entering the code there is often another account creation error." }, + { + "domain": "litebluesso.usps.gov", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1424" + }, { "domain": "manulife.ca", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/499" @@ -3773,14 +3771,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "disabled", - "hash": "3b3d0307a60663097a8efad33af4fd08" + "hash": "464e5cecb38baef8eea5f747f44024c9" }, "fingerprintingHardware": { "settings": { @@ -3812,6 +3806,10 @@ "domain": "fedex.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/927" }, + { + "domain": "litebluesso.usps.gov", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1424" + }, { "domain": "realestate.com.au", "reason": "Site loads blank and does not proceed." @@ -3835,14 +3833,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "enabled", - "hash": "c2469977eaaaf117362492d2c993fd1c" + "hash": "34d0e8f5460664b2cc2664ae47336165" }, "fingerprintingScreenSize": { "settings": { @@ -3880,6 +3874,10 @@ "domain": "hyatt.com", "reason": "Site loads blank and does not proceed." }, + { + "domain": "litebluesso.usps.gov", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1424" + }, { "domain": "secureserver.net", "reason": "After entering login details and clicking to log in, the site shows an adwall and prevents login." @@ -3895,14 +3893,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "enabled", - "hash": "27afff6e74517f41184f4d3df479c53b" + "hash": "cbb7ca3551b6cfc219d228ef18a21130" }, "fingerprintingTemporaryStorage": { "exceptions": [ @@ -3910,6 +3904,10 @@ "domain": "fedex.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/927" }, + { + "domain": "litebluesso.usps.gov", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1424" + }, { "domain": "earth.google.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1099" @@ -3921,14 +3919,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "enabled", - "hash": "4d9f5564b76c44f76b90692d98230d78" + "hash": "5726f4a4e6b435744db0a0ebc857994b" }, "googleRejected": { "exceptions": [ @@ -3943,14 +3937,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "disabled", - "hash": "f3fcace884f1423ec9c111587966d0bb" + "hash": "4cf9d85cdd66d5b30776fb9a38f8e143" }, "gpc": { "state": "enabled", @@ -3967,6 +3957,10 @@ "domain": "costco.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/644" }, + { + "domain": "crunchyroll.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1422" + }, { "domain": "eventbrite.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/700" @@ -3994,10 +3988,6 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "settings": { @@ -4009,7 +3999,7 @@ "privacy-test-pages.site" ] }, - "hash": "402a82434b6f2b8a5321d9f004a7c33f" + "hash": "f3b1e7807c9b00ee721177ff8b9f1cd5" }, "harmfulApis": { "settings": { @@ -4122,14 +4112,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "disabled", - "hash": "0381a7afb0f7453acb315ab3e0884eaa" + "hash": "bbc5332342823cf86f7f29b5760e80ce" }, "https": { "state": "enabled", @@ -4157,13 +4143,9 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], - "hash": "2b7a26bbc23127a7ce24cc992066ad14" + "hash": "a4ed93a164b497b850ee1b4b337edcf3" }, "incontextSignup": { "exceptions": [], @@ -4204,10 +4186,6 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "settings": { @@ -4218,7 +4196,7 @@ ] }, "state": "enabled", - "hash": "002c32fcc15897c2ffae8045ac0bdcb3" + "hash": "6562f7d3e2dfb60604a0d56e5fe19ff2" }, "networkProtection": { "state": "disabled", @@ -4254,14 +4232,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "disabled", - "hash": "81f357de4bfc7abeddf1a3a3fb1fc7a9" + "hash": "6e117549e8a40b811250fdb77f754e0c" }, "privacyDashboard": { "exceptions": [], @@ -4313,14 +4287,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "disabled", - "hash": "6fb4590e0f11214e27a5386f24f1962f" + "hash": "f152d124dcf50f00bc8b5afd6d8cbe2e" }, "requestFilterer": { "state": "disabled", @@ -4336,16 +4306,12 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "settings": { "windowInMs": 0 }, - "hash": "c208c59a304e1d48cdd9ba85c0c8db25" + "hash": "ba2e7ce6c57f20ab022180ff29e013c4" }, "runtimeChecks": { "state": "disabled", @@ -4361,14 +4327,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "settings": {}, - "hash": "ca5b15f5db8334f68f29726b21d09c4a" + "hash": "fa49d2d969e1924b894c4b411a7c7430" }, "serviceworkerInitiatedRequests": { "exceptions": [ @@ -4383,14 +4345,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "disabled", - "hash": "f3fcace884f1423ec9c111587966d0bb" + "hash": "4cf9d85cdd66d5b30776fb9a38f8e143" }, "trackerAllowlist": { "state": "enabled", @@ -4519,6 +4477,17 @@ } ] }, + "adswizz.com": { + "rules": [ + { + "rule": "synchrobox.adswizz.com", + "domains": [ + "tunein.com" + ], + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1438" + } + ] + }, "adthrive.com": { "rules": [ { @@ -5233,14 +5202,6 @@ ], "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1107" }, - { - "rule": "alicdn.com.edgekey.net/", - "domains": [ - "aliexpress.com", - "aliexpress.us" - ], - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/570" - }, { "rule": "nintendo.com.edgekey.net/account/js/common.js", "domains": [ @@ -5496,7 +5457,7 @@ { "rule": "geoip-js.com/js/apis/geoip2/v2.1/geoip2.js", "domains": [ - "yourrewardcard.com" + "" ], "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1288" } @@ -5850,6 +5811,17 @@ } ] }, + "groovehq.com": { + "rules": [ + { + "rule": "widget.cluster.groovehq.com/_next/static/chunks/", + "domains": [ + "" + ], + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1416" + } + ] + }, "gstatic.com": { "rules": [ { @@ -6399,6 +6371,17 @@ } ] }, + "permutive.app": { + "rules": [ + { + "rule": "edge.permutive.app", + "domains": [ + "globaltv.com" + ], + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1418" + } + ] + }, "plotrabbit.com": { "rules": [ { @@ -6895,6 +6878,17 @@ } ] }, + "tiktok.com": { + "rules": [ + { + "rule": "www.tiktok.com/embed", + "domains": [ + "" + ], + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1412" + } + ] + }, "tiqcdn.com": { "rules": [ { @@ -7263,13 +7257,9 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], - "hash": "8cae71738e23bfd2e355653290f048b4" + "hash": "36405289e6da5cb590b78d1761d21ad7" }, "trackingCookies1p": { "settings": { @@ -7290,14 +7280,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "disabled", - "hash": "0bea41340334fc80820a598f8b892e30" + "hash": "9eb0c864f68329c5c98269b9d77fce94" }, "trackingCookies3p": { "settings": { @@ -7315,14 +7301,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "disabled", - "hash": "81f357de4bfc7abeddf1a3a3fb1fc7a9" + "hash": "6e117549e8a40b811250fdb77f754e0c" }, "trackingParameters": { "exceptions": [ @@ -7338,10 +7320,6 @@ "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" - }, { "domain": "theverge.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1326" @@ -7377,7 +7355,7 @@ ] }, "state": "enabled", - "hash": "aab19f2fd45ded0765912ee266c309df" + "hash": "cce5a16256c1522d32184562787a0ad7" }, "userAgentRotation": { "settings": { @@ -7395,14 +7373,10 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "disabled", - "hash": "9775f6a60d1271671e6ef7a7cd2811be" + "hash": "158b0b3e010b8606819c6bc60c435805" }, "voiceSearch": { "exceptions": [], @@ -7422,10 +7396,6 @@ { "domain": "marvel.com", "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1194" - }, - { - "domain": "paramountplus.com", - "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1085" } ], "state": "enabled", @@ -7458,7 +7428,7 @@ } ] }, - "hash": "40742df45658ad78c016f5a99178482d" + "hash": "c570e5c5011cf4cffbc62e7587a9731b" }, "windowsPermissionUsage": { "exceptions": [], diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index a18515068d..b125805159 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -7627,7 +7627,7 @@ CODE_SIGN_ENTITLEMENTS = PacketTunnelProvider/PacketTunnelProvider.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -7664,7 +7664,7 @@ CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -7756,7 +7756,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = ShareExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -7783,7 +7783,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -7929,7 +7929,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGo.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -7953,7 +7953,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGo.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; INFOPLIST_FILE = DuckDuckGo/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -8017,7 +8017,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = Widgets/Info.plist; @@ -8052,7 +8052,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -8086,7 +8086,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = OpenAction/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -8116,7 +8116,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -8402,7 +8402,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGoAlpha.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -8428,7 +8428,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -8460,7 +8460,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -8497,7 +8497,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -8533,7 +8533,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -8568,11 +8568,11 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 0; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -8746,11 +8746,11 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 0; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -8779,10 +8779,10 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 0; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 0; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; diff --git a/DuckDuckGo/Settings.bundle/Root.plist b/DuckDuckGo/Settings.bundle/Root.plist index a8d0320dbc..5efa0aff1d 100644 --- a/DuckDuckGo/Settings.bundle/Root.plist +++ b/DuckDuckGo/Settings.bundle/Root.plist @@ -6,7 +6,7 @@ DefaultValue - 7.94.0 + 7.95.0 Key version Title diff --git a/fastlane/metadata/default/release_notes.txt b/fastlane/metadata/default/release_notes.txt index 4942898476..35bc242613 100644 --- a/fastlane/metadata/default/release_notes.txt +++ b/fastlane/metadata/default/release_notes.txt @@ -1,3 +1,3 @@ -Bug fixes and other improvements. +You can now move the URL bar to the bottom of the screen by changing the location in App settings. Join our fully distributed team and help raise the standard of trust online! https://duckduckgo.com/hiring From 3edbcdc0b3e7b408967ec3ae28a086b437943f85 Mon Sep 17 00:00:00 2001 From: Brad Slayter Date: Thu, 2 Nov 2023 08:49:35 -0500 Subject: [PATCH 6/8] Update to config v4 (#2114) --- Core/AppURLs.swift | 2 +- DuckDuckGoTests/AppURLsTests.swift | 2 +- scripts/update_embedded.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/AppURLs.swift b/Core/AppURLs.swift index e7ebfa07f1..31ba6fbf13 100644 --- a/Core/AppURLs.swift +++ b/Core/AppURLs.swift @@ -36,7 +36,7 @@ public extension URL { // The following URLs shall match the ones in update_embedded.sh. // Danger checks that the URLs match on every PR. If the code changes, the regex that Danger uses may need an update. - static let privacyConfig = URL(string: "\(staticBase)/trackerblocking/config/v3/ios-config.json")! + static let privacyConfig = URL(string: "\(staticBase)/trackerblocking/config/v4/ios-config.json")! static let trackerDataSet = URL(string: "\(staticBase)/trackerblocking/v5/current/ios-tds.json")! static let bloomFilter = URL(string: "\(staticBase)/https/https-mobile-v2-bloom.bin")! static let bloomFilterSpec = URL(string: "\(staticBase)/https/https-mobile-v2-bloom-spec.json")! diff --git a/DuckDuckGoTests/AppURLsTests.swift b/DuckDuckGoTests/AppURLsTests.swift index eaac31d5f8..0d2adfdbe1 100644 --- a/DuckDuckGoTests/AppURLsTests.swift +++ b/DuckDuckGoTests/AppURLsTests.swift @@ -275,7 +275,7 @@ final class AppURLsTests: XCTestCase { func testExternalDependencyURLsNotChanged() { XCTAssertEqual(URL.surrogates.absoluteString, "https://staticcdn.duckduckgo.com/surrogates.txt") - XCTAssertEqual(URL.privacyConfig.absoluteString, "https://staticcdn.duckduckgo.com/trackerblocking/config/v3/ios-config.json") + XCTAssertEqual(URL.privacyConfig.absoluteString, "https://staticcdn.duckduckgo.com/trackerblocking/config/v4/ios-config.json") XCTAssertEqual(URL.trackerDataSet.absoluteString, "https://staticcdn.duckduckgo.com/trackerblocking/v5/current/ios-tds.json") XCTAssertEqual(URL.bloomFilter.absoluteString, "https://staticcdn.duckduckgo.com/https/https-mobile-v2-bloom.bin") XCTAssertEqual(URL.bloomFilterSpec.absoluteString, "https://staticcdn.duckduckgo.com/https/https-mobile-v2-bloom-spec.json") diff --git a/scripts/update_embedded.sh b/scripts/update_embedded.sh index 0001b6d31c..88cde7f816 100755 --- a/scripts/update_embedded.sh +++ b/scripts/update_embedded.sh @@ -62,4 +62,4 @@ performUpdate() { # The following URLs shall match the ones in AppURLs.swift. Danger checks that the URLs match on every PR. If the code changes, the regex that Danger uses may need an update. performUpdate 'https://staticcdn.duckduckgo.com/trackerblocking/v5/current/ios-tds.json' "${base_dir}/Core/AppTrackerDataSetProvider.swift" "${base_dir}/Core/trackerData.json" -performUpdate 'https://staticcdn.duckduckgo.com/trackerblocking/config/v3/ios-config.json' "${base_dir}/Core/AppPrivacyConfigurationDataProvider.swift" "${base_dir}/Core/ios-config.json" +performUpdate 'https://staticcdn.duckduckgo.com/trackerblocking/config/v4/ios-config.json' "${base_dir}/Core/AppPrivacyConfigurationDataProvider.swift" "${base_dir}/Core/ios-config.json" From 9210ed953a4133867cceb2ddb00efb224e394950 Mon Sep 17 00:00:00 2001 From: Lorenzo Mattei Date: Fri, 3 Nov 2023 14:46:35 +0100 Subject: [PATCH 7/8] Add e2e test for email protection deep-links (#2123) --- .maestro/release_tests/emailprotection.yaml | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .maestro/release_tests/emailprotection.yaml diff --git a/.maestro/release_tests/emailprotection.yaml b/.maestro/release_tests/emailprotection.yaml new file mode 100644 index 0000000000..67b41ef000 --- /dev/null +++ b/.maestro/release_tests/emailprotection.yaml @@ -0,0 +1,24 @@ +appId: com.duckduckgo.mobile.ios +tags: + - release + +--- + +- clearState +- launchApp +- runFlow: + when: + visible: + text: "Let’s Do It!" + index: 0 + file: ../shared/onboarding.yaml + +- tapOn: Settings +- scroll +- scroll +- assertVisible: Email Protection +- tapOn: Email Protection, Block email trackers and hide your address +- assertVisible: + id: searchEntry +- assertVisible: https://duckduckgo.com/email/ +- assertVisible: Email privacy, simplified. \ No newline at end of file From ecf6b1ffd68881faf76481b354c460e48b900af4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20=C5=81yp?= Date: Sat, 4 Nov 2023 20:57:56 +0100 Subject: [PATCH 8/8] Alert user about abnormal app conditions (#2110) --- Core/AppURLs.swift | 1 + Core/ContentBlocking.swift | 8 +- DuckDuckGo.xcodeproj/project.pbxproj | 64 ++- .../xcshareddata/swiftpm/Package.resolved | 4 +- DuckDuckGo/AppDelegate.swift | 58 ++- DuckDuckGo/CriticalAlerts.swift | 73 +++ DuckDuckGo/EmailManagerRequestDelegate.swift | 16 +- DuckDuckGo/EmailSignupViewController.swift | 28 +- DuckDuckGo/MainViewController+Email.swift | 24 - DuckDuckGo/MainViewController.swift | 14 +- DuckDuckGo/UserText.swift | 12 + DuckDuckGo/bg.lproj/Feedback.strings | 6 - DuckDuckGo/bg.lproj/Localizable.strings | 479 ++++++++++++++++- DuckDuckGo/bg.lproj/Settings.strings | 34 +- DuckDuckGo/cs.lproj/Feedback.strings | 6 - DuckDuckGo/cs.lproj/Localizable.strings | 481 ++++++++++++++++- DuckDuckGo/cs.lproj/Settings.strings | 34 +- DuckDuckGo/da.lproj/Feedback.strings | 6 - DuckDuckGo/da.lproj/Localizable.strings | 33 ++ DuckDuckGo/da.lproj/Settings.strings | 34 +- DuckDuckGo/de.lproj/Feedback.strings | 6 - DuckDuckGo/de.lproj/Localizable.strings | 479 ++++++++++++++++- DuckDuckGo/de.lproj/Settings.strings | 34 +- DuckDuckGo/el.lproj/Feedback.strings | 6 - DuckDuckGo/el.lproj/Localizable.strings | 479 ++++++++++++++++- DuckDuckGo/el.lproj/Settings.strings | 34 +- DuckDuckGo/en.lproj/Localizable.strings | 27 + DuckDuckGo/es.lproj/Feedback.strings | 6 - DuckDuckGo/es.lproj/Localizable.strings | 479 ++++++++++++++++- DuckDuckGo/es.lproj/Settings.strings | 34 +- DuckDuckGo/et.lproj/Feedback.strings | 6 - DuckDuckGo/et.lproj/Localizable.strings | 479 ++++++++++++++++- DuckDuckGo/et.lproj/Settings.strings | 34 +- DuckDuckGo/fi.lproj/Feedback.strings | 6 - DuckDuckGo/fi.lproj/Localizable.strings | 479 ++++++++++++++++- DuckDuckGo/fi.lproj/Settings.strings | 34 +- DuckDuckGo/fr.lproj/Feedback.strings | 6 - DuckDuckGo/fr.lproj/Localizable.strings | 481 ++++++++++++++++- DuckDuckGo/fr.lproj/Settings.strings | 34 +- DuckDuckGo/hr.lproj/Feedback.strings | 6 - DuckDuckGo/hr.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/hr.lproj/Settings.strings | 34 +- DuckDuckGo/hu.lproj/Feedback.strings | 6 - DuckDuckGo/hu.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/hu.lproj/Settings.strings | 34 +- DuckDuckGo/it.lproj/Feedback.strings | 6 - DuckDuckGo/it.lproj/Localizable.strings | 490 +++++++++++++++++- DuckDuckGo/it.lproj/Settings.strings | 38 +- DuckDuckGo/lt.lproj/Feedback.strings | 6 - DuckDuckGo/lt.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/lt.lproj/Settings.strings | 34 +- DuckDuckGo/lv.lproj/Feedback.strings | 6 - DuckDuckGo/lv.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/lv.lproj/Settings.strings | 34 +- DuckDuckGo/nb.lproj/Feedback.strings | 6 - DuckDuckGo/nb.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/nb.lproj/Settings.strings | 34 +- DuckDuckGo/nl.lproj/Feedback.strings | 6 - DuckDuckGo/nl.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/nl.lproj/Settings.strings | 34 +- DuckDuckGo/pl.lproj/Feedback.strings | 6 - DuckDuckGo/pl.lproj/Localizable.strings | 490 +++++++++++++++++- DuckDuckGo/pl.lproj/Settings.strings | 34 +- DuckDuckGo/pt.lproj/Feedback.strings | 6 - DuckDuckGo/pt.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/pt.lproj/Settings.strings | 34 +- DuckDuckGo/ro.lproj/Feedback.strings | 6 - DuckDuckGo/ro.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/ro.lproj/Settings.strings | 34 +- DuckDuckGo/ru.lproj/Feedback.strings | 6 - DuckDuckGo/ru.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/ru.lproj/Settings.strings | 34 +- DuckDuckGo/sk.lproj/Feedback.strings | 6 - DuckDuckGo/sk.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/sk.lproj/Settings.strings | 34 +- DuckDuckGo/sl.lproj/Feedback.strings | 6 - DuckDuckGo/sl.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/sl.lproj/Settings.strings | 34 +- DuckDuckGo/sv.lproj/Feedback.strings | 6 - DuckDuckGo/sv.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/sv.lproj/Settings.strings | 34 +- DuckDuckGo/tr.lproj/Feedback.strings | 6 - DuckDuckGo/tr.lproj/Localizable.strings | 488 ++++++++++++++++- DuckDuckGo/tr.lproj/Settings.strings | 34 +- .../bg.lproj/InfoPlist.strings | 9 + .../bg.lproj/Localizable.strings | 20 +- .../cs.lproj/InfoPlist.strings | 9 + .../cs.lproj/Localizable.strings | 20 +- .../da.lproj/InfoPlist.strings | 9 + .../da.lproj/Localizable.strings | 20 +- .../de.lproj/InfoPlist.strings | 9 + .../de.lproj/Localizable.strings | 20 +- .../el.lproj/InfoPlist.strings | 9 + .../el.lproj/Localizable.strings | 20 +- .../es.lproj/InfoPlist.strings | 9 + .../es.lproj/Localizable.strings | 20 +- .../et.lproj/InfoPlist.strings | 9 + .../et.lproj/Localizable.strings | 20 +- .../fi.lproj/InfoPlist.strings | 9 + .../fi.lproj/Localizable.strings | 20 +- .../fr.lproj/InfoPlist.strings | 9 + .../fr.lproj/Localizable.strings | 20 +- .../hr.lproj/InfoPlist.strings | 9 + .../hr.lproj/Localizable.strings | 20 +- .../hu.lproj/InfoPlist.strings | 9 + .../hu.lproj/Localizable.strings | 20 +- .../it.lproj/InfoPlist.strings | 9 + .../it.lproj/Localizable.strings | 20 +- .../lt.lproj/InfoPlist.strings | 9 + .../lt.lproj/Localizable.strings | 20 +- .../lv.lproj/InfoPlist.strings | 9 + .../lv.lproj/Localizable.strings | 20 +- .../nb.lproj/InfoPlist.strings | 9 + .../nb.lproj/Localizable.strings | 20 +- .../nl.lproj/InfoPlist.strings | 9 + .../nl.lproj/Localizable.strings | 20 +- .../pl.lproj/InfoPlist.strings | 9 + .../pl.lproj/Localizable.strings | 20 +- .../pt.lproj/InfoPlist.strings | 9 + .../pt.lproj/Localizable.strings | 20 +- .../ro.lproj/InfoPlist.strings | 9 + .../ro.lproj/Localizable.strings | 20 +- .../ru.lproj/InfoPlist.strings | 9 + .../ru.lproj/Localizable.strings | 20 +- .../sk.lproj/InfoPlist.strings | 9 + .../sk.lproj/Localizable.strings | 20 +- .../sl.lproj/InfoPlist.strings | 9 + .../sl.lproj/Localizable.strings | 20 +- .../sv.lproj/InfoPlist.strings | 9 + .../sv.lproj/Localizable.strings | 20 +- .../tr.lproj/InfoPlist.strings | 9 + .../tr.lproj/Localizable.strings | 20 +- 132 files changed, 12683 insertions(+), 499 deletions(-) create mode 100644 DuckDuckGo/CriticalAlerts.swift create mode 100644 PacketTunnelProvider/bg.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/cs.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/da.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/de.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/el.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/es.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/et.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/fi.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/fr.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/hr.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/hu.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/it.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/lt.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/lv.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/nb.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/nl.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/pl.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/pt.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/ro.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/ru.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/sk.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/sl.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/sv.lproj/InfoPlist.strings create mode 100644 PacketTunnelProvider/tr.lproj/InfoPlist.strings diff --git a/Core/AppURLs.swift b/Core/AppURLs.swift index 31ba6fbf13..e2250c3744 100644 --- a/Core/AppURLs.swift +++ b/Core/AppURLs.swift @@ -29,6 +29,7 @@ public extension URL { static let autocomplete = URL(string: "\(base)/ac/")! static let emailProtection = URL(string: "\(base)/email")! + static let emailProtectionSignUp = URL(string: "\(base)/email/start-incontext")! static let emailProtectionQuickLink = URL(string: AppDeepLinkSchemes.quickLink.appending("\(ddg.host!)/email"))! static let aboutLink = URL(string: AppDeepLinkSchemes.quickLink.appending("\(ddg.host!)/about"))! diff --git a/Core/ContentBlocking.swift b/Core/ContentBlocking.swift index b38a36baf3..2767e48e4d 100644 --- a/Core/ContentBlocking.swift +++ b/Core/ContentBlocking.swift @@ -22,6 +22,7 @@ import BrowserServicesKit import Combine import Common + public final class ContentBlocking { public static let shared = ContentBlocking() @@ -34,6 +35,11 @@ public final class ContentBlocking { private let exceptionsSource: DefaultContentBlockerRulesExceptionsSource private let lastCompiledRulesStore: AppLastCompiledRulesStore + public var onCriticalError: (() -> Void)? { + didSet { + contentBlockingManager.onCriticalError = onCriticalError + } + } private init(privacyConfigurationManager: PrivacyConfigurationManaging? = nil) { let internalUserDecider = DefaultInternalUserDecider(store: InternalUserStore()) @@ -128,7 +134,7 @@ public final class ContentBlocking { } } - + public func makeAdClickAttributionDetection(tld: TLD) -> AdClickAttributionDetection { AdClickAttributionDetection(feature: adClickAttribution, tld: tld, diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 10a58401c4..e49528f6ea 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -714,6 +714,7 @@ C1F341C52A6924000032057B /* EmailAddressPromptView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1F341C42A6924000032057B /* EmailAddressPromptView.swift */; }; C1F341C72A6924100032057B /* EmailAddressPromptViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1F341C62A6924100032057B /* EmailAddressPromptViewModel.swift */; }; C1F341C92A6926920032057B /* EmailAddressPromptViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1F341C82A6926920032057B /* EmailAddressPromptViewController.swift */; }; + CB1143DE2AF6D4B600C1CCD3 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CB1143DC2AF6D4B600C1CCD3 /* InfoPlist.strings */; }; CB258D1229A4F24900DEBA24 /* ConfigurationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB258D0F29A4D0FD00DEBA24 /* ConfigurationManager.swift */; }; CB258D1329A4F24E00DEBA24 /* ConfigurationStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB84C7C029A3F0280088A5B8 /* ConfigurationStore.swift */; }; CB258D1D29A52AF900DEBA24 /* EtagStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9896632322C56716007BE4FE /* EtagStorage.swift */; }; @@ -739,6 +740,7 @@ CBD4F140279EBFB300B20FD7 /* SwiftUICollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB1AEFB02799AA940031AE3D /* SwiftUICollectionViewCell.swift */; }; CBDD5DDF29A6736A00832877 /* APIHeadersTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBDD5DDE29A6736A00832877 /* APIHeadersTests.swift */; }; CBDD5DE129A6741300832877 /* MockBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBDD5DE029A6741300832877 /* MockBundle.swift */; }; + CBEFB9142AE0844700DEDE7B /* CriticalAlerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBEFB9102ADFFE7900DEDE7B /* CriticalAlerts.swift */; }; D63657192A7BAE7C001AF19D /* EmailManagerRequestDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D63657182A7BAE7C001AF19D /* EmailManagerRequestDelegate.swift */; }; EA39B7E2268A1A35000C62CD /* privacy-reference-tests in Resources */ = {isa = PBXBuildFile; fileRef = EA39B7E1268A1A35000C62CD /* privacy-reference-tests */; }; EAB19EDA268963510015D3EA /* DomainMatchingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB19ED9268963510015D3EA /* DomainMatchingTests.swift */; }; @@ -2292,22 +2294,47 @@ C1F341C42A6924000032057B /* EmailAddressPromptView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmailAddressPromptView.swift; sourceTree = ""; }; C1F341C62A6924100032057B /* EmailAddressPromptViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmailAddressPromptViewModel.swift; sourceTree = ""; }; C1F341C82A6926920032057B /* EmailAddressPromptViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmailAddressPromptViewController.swift; sourceTree = ""; }; + CB1143DD2AF6D4B600C1CCD3 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/InfoPlist.strings; sourceTree = ""; }; + CB15F4762AF6D5100062A994 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; }; + CB18F2712AF6D4E400A0F8FE /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = el.lproj/InfoPlist.strings; sourceTree = ""; }; CB1AEFB02799AA940031AE3D /* SwiftUICollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUICollectionViewCell.swift; sourceTree = ""; }; + CB1FAE472AF6D59B003F452F /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/InfoPlist.strings; sourceTree = ""; }; CB24F70E29A3EB15006DCC58 /* AppConfigurationURLProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppConfigurationURLProvider.swift; path = ../Core/AppConfigurationURLProvider.swift; sourceTree = ""; }; CB258D0C29A4CD0500DEBA24 /* Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Configuration.swift; sourceTree = ""; }; CB258D0F29A4D0FD00DEBA24 /* ConfigurationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigurationManager.swift; sourceTree = ""; }; + CB29792D2AF6D5C1006C461D /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; }; CB2A7EEE283D185100885F67 /* RulesCompilationMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulesCompilationMonitor.swift; sourceTree = ""; }; CB2A7EF028410DF700885F67 /* PixelEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PixelEvent.swift; sourceTree = ""; }; CB2A7EF3285383B300885F67 /* AppLastCompiledRulesStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLastCompiledRulesStore.swift; sourceTree = ""; }; + CB2C47822AF6D55800AEDCD9 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = nb.lproj/InfoPlist.strings; sourceTree = ""; }; + CB4448752AF6D51D001F93F7 /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = hr.lproj/InfoPlist.strings; sourceTree = ""; }; + CB5038622AF6D563007FD69F /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; }; + CB6ABD002AF6D52B004A8224 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/InfoPlist.strings; sourceTree = ""; }; + CB6CE65B2AF6D4EE00119848 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; + CB7407BC2AF6D56D0090A41C /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; }; + CB75AA132AF6D5AA00AED266 /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = sl.lproj/InfoPlist.strings; sourceTree = ""; }; CB84C7C029A3F0280088A5B8 /* ConfigurationStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigurationStore.swift; sourceTree = ""; }; + CB8EF4A32AF6D4C200EF158D /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/InfoPlist.strings; sourceTree = ""; }; + CB8F1F7D2AF6D5370024BF0E /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; }; CB9B8738278C8E72001F4906 /* WidgetEducationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetEducationViewController.swift; sourceTree = ""; }; CB9B873B278C8FEA001F4906 /* WidgetEducationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetEducationView.swift; sourceTree = ""; }; CB9B873D278C93C2001F4906 /* HomeMessage.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = HomeMessage.xcassets; sourceTree = ""; }; + CB9F2A4B2AF6D4FB00F924BB /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/InfoPlist.strings; sourceTree = ""; }; + CBA1DE942AF6D579007C9457 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = ""; }; CBAA195927BFE15600A4BD49 /* NSManagedObjectContextExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSManagedObjectContextExtension.swift; sourceTree = ""; }; CBAA195B27C3982A00A4BD49 /* PrivacyFeatures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyFeatures.swift; sourceTree = ""; }; + CBB6B2542AF6D543006B777C /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/InfoPlist.strings; sourceTree = ""; }; + CBC7AB542AF6D583008CB798 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/InfoPlist.strings; sourceTree = ""; }; + CBC8DC252AF6D4CD00BA681A /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/InfoPlist.strings; sourceTree = ""; }; CBD4F13B279EBF4A00B20FD7 /* HomeMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessage.swift; sourceTree = ""; }; + CBD7AE812AF6D5B6009052FD /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = ""; }; CBDD5DDE29A6736A00832877 /* APIHeadersTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APIHeadersTests.swift; sourceTree = ""; }; CBDD5DE029A6741300832877 /* MockBundle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockBundle.swift; sourceTree = ""; }; + CBE099292AF6D54D000EFC47 /* lv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lv; path = lv.lproj/InfoPlist.strings; sourceTree = ""; }; + CBECB27B2AF6D58D006960FA /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; + CBEF49902AF6D50600BFBD7D /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/InfoPlist.strings; sourceTree = ""; }; + CBEFB9102ADFFE7900DEDE7B /* CriticalAlerts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CriticalAlerts.swift; sourceTree = ""; }; + CBF0FA762AF6D4D800FB1C5B /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; CBF14FC227970072001D94D0 /* HomeMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessageView.swift; sourceTree = ""; }; CBF14FC427970AB0001D94D0 /* HomeMessageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessageViewModel.swift; sourceTree = ""; }; CBF14FC627970C8A001D94D0 /* HomeMessageCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessageCollectionViewCell.swift; sourceTree = ""; }; @@ -2632,6 +2659,7 @@ 02025666298818B200E694E7 /* AppTrackingProtectionPacketTunnelProvider.swift */, 02025B1429884EA500E694E7 /* DDGObserverFactory.swift */, 02025668298818B200E694E7 /* Info.plist */, + CB1143DC2AF6D4B600C1CCD3 /* InfoPlist.strings */, 02025669298818B200E694E7 /* PacketTunnelProvider.entitlements */, EEFC6A5F2AC0F2F80065027D /* UserText.swift */, EEDFE2DC2AC6ED4F00F0E19C /* Localizable.strings */, @@ -5045,6 +5073,7 @@ 850ABD022AC4D46C00A733DF /* SuggestionTray.storyboard */, 85864FBB24D31EF300E756FF /* SuggestionTrayViewController.swift */, 851DFD86212C39D300D95F20 /* TabSwitcherButton.swift */, + CBEFB9102ADFFE7900DEDE7B /* CriticalAlerts.swift */, ); name = Main; sourceTree = ""; @@ -5647,6 +5676,7 @@ buildActionMask = 2147483647; files = ( 0262085C2A37915D006CB755 /* ios_blocklist_075.json in Resources */, + CB1143DE2AF6D4B600C1CCD3 /* InfoPlist.strings in Resources */, EEDFE2DA2AC6ED4F00F0E19C /* Localizable.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6166,6 +6196,7 @@ 4B53648A26718D0E001AA041 /* EmailWaitlist.swift in Sources */, 027F48762A4B5FBE001A1C6C /* AppTPLinkButton.swift in Sources */, 8524CC98246D66E100E59D45 /* String+Markdown.swift in Sources */, + CBEFB9142AE0844700DEDE7B /* CriticalAlerts.swift in Sources */, 020108A329A561C300644F9D /* AppTPActivityView.swift in Sources */, 02A54A9E2A097F0F000C8FED /* AppTPCollectionViewCell.swift in Sources */, C1B7B529289420830098FD6A /* RemoteMessaging.xcdatamodeld in Sources */, @@ -7482,6 +7513,37 @@ name = OmniBar.xib; sourceTree = ""; }; + CB1143DC2AF6D4B600C1CCD3 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + CB1143DD2AF6D4B600C1CCD3 /* bg */, + CB8EF4A32AF6D4C200EF158D /* cs */, + CBC8DC252AF6D4CD00BA681A /* da */, + CBF0FA762AF6D4D800FB1C5B /* de */, + CB18F2712AF6D4E400A0F8FE /* el */, + CB6CE65B2AF6D4EE00119848 /* es */, + CB9F2A4B2AF6D4FB00F924BB /* et */, + CBEF49902AF6D50600BFBD7D /* fi */, + CB15F4762AF6D5100062A994 /* fr */, + CB4448752AF6D51D001F93F7 /* hr */, + CB6ABD002AF6D52B004A8224 /* hu */, + CB8F1F7D2AF6D5370024BF0E /* it */, + CBB6B2542AF6D543006B777C /* lt */, + CBE099292AF6D54D000EFC47 /* lv */, + CB2C47822AF6D55800AEDCD9 /* nb */, + CB5038622AF6D563007FD69F /* nl */, + CB7407BC2AF6D56D0090A41C /* pl */, + CBA1DE942AF6D579007C9457 /* pt */, + CBC7AB542AF6D583008CB798 /* ro */, + CBECB27B2AF6D58D006960FA /* ru */, + CB1FAE472AF6D59B003F452F /* sk */, + CB75AA132AF6D5AA00AED266 /* sl */, + CBD7AE812AF6D5B6009052FD /* sv */, + CB29792D2AF6D5C1006C461D /* tr */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; EEDFE2DC2AC6ED4F00F0E19C /* Localizable.strings */ = { isa = PBXVariantGroup; children = ( @@ -8996,7 +9058,7 @@ repositoryURL = "https://github.com/DuckDuckGo/BrowserServicesKit"; requirement = { kind = exactVersion; - version = 82.1.0; + version = 82.2.0; }; }; C14882EB27F211A000D59F0C /* XCRemoteSwiftPackageReference "SwiftSoup" */ = { diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 0836aa38a9..b7ebada7d8 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -15,8 +15,8 @@ "repositoryURL": "https://github.com/DuckDuckGo/BrowserServicesKit", "state": { "branch": null, - "revision": "71e916d070cedcba9ccb3ce9431797260bf5cbea", - "version": "82.1.0" + "revision": "86e4aba326ce06585b842ab13023ce08f86ac424", + "version": "82.2.0" } }, { diff --git a/DuckDuckGo/AppDelegate.swift b/DuckDuckGo/AppDelegate.swift index 0b13604477..cc6917da35 100644 --- a/DuckDuckGo/AppDelegate.swift +++ b/DuckDuckGo/AppDelegate.swift @@ -88,6 +88,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } #endif + ContentBlocking.shared.onCriticalError = presentPreemptiveCrashAlert + // Can be removed after a couple of versions cleanUpMacPromoExperiment2() cleanUpIncrementalRolloutPixelTest() @@ -123,6 +125,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { removeEmailWaitlistState() + var shouldPresentInsufficientDiskSpaceAlertAndCrash = false Database.shared.loadStore { context, error in guard let context = context else { @@ -142,8 +145,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate { Pixel.fire(pixel: .dbInitializationError, error: error, withAdditionalParameters: parameters) - Thread.sleep(forTimeInterval: 1) - fatalError("Could not create database stack: \(error.localizedDescription)") + if error.isDiskFull { + shouldPresentInsufficientDiskSpaceAlertAndCrash = true + return + } else { + Thread.sleep(forTimeInterval: 1) + fatalError("Could not create database stack: \(error.localizedDescription)") + } } } DatabaseMigration.migrate(to: context) @@ -158,8 +166,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate { Pixel.fire(pixel: .bookmarksCouldNotLoadDatabase) } - Thread.sleep(forTimeInterval: 1) - fatalError("Could not create Bookmarks database stack: \(error?.localizedDescription ?? "err")") + if shouldPresentInsufficientDiskSpaceAlertAndCrash { + return + } else { + Thread.sleep(forTimeInterval: 1) + fatalError("Could not create Bookmarks database stack: \(error?.localizedDescription ?? "err")") + } } let legacyStorage = LegacyBookmarksCoreDataStorage() @@ -179,8 +191,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate { Pixel.fire(pixel: .appTPCouldNotLoadDatabase) } - Thread.sleep(forTimeInterval: 1) - fatalError("Could not create AppTP database stack: \(error?.localizedDescription ?? "err")") + if shouldPresentInsufficientDiskSpaceAlertAndCrash { + return + } else { + Thread.sleep(forTimeInterval: 1) + fatalError("Could not create AppTP database stack: \(error?.localizedDescription ?? "err")") + } } } @@ -229,7 +245,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate { window = UIWindow(frame: UIScreen.main.bounds) window?.rootViewController = main window?.makeKeyAndVisible() - + + if shouldPresentInsufficientDiskSpaceAlertAndCrash { + presentInsufficientDiskSpaceAlert() + } + autoClear = AutoClear(worker: main) autoClear?.applicationDidLaunch() @@ -258,6 +278,18 @@ class AppDelegate: UIResponder, UIApplicationDelegate { return true } + private func presentPreemptiveCrashAlert() { + Task { @MainActor in + let alertController = CriticalAlerts.makePreemptiveCrashAlert() + window?.rootViewController?.present(alertController, animated: true, completion: nil) + } + } + + private func presentInsufficientDiskSpaceAlert() { + let alertController = CriticalAlerts.makeInsufficientDiskSpaceAlert() + window?.rootViewController?.present(alertController, animated: true, completion: nil) + } + private func cleanUpMacPromoExperiment2() { UserDefaults.standard.removeObject(forKey: "com.duckduckgo.ios.macPromoMay23.exp2.cohort") } @@ -773,3 +805,15 @@ extension AppDelegate: UNUserNotificationCenterDelegate { } } } + +private extension Error { + + var isDiskFull: Bool { + let nsError = self as NSError + if let underlyingError = nsError.userInfo["NSUnderlyingError"] as? NSError, underlyingError.code == 13 { + return true + } + return false + } + +} diff --git a/DuckDuckGo/CriticalAlerts.swift b/DuckDuckGo/CriticalAlerts.swift new file mode 100644 index 0000000000..c2e46242b3 --- /dev/null +++ b/DuckDuckGo/CriticalAlerts.swift @@ -0,0 +1,73 @@ +// +// CriticalAlerts.swift +// DuckDuckGo +// +// Copyright © 2023 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 UIKit +import Core + +struct CriticalAlerts { + + static func makePreemptiveCrashAlert() -> UIAlertController { + let alertController = UIAlertController(title: UserText.preemptiveCrashTitle, + message: UserText.preemptiveCrashBody, + preferredStyle: .alert) + alertController.overrideUserInterfaceStyle() + + let crashButton = UIAlertAction(title: UserText.preemptiveCrashAction, style: .default) { _ in + fatalError("App is in unrecoverable state") + } + + alertController.addAction(crashButton) + return alertController + } + + static func makeInsufficientDiskSpaceAlert() -> UIAlertController { + let alertController = UIAlertController(title: UserText.insufficientDiskSpaceTitle, + message: UserText.insufficientDiskSpaceBody, + preferredStyle: .alert) + alertController.overrideUserInterfaceStyle() + + let openSettingsButton = UIAlertAction(title: UserText.insufficientDiskSpaceAction, style: .default) { _ in + let url = URL(string: UIApplication.openSettingsURLString)! + UIApplication.shared.open(url, options: [:]) { _ in + fatalError("App is in unrecoverable state") + } + } + + alertController.addAction(openSettingsButton) + return alertController + } + + static func makeEmailProtectionSignInAlert() -> UIAlertController { + let alertController = UIAlertController(title: UserText.emailProtectionSignInTitle, + message: UserText.emailProtectionSignInBody, + preferredStyle: .alert) + alertController.overrideUserInterfaceStyle() + + let closeButton = UIAlertAction(title: UserText.keyCommandClose, style: .cancel) + let signInButton = UIAlertAction(title: UserText.emailProtectionSignInAction, style: .default) { _ in + UIApplication.shared.open(URL.emailProtectionQuickLink, options: [:], completionHandler: nil) + } + + alertController.addAction(closeButton) + alertController.addAction(signInButton) + return alertController + } + +} diff --git a/DuckDuckGo/EmailManagerRequestDelegate.swift b/DuckDuckGo/EmailManagerRequestDelegate.swift index 5664b7a7d6..47f3b0f253 100644 --- a/DuckDuckGo/EmailManagerRequestDelegate.swift +++ b/DuckDuckGo/EmailManagerRequestDelegate.swift @@ -53,27 +53,39 @@ extension EmailManagerRequestDelegate { } // swiftlint:enable function_parameter_count - func emailManagerKeychainAccessFailed(accessType: EmailKeychainAccessType, error: EmailKeychainAccessError) { + func emailManagerKeychainAccessFailed(_ emailManager: EmailManager, + accessType: EmailKeychainAccessType, + error: EmailKeychainAccessError) { var parameters = [ PixelParameters.emailKeychainAccessType: accessType.rawValue, PixelParameters.emailKeychainError: error.errorDescription ] - + + var errorCode: Int32? if case let .keychainLookupFailure(status) = error { + errorCode = status parameters[PixelParameters.emailKeychainKeychainStatus] = String(status) parameters[PixelParameters.emailKeychainKeychainOperation] = "lookup" } if case let .keychainDeleteFailure(status) = error { + errorCode = status parameters[PixelParameters.emailKeychainKeychainStatus] = String(status) parameters[PixelParameters.emailKeychainKeychainOperation] = "delete" } if case let .keychainSaveFailure(status) = error { + errorCode = status parameters[PixelParameters.emailKeychainKeychainStatus] = String(status) parameters[PixelParameters.emailKeychainKeychainOperation] = "save" } + // https://app.asana.com/0/414709148257752/1205196846001239/f + if errorCode == errSecNotAvailable { + emailManager.forceSignOut() + } + Pixel.fire(pixel: .emailAutofillKeychainError, withAdditionalParameters: parameters) } + } diff --git a/DuckDuckGo/EmailSignupViewController.swift b/DuckDuckGo/EmailSignupViewController.swift index b2eb876cc8..2bcfe0f28e 100644 --- a/DuckDuckGo/EmailSignupViewController.swift +++ b/DuckDuckGo/EmailSignupViewController.swift @@ -34,8 +34,6 @@ class EmailSignupViewController: UIViewController { static let duckDuckGoTitle: String = "DuckDuckGo" static let backImage = UIImage(systemName: "chevron.left") - static let signUpUrl: String = "https://duckduckgo.com/email/start-incontext" - static let emailPath: String = "email/" static let emailStartInContextPath: String = "email/start-incontext" static let emailChooseAddressPath: String = "email/choose-address" @@ -179,7 +177,7 @@ class EmailSignupViewController: UIViewController { // Slight delay needed for userScripts to load otherwise email protection webpage reports that this is an unsupported browser let workItem = DispatchWorkItem { [unowned self] in - self.loadUrl(URL(string: Constants.signUpUrl)) + self.loadUrl(URL.emailProtectionSignUp) } DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: workItem) @@ -357,30 +355,6 @@ extension EmailSignupViewController: EmailManagerRequestDelegate { } // swiftlint:enable function_parameter_count - func emailManagerKeychainAccessFailed(accessType: EmailKeychainAccessType, error: EmailKeychainAccessError) { - var parameters = [ - PixelParameters.emailKeychainAccessType: accessType.rawValue, - PixelParameters.emailKeychainError: error.errorDescription - ] - - if case let .keychainLookupFailure(status) = error { - parameters[PixelParameters.emailKeychainKeychainStatus] = String(status) - parameters[PixelParameters.emailKeychainKeychainOperation] = "lookup" - } - - if case let .keychainDeleteFailure(status) = error { - parameters[PixelParameters.emailKeychainKeychainStatus] = String(status) - parameters[PixelParameters.emailKeychainKeychainOperation] = "delete" - } - - if case let .keychainSaveFailure(status) = error { - parameters[PixelParameters.emailKeychainKeychainStatus] = String(status) - parameters[PixelParameters.emailKeychainKeychainOperation] = "save" - } - - Pixel.fire(pixel: .emailAutofillKeychainError, withAdditionalParameters: parameters) - } - } // MARK: - SecureVaultManagerDelegate diff --git a/DuckDuckGo/MainViewController+Email.swift b/DuckDuckGo/MainViewController+Email.swift index f73acd45e6..99f3942227 100644 --- a/DuckDuckGo/MainViewController+Email.swift +++ b/DuckDuckGo/MainViewController+Email.swift @@ -75,30 +75,6 @@ extension MainViewController: EmailManagerRequestDelegate { } // swiftlint:enable function_parameter_count - func emailManagerKeychainAccessFailed(accessType: EmailKeychainAccessType, error: EmailKeychainAccessError) { - var parameters = [ - PixelParameters.emailKeychainAccessType: accessType.rawValue, - PixelParameters.emailKeychainError: error.errorDescription - ] - - if case let .keychainLookupFailure(status) = error { - parameters[PixelParameters.emailKeychainKeychainStatus] = String(status) - parameters[PixelParameters.emailKeychainKeychainOperation] = "lookup" - } - - if case let .keychainDeleteFailure(status) = error { - parameters[PixelParameters.emailKeychainKeychainStatus] = String(status) - parameters[PixelParameters.emailKeychainKeychainOperation] = "delete" - } - - if case let .keychainSaveFailure(status) = error { - parameters[PixelParameters.emailKeychainKeychainStatus] = String(status) - parameters[PixelParameters.emailKeychainKeychainOperation] = "save" - } - - Pixel.fire(pixel: .emailAutofillKeychainError, withAdditionalParameters: parameters) - } - } // MARK: - EmailManagerAliasPermissionDelegate diff --git a/DuckDuckGo/MainViewController.swift b/DuckDuckGo/MainViewController.swift index d5a7b1e7f4..2331fd1fb6 100644 --- a/DuckDuckGo/MainViewController.swift +++ b/DuckDuckGo/MainViewController.swift @@ -1079,6 +1079,7 @@ class MainViewController: UIViewController { @objc private func onDuckDuckGoEmailSignOut(_ notification: Notification) { fireEmailPixel(.emailDisabled, notification: notification) + presentEmailProtectionSignInAlertIfNeeded(notification) if let object = notification.object as? EmailManager, let emailManager = syncDataProviders.settingsAdapter.emailManager, object !== emailManager { @@ -1086,7 +1087,18 @@ class MainViewController: UIViewController { syncService.scheduler.notifyDataChanged() } } - + + private func presentEmailProtectionSignInAlertIfNeeded(_ notification: Notification) { + guard let userInfo = notification.userInfo as? [String: String], + userInfo[EmailManager.NotificationParameter.isForcedSignOut] != nil else { + return + } + let alertController = CriticalAlerts.makeEmailProtectionSignInAlert() + dismiss(animated: true) { + self.present(alertController, animated: true, completion: nil) + } + } + private func fireEmailPixel(_ pixel: Pixel.Event, notification: Notification) { var pixelParameters: [String: String] = [:] diff --git a/DuckDuckGo/UserText.swift b/DuckDuckGo/UserText.swift index 0447b01e09..b4e0794927 100644 --- a/DuckDuckGo/UserText.swift +++ b/DuckDuckGo/UserText.swift @@ -844,4 +844,16 @@ In addition to the details entered into this form, your app issue report will co static let unknownErrorTryAgainMessage = NSLocalizedString("error.unknown.try.again", value: "An unknown error has occurred", comment: "Generic error message on a dialog for when the cause is not known.") + static let preemptiveCrashTitle = NSLocalizedString("error.preemptive-crash.title", value: "App issue detected", comment: "Alert title") + static let preemptiveCrashBody = NSLocalizedString("error.preemptive-crash.body", value: "Looks like there's an issue with the app and it needs to close. Please reopen to continue.", comment: "Alert message") + static let preemptiveCrashAction = NSLocalizedString("error.preemptive-crash.action", value: "Close App", comment: "Button title that is shutting down the app") + + static let insufficientDiskSpaceTitle = NSLocalizedString("error.insufficient-disk-space.title", value: "Not enough storage", comment: "Alert title") + static let insufficientDiskSpaceBody = NSLocalizedString("error.insufficient-disk-space.body", value: "Looks like your device has run out of storage space. Please free up space to continue.", comment: "Alert message") + static let insufficientDiskSpaceAction = NSLocalizedString("error.insufficient-disk-space.action", value: "Open Settings", comment: "Button title to open device settings") + + static let emailProtectionSignInTitle = NSLocalizedString("error.email-protection-sign-in.title", value: "Email Protection Error", comment: "Alert title") + static let emailProtectionSignInBody = NSLocalizedString("error.email-protection-sign-in.body", value: "Sorry, please sign in again to re-enable Email Protection features on this browser.", comment: "Alert message") + static let emailProtectionSignInAction = NSLocalizedString("error.email-protection-sign-in.action", value: "Sign In", comment: "Button title to Sign In") + } diff --git a/DuckDuckGo/bg.lproj/Feedback.strings b/DuckDuckGo/bg.lproj/Feedback.strings index d48f78ba7b..a207c7cead 100644 --- a/DuckDuckGo/bg.lproj/Feedback.strings +++ b/DuckDuckGo/bg.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Обратно"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Изпрати"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Изпрати"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Подаване на сигнал за повреден сайт"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Причина за нефункциониращ сайт"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Споделяне на отзив"; diff --git a/DuckDuckGo/bg.lproj/Localizable.strings b/DuckDuckGo/bg.lproj/Localizable.strings index 0745f2aa1a..9c95c4df14 100644 --- a/DuckDuckGo/bg.lproj/Localizable.strings +++ b/DuckDuckGo/bg.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Редактиране"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Споделяне"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Отдолу"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Най-горе"; + /* No comment provided by engineer. */ "addWidget.button" = "Добави приспособлението"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Отключване на DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Блокиране на тракерите на Вашето устройство"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Деактивирано"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Активирано"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Активирайте функцията App Tracking Protection, за да можем да блокираме досадните тракери в други приложения."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "App Tracking Protection блокира "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " във Вашите приложения днес."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Току-що"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Управление на тракери"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Какво се случва?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Изпрати"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Благодарим ви! Отзивът ви е изпратен."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Не сега"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Докладване на проблем"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Възстановяване на настройките по подразбиране"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Защита от проследяване в приложения"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Последен разрешен опит %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Последен блокиран опит %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Влизане"; @@ -547,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Видеото не се възпроизвежда"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Изберете проблем от списъка..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "ИЗБЕРЕТЕ КАТЕГОРИЯ"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Ако споделите повече подробности, може да ни помогне да се справим с този проблем"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "ОПИШЕТЕ ПРОБЛЕМА"; +/* No comment provided by engineer. */ +"bucket: %@" = "контейнер: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Миналия месец"; @@ -781,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Няма намерени съвпадения"; +/* No comment provided by engineer. */ +"Error" = "Грешка"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Влизане"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Съжаляваме, моля, влезте отново, за да активирате повторно функциите на Email Protection в този браузър."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Грешка в Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Отваряне на настройки"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Изглежда, че няма свободно място за съхранение на Вашето устройство. Моля, освободете място, за да продължите."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Няма достатъчно място за съхранение"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Затваряне на приложението"; + +/* Alert message */ +"error.preemptive-crash.body" = "Изглежда, е възникнал проблем с приложението и то трябва да бъде затворено. Моля, отворете отново, за да продължите."; + +/* Alert title */ +"error.preemptive-crash.title" = "Открит е проблем с приложението"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Любим"; @@ -1000,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Начален екран"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Добави отметка"; @@ -1066,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo за Mac притежава необходимата скорост, както и очакваните от Вас функции за сърфиране, и предлага най-добрите в този клас елементи за защита."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Отворете поканата"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "Приложението DuckDuckGo за Mac е готово!"; /* Title for the copy action */ "mac-waitlist.copy" = "Копиране"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "На Вашия компютър с Windows отидете на:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "На Вашия Mac отидете на:"; @@ -1087,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Очаквайте скоро и за Windows!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Търсите версията за Windows?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Сърфирайте поверително с нашето приложение за Mac"; @@ -1097,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo за Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "Приложение DuckDuckGo за настолен компютър"; +"mac-waitlist.title" = "Приложение DuckDuckGo за Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Меню за сърфиране"; @@ -1114,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Редактиране"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "ОК"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Бисквитките са настроени"; @@ -1156,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Не е намерено приложението, необходимо за отваряне на тази връзка"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Моля, въведете кое приложение на Вашето устройство е повредено."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Уеб сайтовете разчитат на бисквитки, за да поддържат сесията ви активна. Когато направите сайта огнеустойчив, бисквитките няма да бъдат изтрити и ще останете вписани, дори след като използвате огнения бутон. Ние все пак блокираме тракери на трети страни, които се намират на огнеустойчиви сайтове."; @@ -1246,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Кой уебсайт е повреден?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "„%@“ вече няма да има достъп до синхронизираните Ви данни."; + /* Accessibility label on remove button */ "tab.close.home" = "Затваряне на началния раздел"; @@ -1318,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Аудиото се обработва на устройството. То не се съхранява или споделя с никого, включително DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Разрешаване на известия"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Отворете поканата"; + +/* Title for the copy action */ +"waitlist.copy" = "Копиране"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Код за покана"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Стъпка %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Имате покана!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Включване в списък с чакащи за личен адрес"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Включване в списъка с чакащи..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Споделяне на връзка"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "УВЕДОМЕТЕ МЕ"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Искате ли да получите известие, когато дойде Вашият ред?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Не, благодаря"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Можем да ви изпратим известие, когато дойде вашият ред, но в момента известията за DuckDuckGo са деактивирани."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Не е необходимо да споделяте лична информация, за да се включите в списъка с чакащи. Ще си осигурите място на опашката с клеймо за време, което съществува само на Вашето устройство, така можем да Ви уведомим, когато дойде Вашият ред."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Включени сте в списъка с чакащи!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Налично за изтегляне"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Имате покана!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Премахнато от любими"; @@ -1342,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Съобщение от %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Изпробвайте DuckDuckGo за Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Посетете този URL адрес на Вашето устройство с Windows, за да изтеглите:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Отворете инсталационния модул на DuckDuckGo в папката Изтеглени, изберете Инсталиране и след това въведете кода на поканата."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Готови ли сте да използвате DuckDuckGo с Windows?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Търсите версията за Mac?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Възползвайте се от ранен достъп, за да изпробвате DuckDuckGo за Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Ще Ви изпратим известие, когато Вашето копие на DuckDuckGo за Windows е готово за изтегляне. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Вашата покана за изпробване на DuckDuckGo за Windows ще получите тук. Проверете отново скоро или можем да ви изпратим известие, когато дойде вашият ред."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Ще Ви изпратим известие, когато Вашето копие на DuckDuckGo за Windows е готово за изтегляне."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Сърфирайте поверително с нашето приложение за Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Имате покана!\n\nГотови ли сте да използвате DuckDuckGo с Windows?Стъпка 1\nПосетете този URL адрес на Вашето устройство с Windows, за да изтеглите:\nhttps://duckduckgo.com/windows\n\nСтъпка 2\nОтворете инсталационния модул на DuckDuckGo в папката Изтеглени, изберете Инсталиране и след това въведете кода на поканата.\n\nКод на поканата: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Готови ли сте да започнете поверително сърфиране с Windows?\n\nПосетете този URL адрес на компютър с Windows, за да изтеглите:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo за Windows разполага с всичко необходимо за поверително сърфиране — поверително търсене, блокиране на тракери, принудително криптиране и блокиране на изскачащи прозорци с бисквитки, както и много от най-добрите в този клас елементи за защита."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Приложение DuckDuckGo за Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Вземете DuckDuckGo за Windows!"; + diff --git a/DuckDuckGo/bg.lproj/Settings.strings b/DuckDuckGo/bg.lproj/Settings.strings index 5db5187244..961ce72b2a 100644 --- a/DuckDuckGo/bg.lproj/Settings.strings +++ b/DuckDuckGo/bg.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Размер на текста"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Заглавие"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Стартиране на приложение"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Глобален контрол на поверителността (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Добавяне"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Изход от приложението, 15 минути без активност"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Прегледи с продължително натискане"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Сърфирайте поверително с нашето приложение за Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Защитата на поверителността е активирана за всички сайтове"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Споделяне на отзив"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Позиция на адресната лента"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Позиция на адресната лента"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Позволете на DuckDuckGo да управлява изскачащите прозорци за съгласие за бисквитки"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Относно DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Най-горе"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Още от DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Синхронизиране"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Сърфирайте поверително с нашето приложение за Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Етикет"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "Приложение DuckDuckGo за Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Размер на текста"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Добавяне на приложението към панела"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "Приложение DuckDuckGo за настолен компютър"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "Приложение DuckDuckGo за Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Нов раздел"; diff --git a/DuckDuckGo/cs.lproj/Feedback.strings b/DuckDuckGo/cs.lproj/Feedback.strings index b169dc5150..a9f2cec279 100644 --- a/DuckDuckGo/cs.lproj/Feedback.strings +++ b/DuckDuckGo/cs.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Zpět"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Odeslat"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Odeslat"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Nahlásit nefunkční webové stránky"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Důvod nefunkční stránky"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Podělte se o zpětnou vazbu"; diff --git a/DuckDuckGo/cs.lproj/Localizable.strings b/DuckDuckGo/cs.lproj/Localizable.strings index 349ab7f5e7..73711af80a 100644 --- a/DuckDuckGo/cs.lproj/Localizable.strings +++ b/DuckDuckGo/cs.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Upravit"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Sdílet"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Dole"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Nahoru"; + /* No comment provided by engineer. */ "addWidget.button" = "Přidat widget"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Odemkněte DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Blokuj trackery v aplikacích na svém zařízení"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Zakázáno"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Povoleno"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Když zapneš funkci App Tracking Protection, budeme blokovat otravné trackery v ostatních aplikacích."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "Díky funkci App Tracking Protection dnes došlo k zablokování "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " ve tvých aplikacích."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Právě teď"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Správa trackerů"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Co se stalo?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Odeslat"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Děkujeme! Zpětná vazba odeslána."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Teď ne"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Nahlásit problém"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Obnovit výchozí nastavení"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Ochrana před sledováním aplikace"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Poslední povolený pokus %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Poslední zablokovaný pokus %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Přihlásit"; @@ -323,7 +551,7 @@ "autofill.logins.prompt.auth.reason" = "Jestli chceš použít uložené přihlašovací údaje, odemkni zařízení"; /* Title for section of autofill logins that are an exact match to the current website */ -"autofill.logins.prompt.exact.match.title" = "Z tohoto webu"; +"autofill.logins.prompt.exact.match.title" = "Z tohoto webu"; /* Button title for autofill login prompt if more options are available */ "autofill.logins.prompt.more-options" = "Další možnosti"; @@ -547,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Video se nepřehrálo"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Vyber problém ze seznamu..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "VYBER KATEGORII"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Tento problém snáz vyřešíme, když nám nasdílíš další informace"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "POPIŠTE, CO SE STALO"; +/* No comment provided by engineer. */ +"bucket: %@" = "bucket: % @"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Minulý měsíc"; @@ -781,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Nenalezeny žádné shody"; +/* No comment provided by engineer. */ +"Error" = "Chyba"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Přihlásit"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Omlouváme se, ale pro opětovné zapnutí funkce Email Protection v tomhle prohlížeči se musíš znovu přihlásit."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Chyba funkce Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Otevřené nastavení"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Vypadá to, že v úložišti už nemáš žádné volné místo. Pro pokračování musíš nějaké uvolnit."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Nedostatek místa v úložišti"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Zavřít aplikaci"; + +/* Alert message */ +"error.preemptive-crash.body" = "Vypadá to, že s aplikací je nějaký problém a musí se zavřít. Pro pokračování aplikaci znovu spusť."; + +/* Alert title */ +"error.preemptive-crash.title" = "Vyskytl se problém s aplikací"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Oblíbené"; @@ -1000,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Domů"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Přidat záložku"; @@ -1066,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo pro Mac má rychlost, kterou potřebuješ, funkce prohlížeče, které očekáváš, a obsahuje naše nejlepší nástroje na ochranu soukromí."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Otevřít pozvánku"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo pro Mac už čeká!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopírovat"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "V počítači s Windows přejdi na:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Na Macu přejdi na:"; @@ -1087,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Verze pro Windows bude už brzo."; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Hledáš verzi pro Windows?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Zajisti si soukromí při prohlížení webu – v naší aplikaci pro Mac"; @@ -1097,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo pro Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "DuckDuckGo Desktop"; +"mac-waitlist.title" = "Aplikace DuckDuckGo pro Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Procházení nabídky"; @@ -1114,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Upravit"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "DOBŘE"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "O cookies je postaráno!"; @@ -1156,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Aplikaci nutnou k otevření tohoto odkazu nelze nalézt"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Prosíme o informaci, která aplikace ti na zařízení nefunguje."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Webové stránky spoléhají na soubory cookie, aby vás udržely přihlášené. Když na webu zapnete ochranu, soubory cookie se nevymažou a zůstanete přihlášeni, a to i po použití tlačítka pro mazání. Stále přitom blokujeme sledovací programy třetích stran nalezené na webových stránkách s ochranou."; @@ -1246,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Které webové stránky jsou poškozené?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "„%@“ už nebude mít přístup k synchronizovaným datům."; + /* Accessibility label on remove button */ "tab.close.home" = "Zavřít kartu Domů"; @@ -1318,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Zvuk se zpracovává na zařízení. Nikde ho neukládáme a s nikým ho nesdílíme. Ani DuckDuckGo se k němu nedostane."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Povolit oznámení"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Otevřít pozvánku"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopírovat"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Zvací kód"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Krok %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Zveme tě!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Připojte se k soukromému pořadníku"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Zapiš se do pořadníku..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Sdílet odkaz"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "UPOZORNĚTE MĚ"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Chceš dostávat upozornění, když jsi na řadě?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Ne, děkuji"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Můžeme ti dát vědět, až budeš na řadě, ale aktuálně jsou oznámení pro DuckDuckGo vypnutá."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Kvůli zařazení do pořadníku není nutné sdílet žádné osobní údaje. Tvé místo se určuje podle časového razítka uloženého jen ve tvém zařízení tak, abychom tě mohli upozornit, až budeš na řadě."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Jsi v pořadníku!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Ke stažení"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Zveme tě!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Oblíbená položka odstraněna"; @@ -1342,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Zpráva od %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Vyzkoušej DuckDuckGo pro Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Aplikaci si do počítače s Windows stáhneš z téhle URL:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Otevři si ve Stažených souborech instalační program DuckDuckGo, klikni na Instalovat a pak zadej kód z pozvánky."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Chceš mít ve Windows DuckDuckGo?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Hledáš verzi pro Mac?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Získej předběžný přístup a vyzkoušej DuckDuckGo pro Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Dáme ti vědět, až bude tvoje kopie DuckDuckGo pro Windows připravená ke stažení. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Sem dostaneš pozvánku k vyzkoušení DuckDuckGo pro Windows. Zkus se sem brzy podívat znovu. Nebo ti můžeme dát vědět, až na tebe vyjde řada."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Dáme ti vědět, až bude tvoje kopie DuckDuckGo pro Windows připravená ke stažení."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Zajisti si soukromí na webu – v naší aplikaci pro Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Zveme tě!\n\nChceš mít na Windows DuckDuckGo?\n\n1. krok\nPro stažení přejdi na počítači s Windows sem:\nhttps://duckduckgo.com/windows\n\n2. krok\nOtevři si ve Stažených souborech instalační program DuckDuckGo, klikni na Instalovat a pak zadej kód z pozvánky.\n\nZvací kód: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Cítíš se na to začít si ve Windows prohlížet web v naprostém soukromí?\n\nPro stažení přejdi na počítači s Windows sem:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo pro Windows nabízí všechno, co potřebuješ k většímu soukromí na webu – soukromé vyhledávání, blokování trackerů, vynucené šifrování, blokování vyskakovacích oken pro souhlas se soubory cookie a další ochranné funkce, které jsou nejlepší ve své třídě."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Aplikace DuckDuckGo pro Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Pořiď si DuckDuckGo pro Windows!"; + diff --git a/DuckDuckGo/cs.lproj/Settings.strings b/DuckDuckGo/cs.lproj/Settings.strings index 9430d87eaa..bb12c152b4 100644 --- a/DuckDuckGo/cs.lproj/Settings.strings +++ b/DuckDuckGo/cs.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Velikost textu"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Název"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Spuštění aplikace"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Globální kontrola ochrany osobních údajů (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Přidat"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Ukončení aplikace, neaktivní po dobu 15 minut"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Náhledy dlouhého stisknutí"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Zajisti si soukromí na webu – v naší aplikaci pro Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Ochrana osobních údajů povolena pro všechny weby"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Podělte se o zpětnou vazbu"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Pozice adresního řádku"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Pozice adresního řádku"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Nechat správu oken pro souhlas s cookies na DuckDuckGo"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "O DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Nahoru"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Další od DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Synchronizace"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Anonymní brouzdání po internetu s naší aplikací pro Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Štítek"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "DuckDuckGo pro Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Velikost textu"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Přidat aplikaci do docku"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "DuckDuckGo Desktop"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "DuckDuckGo pro Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Nová karta"; diff --git a/DuckDuckGo/da.lproj/Feedback.strings b/DuckDuckGo/da.lproj/Feedback.strings index 03d9c23ca6..8d15d853f7 100644 --- a/DuckDuckGo/da.lproj/Feedback.strings +++ b/DuckDuckGo/da.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Tilbage"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Indsend"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Indsend"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Rapporter ødelagt websted"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Årsag til ødelagt sted"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Del feedback"; diff --git a/DuckDuckGo/da.lproj/Localizable.strings b/DuckDuckGo/da.lproj/Localizable.strings index 766d5618ee..96dfbcd906 100644 --- a/DuckDuckGo/da.lproj/Localizable.strings +++ b/DuckDuckGo/da.lproj/Localizable.strings @@ -106,6 +106,12 @@ /* Share action */ "action.title.share" = "Del"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Nederst"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Top"; + /* No comment provided by engineer. */ "addWidget.button" = "Tilføj widget"; @@ -1018,6 +1024,33 @@ /* No comment provided by engineer. */ "Error" = "Fejl"; +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Log ind"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Beklager, log på igen for at genaktivere Email Protection i denne browser."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Fejl i Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Åbn Indstillinger"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Det ser ud til, at din enhed er løbet tør for lagerplads. Frigør plads for at fortsætte."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Ikke nok lagerplads"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Luk app"; + +/* Alert message */ +"error.preemptive-crash.body" = "Det ser ud til, at der er et problem med appen, og at den skal lukkes. Åbn den igen for at fortsætte."; + +/* Alert title */ +"error.preemptive-crash.title" = "App-problem opdaget"; + /* Generic error message on a dialog for when the cause is not known. */ "error.unknown.try.again" = "An unknown error has occurred"; diff --git a/DuckDuckGo/da.lproj/Settings.strings b/DuckDuckGo/da.lproj/Settings.strings index b4c9fc06e4..b0c910808b 100644 --- a/DuckDuckGo/da.lproj/Settings.strings +++ b/DuckDuckGo/da.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Tekststørrelse"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Titel"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "App-start"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Global Privacy Control (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Tilføj"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "App-afslutning, inaktiv i 15 minutter"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Eksempler med lang tryk"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Browse privat med vores app til Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Databeskyttelse aktiveret for alle websteder"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Del feedback"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Placering af adresselinje"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Placering af adresselinje"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Lad DuckDuckGo administrere pop op-vinduer med samtykke til brug af cookies"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Om DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Top"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Mere fra DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Synkronisering"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Browse privat med vores app til Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Etiket"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "DuckDuckGo-app til Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Tekststørrelse"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Føj appen til din dock"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "DuckDuckGo skrivebordsapp"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "DuckDuckGo-app til Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Ny fane"; diff --git a/DuckDuckGo/de.lproj/Feedback.strings b/DuckDuckGo/de.lproj/Feedback.strings index b10f3976b5..5630ec0bc1 100644 --- a/DuckDuckGo/de.lproj/Feedback.strings +++ b/DuckDuckGo/de.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Zurück"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Abschicken"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Abschicken"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Fehlerhafte Website melden"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Grund für fehlerhafte Website"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Feedback teilen"; diff --git a/DuckDuckGo/de.lproj/Localizable.strings b/DuckDuckGo/de.lproj/Localizable.strings index fbcbc7b098..210164f54b 100644 --- a/DuckDuckGo/de.lproj/Localizable.strings +++ b/DuckDuckGo/de.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Bearbeiten"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Teilen"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Unten"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Nach oben"; + /* No comment provided by engineer. */ "addWidget.button" = "Widget hinzufügen"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "DuckDuckGo entsperren."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Blockiere App-Tracker auf deinem Gerät"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Deaktiviert"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Aktiviert"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Aktiviere App Tracking Protection, damit wir lästige Tracker in anderen Apps blockieren können."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "App Tracking Protection hat heute x Tracking-Versuche blockiert. "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " heute in deinen Apps."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Gerade jetzt"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Tracker verwalten"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Was passiert?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Abschicken"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Vielen Dank! Feedback wurde gesendet."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Jetzt nicht"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Problem melden"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Standardeinstellungen wiederherstellen"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Schutz gegen App-Tracking"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Letzter zugelassener Versuch: %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Letzter blockierter Versuch: %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Anmelden"; @@ -547,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Video wurde nicht abgespielt"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Wähle dein Problem aus der Liste aus..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "EINE KATEGORIE AUSWÄHLEN"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Das Teilen weiterer Details kann uns helfen, dieses Problem zu lösen"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "BESCHREIBE, WAS PASSIERT IST"; +/* No comment provided by engineer. */ +"bucket: %@" = "Bucket: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Letzter Monat"; @@ -781,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Keine Treffer gefunden"; +/* No comment provided by engineer. */ +"Error" = "Fehler"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Anmelden"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Entschuldigung, bitte melde dich erneut an, um die Funktionen von Email Protection in diesem Browser erneut zu aktivieren."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Fehler bei Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Einstellungen öffnen"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Anscheinend ist auf deinem Gerät kein Speicherplatz mehr vorhanden. Bitte gib Speicherplatz frei, um fortzufahren."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Nicht genug Speicherplatz"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "App schließen"; + +/* Alert message */ +"error.preemptive-crash.body" = "Sieht aus, als gäbe es ein Problem mit der App und sie muss geschlossen werden. Bitte öffne sie erneut, um fortzufahren."; + +/* Alert title */ +"error.preemptive-crash.title" = "App-Problem erkannt"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Favorit"; @@ -1000,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Startseite"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Lesezeichen hinzufügen"; @@ -1066,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo für Mac hat die Geschwindigkeit, die du brauchst, die Browserfunktionen, die du erwartest, und ist vollgepackt mit unseren grundlegenden Funktionen für den Datenschutz."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Öffne deine Einladung"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo für Mac ist da!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopieren"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Öffne auf deinem Windows-Computer die folgende Website:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Rufe auf deinem Mac Folgendes auf:"; @@ -1087,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "In Kürze für Windows verfügbar!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Suchst du nach der Windows-Version?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Privat browsen mit unserer App für Mac"; @@ -1097,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo für Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "DuckDuckGo-Desktop-App"; +"mac-waitlist.title" = "DuckDuckGo-App für Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Browsing-Optionen"; @@ -1114,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Bearbeiten"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Cookies verwaltet"; @@ -1156,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Die zum Öffnen dieses Links erforderliche App wurde nicht gefunden"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Bitte gib an, welche App auf deinem Gerät nicht funktioniert."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Websites sorgen mit Cookies dafür, dass du angemeldet bleibst. Wenn du eine Website feuerfest machst, werden Cookies nicht gelöscht und du bleibst angemeldet – auch nach Verwendung der Schaltfläche „Feuer“. Wir blockieren weiterhin auf feuerfest gemachten Websites gefundene Tracker von Dritten."; @@ -1246,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Welche Website ist fehlerhaft?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "„%@“ kann nicht mehr auf deine synchronisierten Daten zugreifen."; + /* Accessibility label on remove button */ "tab.close.home" = "Startseiten-Tab schließen"; @@ -1318,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Audio wird auf dem Gerät verarbeitet. Es wird weder gespeichert noch an Dritte weitergegeben, auch nicht an DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Benachrichtigungen zulassen"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Öffne deine Einladung"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopieren"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Einladungscode"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Schritt %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Du bist eingeladen!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Auf die private Warteliste setzen"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Auf Warteliste setzen ..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Link teilen"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "ICH MÖCHTE BENACHRICHTIGT WERDEN"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Benachrichtigung erhalten, wenn du an der Reihe bist?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Nein, danke"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Wir können dich benachrichtigen, wenn es soweit ist, aber Benachrichtigungen sind derzeit für DuckDuckGo deaktiviert."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Um dich in die Warteliste einzutragen, musst du keine persönlichen Daten angeben. Du sicherst deinen Platz mit einem Zeitstempel, der nur auf deinem Gerät vorhanden ist, damit wir dich benachrichtigen können, wenn du an der Reihe bist."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Du stehst auf der Liste!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Download verfügbar"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Du bist eingeladen!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Favorit wurde entfernt"; @@ -1342,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Eine Nachricht von %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Teste DuckDuckGo für Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Besuche zum Herunterladen diese URL auf deinem Windows-Gerät:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Öffne DuckDuckGo Installer in Downloads, wähle Installieren und gib dann deinen Einladungscode ein."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Bist du bereit, DuckDuckGo auf Windows zu benutzen?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Suchst du nach der Mac-Version?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Erhalte frühen Zugriff, um DuckDuckGo für Windows auszuprobieren!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Du erhältst eine Benachrichtigung, sobald du DuckDuckGo für Windows herunterladen kannst. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Deine Einladung zum Ausprobieren von DuckDuckGo für Windows wird hier angezeigt. Schau bald wieder vorbei, oder wir senden dir eine Benachrichtigung, wenn es soweit ist."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Du erhältst eine Benachrichtigung, sobald du DuckDuckGo für Windows herunterladen kannst."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Privat browsen mit unserer App für Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Du bist eingeladen!\n\nBist du bereit, DuckDuckGo unter Windows zu benutzen?\n\nSchritt 1\nBesuche zum Herunterladen diese URL auf deinem Windows-Gerät:\nhttps://duckduckgo.com/windows\n\nSchritt 2\nÖffne DuckDuckGo Installer in Downloads, wähle Installieren und gib dann deinen Einladungscode ein.\n\nEinladungscode: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Bist du bereit, privat unter Windows zu browsen?\n\nBesuche zum Herunterladen diese URL auf deinem Computer:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo für Windows bietet alles, was du brauchst, um mit mehr Privatsphäre zu browsen – private Suche, Tracker-Blockade, erzwungene Verschlüsselung und Blockierung von Cookie-Pop-ups sowie weitere erstklassige Schutzmaßnahmen."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "DuckDuckGo-App für Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Hol dir DuckDuckGo für Windows!"; + diff --git a/DuckDuckGo/de.lproj/Settings.strings b/DuckDuckGo/de.lproj/Settings.strings index ed5fe46654..739a017f02 100644 --- a/DuckDuckGo/de.lproj/Settings.strings +++ b/DuckDuckGo/de.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Textgröße"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Titel"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Start der App"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Global Privacy Control (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Hinzufügen"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Beim Verlassen der App, 15 Minuten lang inaktiv"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Vorschau durch langes Tippen"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Privat browsen mit unserer App für Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Datenschutz für alle Websites aktiviert"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Feedback teilen"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Position der Adressleiste"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Position der Adressleiste"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Lasse Cookie-Zustimmungs-Popups von DuckDuckGo verwalten"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Über DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Nach oben"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Mehr von DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Synchronisieren"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Privat browsen mit unserer App für Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Label"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "DuckDuckGo-App für Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Textgröße"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "App zum Dock hinzufügen"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "DuckDuckGo-Desktop-App"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "DuckDuckGo-App für Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Neuer Tab"; diff --git a/DuckDuckGo/el.lproj/Feedback.strings b/DuckDuckGo/el.lproj/Feedback.strings index 8ad916ba5f..8bdc855b3f 100644 --- a/DuckDuckGo/el.lproj/Feedback.strings +++ b/DuckDuckGo/el.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Πίσω"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Υποβολή"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Υποβολή"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Αναφορά ιστότοπου που δεν λειτουργεί"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Αιτία μη λειτουργίας ιστότοπου"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Κοινοποίηση σχολίου"; diff --git a/DuckDuckGo/el.lproj/Localizable.strings b/DuckDuckGo/el.lproj/Localizable.strings index 36e315af41..bd486d98f9 100644 --- a/DuckDuckGo/el.lproj/Localizable.strings +++ b/DuckDuckGo/el.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Επεξεργασία"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Κοινή χρήση"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Κάτω μέρος"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Κορυφή"; + /* No comment provided by engineer. */ "addWidget.button" = "Προσθήκη γραφικού στοιχείου"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Ξεκλείδωμα DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Αποκλείστε εφαρμογές παρακολούθησης στη συσκευή σας"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Απενεργοποιήθηκε"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Ενεργοποιήθηκε"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Ενεργοποιήστε την App Tracking Protection, ώστε να μπορούμε να αποκλείουμε ενοχλητικές εφαρμογές παρακολούθησης σε άλλες εφαρμογές."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "Η App Tracking Protection απέκλεισε "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " στις εφαρμογές σας σήμερα."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Ακριβώς τώρα"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Διαχείριση εφαρμογών παρακολούθησης"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Τι συμβαίνει;"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Υποβολή"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Σας ευχαριστούμε! Το σχόλιο υποβλήθηκε."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Όχι τώρα"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Αναφορά προβλήματος"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Επαναφορά προεπιλογών"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Προστασία παρακολούθησης από εφαρμογές"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Τελευταία επιτρεπόμενη προσπάθεια %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Τελευταία αποκλεισμένη προσπάθεια %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Είσοδος"; @@ -547,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Το βίντεο δεν αναπαράχθηκε"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Επιλέξτε το πρόβλημα που αντιμετωπίζετε, από τη λίστα..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "ΕΠΙΛΕΞΤΕ ΚΑΤΗΓΟΡΙΑ"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Η κοινοποίηση περισσότερων λεπτομερειών μπορεί να μας βοηθήσει να επιλύσουμε το πρόβλημα αυτό"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "ΠΕΡΙΓΡΑΨΤΕ ΤΙ ΣΥΝΕΒΗ"; +/* No comment provided by engineer. */ +"bucket: %@" = "κάδος: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Προηγούμενος μήνας"; @@ -781,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Δεν βρέθηκαν αντιστοιχίες"; +/* No comment provided by engineer. */ +"Error" = "Σφάλμα"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Είσοδος"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Ζητούμε συγγνώμη. Συνδεθείτε ξανά για να ενεργοποιήσετε εκ νέου τις λειτουργίες του Email Protection σε αυτό το πρόγραμμα περιήγησης."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Σφάλμα προστασίας Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Άνοιγμα ρυθμίσεων"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Φαίνεται ότι ο χώρος αποθήκευσης της συσκευής σας έχει εξαντληθεί. Απελευθερώστε χώρο για να συνεχίσετε."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Δεν υπάρχει αρκετός χώρος αποθήκευσης"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Κλείστε την εφαρμογή"; + +/* Alert message */ +"error.preemptive-crash.body" = "Φαίνεται ότι υπάρχει κάποιο πρόβλημα με την εφαρμογή και χρειάζεται να κλείσει. Ανοίξτε τη ξανά για να συνεχίσετε."; + +/* Alert title */ +"error.preemptive-crash.title" = "Ανιχνεύθηκε πρόβλημα με την εφαρμογή"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Αγαπημένο"; @@ -1000,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Αρχική σελίδα"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Προσθήκη σελιδοδείκτη"; @@ -1066,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "Το DuckDuckGo για Mac έχει την ταχύτητα που χρειάζεστε, τις λειτουργίες περιήγησης που αναμένετε και περιλαμβάνει τις καλύτερες δυνατότητες απορρήτου στην κατηγορία μας."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Ανοίξτε την πρόσκλησή σας"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "Το DuckDuckGo για Mac είναι έτοιμο!"; /* Title for the copy action */ "mac-waitlist.copy" = "Αντιγραφή"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Στον υπολογιστή σας με Windows, μεταβείτε στη διεύθυνση:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Στον Mac σας, μεταβείτε στη διεύθυνση:"; @@ -1087,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Έρχεται σύντομα για Windows!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Αναζητάτε την έκδοση των Windows;"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Περιηγηθείτε ιδιωτικά με την εφαρμογή μας για Mac"; @@ -1097,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo για Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "Εφαρμογή DuckDuckGo για υπολογιστές"; +"mac-waitlist.title" = "Εφαρμογή DuckDuckGo για Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Μενού περιήγησης"; @@ -1114,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Επεξεργασία"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "Εντάξει"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Διαχειριζόμενα cookies"; @@ -1156,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Δεν είναι δυνατή η εύρεση της εφαρμογής που απαιτείται για άνοιγμα αυτού του συνδέσμου"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Εισαγάγετε ποια εφαρμογή δεν λειτουργεί σωστά στη συσκευή σας."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Οι ιστότοποι βασίζονται σε cookies για να σας διατηρούν συνδεδεμένους. Όταν ενεργοποιείτε τη διαγραφή δραστηριότητας για έναν ιστότοπο, τα cookies δεν διαγράφονται και παραμένετε συνδεδεμένοι, ακόμα και μετά τη χρήση του Κουμπιού διαγραφής δραστηριότητας. Εξακολουθούμε να αποκλείουμε εφαρμογές παρακολούθησης από τρίτους που υπάρχουν σε ιστότοπους με διαγραφή δραστηριότητας."; @@ -1246,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Ποιος ιστότοπος είναι κατεστραμμένος;"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "Το «%@» δεν θα μπορεί πλέον να έχει πρόσβαση στα συγχρονισμένα δεδομένα σας."; + /* Accessibility label on remove button */ "tab.close.home" = "Κλείσιμο αρχικής καρτέλας"; @@ -1318,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Η επεξεργασία του ήχου πραγματοποιείται στη συσκευή. Δεν αποθηκεύεται ούτε κοινοποιείται σε οποιονδήποτε, συμπεριλαμβανομένου του DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Επιτρέψτε ειδοποιήσεις"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Ανοίξτε την πρόσκλησή σας"; + +/* Title for the copy action */ +"waitlist.copy" = "Αντιγραφή"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Κωδικός πρόσκλησης"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Βήμα %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Έχετε προσκληθεί!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Εγγραφείτε στην Ιδιωτική λίστα αναμονής"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Εγγραφή στη λίστα αναμονής..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Κοινή χρήση συνδέσμου"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "ΝΑ ΕΙΔΟΠΟΙΗΘΩ"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Θα θέλατε να λάβετε ειδοποίηση όταν έρθει η σειρά σας;"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Όχι, ευχαριστώ"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Μπορούμε να σας ειδοποιήσουμε όταν έρθει η σειρά σας, ωστόσο οι ειδοποιήσεις είναι προς το παρόν απενεργοποιημένες για το DuckDuckGo."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Δεν θα χρειαστεί να κοινοποιήσετε προσωπικά στοιχεία για εγγραφή στη λίστα αναμονής. Θα εξασφαλίσετε τη θέση σας στη λίστα αναμονής βάσει χρονικής σήμανσης που υπάρχει αποκλειστικά στη συσκευή σας, ώστε να μπορούμε να σας ειδοποιήσουμε μόλις έρθει η σειρά σας."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Βρίσκεστε στη λίστα!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Διαθέσιμη λήψη"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Έχετε προσκληθεί!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Το Αγαπημένο αφαιρέθηκε"; @@ -1342,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Μήνυμα από %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Δοκιμάστε το DuckDuckGo για Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Επισκεφτείτε αυτήν τη διεύθυνση URL στη συσκευή Windows που διαθέτετε για να κάνετε λήψη:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Ανοίξτε το πρόγραμμα εγκατάστασης του DuckDuckGo στις Λήψεις, επιλέξτε Εγκατάσταση και έπειτα εισαγάγετε τον κωδικό πρόσκλησής σας."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Είστε έτοιμοι να χρησιμοποιήσετε το DuckDuckGo σε Windows;"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Αναζητάτε την έκδοση των Mac;"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Αποκτήστε πρόωρη πρόσβαση για να δοκιμάσετε το DuckDuckGo για Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Θα σας στείλουμε ειδοποίηση όταν θα είναι έτοιμο προς λήψη το αντίγραφό σας DuckDuckGo για Windows. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Η πρόσκλησή σας για να δοκιμάσετε το DuckDuckGo για Windows θα σταλεί εδώ. Ελέγξτε πάλι σύντομα. Διαφορετικά, μπορούμε να σας στείλουμε ειδοποίηση όταν έρθει η σειρά σας."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Θα σας στείλουμε ειδοποίηση όταν θα είναι έτοιμο προς λήψη το αντίγραφό σας DuckDuckGo για Windows."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Περιηγηθείτε ιδιωτικά με την εφαρμογή μας για Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Έχετε προσκληθεί!\n\nΕίστε έτοιμοι να χρησιμοποιήσετε το DuckDuckGo σε Windows;\n\nΒήμα 1\nΕπισκεφθείτε αυτήν τη διεύθυνση URL στη συσκευή σας Windows για να πραγματοποιήσετε λήψη:\nhttps://duckduckgo.com/windows\n\nΒήμα 2\nΑνοίξτε το πρόγραμμα εγκατάστασης του DuckDuckGo στις Λήψεις, επιλέξτε Εγκατάσταση και έπειτα εισαγάγετε τον κωδικό πρόσκλησής σας.\n\nΚωδικός πρόσκλησης: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Είστε έτοιμοι να αρχίσετε μια ιδιωτική περιήγηση σε Windows;\n\nΕπισκεφθείτε αυτήν τη διεύθυνση URL στον υπολογιστή σας για να πραγματοποιήσετε λήψη:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "Το DuckDuckGo για Windows έχει ό,τι χρειάζεστε για να περιηγηθείτε με περισσότερη ιδιωτικότητα — ιδιωτική αναζήτηση, αποκλεισμός εφαρμογών παρακολούθησης, αναγκαστική κρυπτογράφηση και αποκλεισμός αναδυόμενων παραθύρων για cookie, ενώ έρχονται σύντομα και περισσότερες κορυφαίες προστασίες στην κατηγορία τους."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Εφαρμογή DuckDuckGo για Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Αποκτήστε το DuckDuckGo για Windows!"; + diff --git a/DuckDuckGo/el.lproj/Settings.strings b/DuckDuckGo/el.lproj/Settings.strings index ead408dd74..a05763b68c 100644 --- a/DuckDuckGo/el.lproj/Settings.strings +++ b/DuckDuckGo/el.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Μέγεθος κειμένου"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Τίτλος"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Εκκίνηση εφαρμογής"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Παγκόσμιος έλεγχος απορρήτου (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Προσθήκη"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Έξοδος εφαρμογής, ανενεργή για 15 λεπτά"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Προεπισκοπήσεις με παρατεταμένο πάτημα"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Περιηγηθείτε ιδιωτικά με την εφαρμογή μας για Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Η προστασία προσωπικών δεδομένων είναι ενεργοποιημένη για όλους τους ιστότοπους"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Κοινοποίηση σχολίου"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Θέση γραμμής διευθύνσεων"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Θέση γραμμής διευθύνσεων"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Επιτρέψτε στο DuckDuckGo να διαχειρίζεται τα αναδυόμενα παράθυρα συναίνεσης για cookies"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Σχετικά με το DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Κορυφή"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Περισσότερα από το DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Συγχρονισμός"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Περιηγηθείτε ιδιωτικά με την εφαρμογή μας για Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Label"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "Εφαρμογή DuckDuckGo Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Μέγεθος κειμένου"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Προσθήκη εφαρμογής στο Dock σας"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "Εφαρμογή DuckDuckGo για υπολογιστές"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "Εφαρμογή DuckDuckGo Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Νέα καρτέλα"; diff --git a/DuckDuckGo/en.lproj/Localizable.strings b/DuckDuckGo/en.lproj/Localizable.strings index bdcc498b88..bb93c7a4d3 100644 --- a/DuckDuckGo/en.lproj/Localizable.strings +++ b/DuckDuckGo/en.lproj/Localizable.strings @@ -1012,6 +1012,33 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "No matches found"; +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Sign In"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Sorry, please sign in again to re-enable Email Protection features on this browser."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Email Protection Error"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Open Settings"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Looks like your device has run out of storage space. Please free up space to continue."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Not enough storage"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Close App"; + +/* Alert message */ +"error.preemptive-crash.body" = "Looks like there's an issue with the app and it needs to close. Please reopen to continue."; + +/* Alert title */ +"error.preemptive-crash.title" = "App issue detected"; + /* Generic error message on a dialog for when the cause is not known. */ "error.unknown.try.again" = "An unknown error has occurred"; diff --git a/DuckDuckGo/es.lproj/Feedback.strings b/DuckDuckGo/es.lproj/Feedback.strings index dc67d6553d..a81befc8d5 100644 --- a/DuckDuckGo/es.lproj/Feedback.strings +++ b/DuckDuckGo/es.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Volver"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Enviar"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Enviar"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Informar de sitio web dañado"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Motivo de página dañada"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Compartir opiniones"; diff --git a/DuckDuckGo/es.lproj/Localizable.strings b/DuckDuckGo/es.lproj/Localizable.strings index 68c300fbe1..987a61b23a 100644 --- a/DuckDuckGo/es.lproj/Localizable.strings +++ b/DuckDuckGo/es.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Editar"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Compartir"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Inferior"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Arriba"; + /* No comment provided by engineer. */ "addWidget.button" = "Añadir widget"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Desbloquear DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Bloquea los rastreadores de aplicaciones en tu dispositivo"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Desactivado"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Activado"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Habilita App Tracking Protection para que podamos bloquear rastreadores molestos en otras aplicaciones."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "App Tracking Protection ha bloqueado "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " en tus aplicaciones hoy."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Justo ahora"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Gestionar rastreadores"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "¿Qué pasa?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Enviar"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Gracias, se han enviado tus opiniones."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Ahora no"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Informar de un problema"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Restaurar valores predeterminados"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Protección frente al rastreo de aplicaciones"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Último intento permitido % @"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Último intento bloqueado %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Iniciar sesión"; @@ -547,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "No se ha reproducido el vídeo"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Elige tu problema en la lista..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "SELECCIONA UNA CATEGORÍA"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Si compartes más detalles, nos ayudarás a resolver esta incidencia"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "DESCRIBE QUÉ PASÓ"; +/* No comment provided by engineer. */ +"bucket: %@" = "bucket: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Mes pasado"; @@ -781,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "No se han encontrado coincidencias"; +/* No comment provided by engineer. */ +"Error" = "Error"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Iniciar sesión"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Lo sentimos, vuelve a iniciar sesión para reactivar las funciones de Email Protection en este navegador."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Error de Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Abrir ajustes"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Parece que tu dispositivo se ha quedado sin espacio de almacenamiento. Libera espacio para continuar."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "No hay suficiente espacio de almacenamiento"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Cerrar aplicación"; + +/* Alert message */ +"error.preemptive-crash.body" = "Parece que se ha producido un problema con la aplicación y debe cerrarse. Vuelve a abrirla para continuar."; + +/* Alert title */ +"error.preemptive-crash.title" = "Problema detectado en la aplicación"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Favorito"; @@ -1000,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Inicio"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Añadir marcador"; @@ -1066,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo para Mac tiene la velocidad que necesitas, las funciones de navegación que esperas y viene repleta de nuestros mejores Privacy Essentials."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Abrir tu invitación"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "¡DuckDuckGo para Mac ya está listo!"; /* Title for the copy action */ "mac-waitlist.copy" = "Copiar"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "En tu ordenador con Windows, ve a:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "En tu Mac, ve a:"; @@ -1087,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "¡Próximamente en Windows!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "¿Buscas la versión para Windows?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Navega de forma privada con nuestra aplicación para Mac"; @@ -1097,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo para Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "Aplicación de escritorio DuckDuckGo"; +"mac-waitlist.title" = "Aplicación DuckDuckGo para Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Menú de navegación"; @@ -1114,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Editar"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "De acuerdo"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Cookies gestionadas"; @@ -1156,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "No se puede encontrar la aplicación necesaria para abrir ese enlace"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Indica la aplicación de tu dispositivo que no funciona."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Los sitios web dependen de cookies para mantener tu sesión iniciada. Cuando marcas una web como «a prueba de fuego» no se borrarán las cookies y tu sesión permanecerá iniciada, incluso después de utilizar el botón Fuego. Seguiremos bloqueando rastreadores de terceros que se encuentren en sitios web a prueba de fuego."; @@ -1246,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "¿Qué sitio web no funciona?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "\"%@\" ya no podrá acceder a tus datos sincronizados."; + /* Accessibility label on remove button */ "tab.close.home" = "Cerrar la pestaña inicio"; @@ -1318,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "El audio se procesa en el dispositivo. No se almacena ni comparte con nadie, incluyendo DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Permitir notificaciones"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Abrir tu invitación"; + +/* Title for the copy action */ +"waitlist.copy" = "Copiar"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Código de invitación"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Paso %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "¡Has recibido una invitación!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Unirse a la lista de espera privada"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Uniéndote a la lista de espera..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Compartir enlace"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "NOTIFICARME"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "¿Quieres recibir una notificación cuando sea tu turno?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "No, gracias"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Podemos avisarte cuando sea tu turno, pero las notificaciones están actualmente desactivadas para DuckDuckGo."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "No tendrás que compartir ninguna información personal para unirte a la lista de espera. Asegurarás tu lugar en la fila con una marca de tiempo que existe únicamente en tu dispositivo para que podamos notificarte cuando sea tu turno."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "¡Estás en la lista!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Descarga disponible"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "¡Has recibido una invitación!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Favorito eliminado"; @@ -1342,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Un mensaje de %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "¡Prueba DuckDuckGo para Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Visita esta URL en tu dispositivo Windows para descargarlo:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Abre el instalador DuckDuckGo en Descargas, selecciona Instalar e introduce tu código de invitación."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "¿Todo listo para usar DuckDuckGo en Windows?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "¿Buscas la versión para Mac?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "¡Consigue acceso anticipado a la prueba de DuckDuckGo para Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Te enviaremos una notificación cuando tu copia de DuckDuckGo para Windows esté lista para descargar. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Tu invitación para probar DuckDuckGo para Windows llegará aquí. Vuelve a consultar pronto, o podemos enviarte una notificación cuando sea tu turno."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Te enviaremos una notificación cuando tu copia de DuckDuckGo para Windows esté lista para descargar."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Navega de forma privada con nuestra aplicación para Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "¡Has recibido una invitación!\n\n¿Listo para usar DuckDuckGo en Windows?\n\nPaso 1\nVisita esta URL en tu ordenador con Windows para la descarga:\nhttps://duckkgogo.com/windows\n\nPaso 2\nAbre el instalador DuckDuckGo en Descargas, selecciona Instalar e introduce tu código de invitación.\n\nCódigo de invitación: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "¿Todo listo para empezar a navegar de forma privada en Windows?\n\nVisita esta URL en tu ordenador para la descarga: \nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo para Windows tiene todo lo que necesitas para navegar con más privacidad: búsqueda privada, bloqueo de rastreadores, encriptación forzada y bloqueo de ventanas emergentes de cookies, además de más protecciones de primera nivel que están por llegar."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Aplicación DuckDuckGo para Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "¡Consigue DuckDuckGo para Windows!"; + diff --git a/DuckDuckGo/es.lproj/Settings.strings b/DuckDuckGo/es.lproj/Settings.strings index 951257e63a..98762d2786 100644 --- a/DuckDuckGo/es.lproj/Settings.strings +++ b/DuckDuckGo/es.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Tamaño del texto"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Título"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Abrir aplicación"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Control Global de Privacidad (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Añadir"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Salir de la aplicación (15 minutos de inactividad)"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Vistas previas con pulsación larga"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Navega de forma privada con nuestra aplicación para Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Protección de privacidad habilitada para todos los sitios"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Compartir opiniones"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Posición de la barra de direcciones"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Posición de la barra de direcciones"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Deja que DuckDuckGo gestione las ventanas emergentes de consentimiento de cookies"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Acerca de DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Arriba"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Más sobre DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Sincronizar"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Navega de forma privada con nuestra aplicación para Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Etiqueta"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "Aplicación DuckDuckGo para Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Tamaño del texto"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Añadir una aplicación a tu Dock"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "Aplicación de escritorio DuckDuckGo"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "Aplicación DuckDuckGo para Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Nueva pestaña"; diff --git a/DuckDuckGo/et.lproj/Feedback.strings b/DuckDuckGo/et.lproj/Feedback.strings index a7f376dc2a..55e2028121 100644 --- a/DuckDuckGo/et.lproj/Feedback.strings +++ b/DuckDuckGo/et.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Tagasi"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Esita"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Esita"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Teata mittetoimivast saidist"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Mittetoimiva saidi põhjus"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Jaga tagasisidet"; diff --git a/DuckDuckGo/et.lproj/Localizable.strings b/DuckDuckGo/et.lproj/Localizable.strings index 0299189580..5622e05891 100644 --- a/DuckDuckGo/et.lproj/Localizable.strings +++ b/DuckDuckGo/et.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Redigeeri"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Jaga"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "All"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Populaarseimad"; + /* No comment provided by engineer. */ "addWidget.button" = "Lisa vidin"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Vabasta DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Blokeeri oma seadmes rakenduste jälgurid"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Keelatud"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Lubatud"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Luba App Tracking Protection, et saaksime blokeerida tüütud jälgurid teistes rakendustes."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "App Tracking Protection blokeeris "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " täna sinu rakendustes."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Just nüüd"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Halda jälgureid"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Mis toimub?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Esita"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Aitäh! Tagasiside on esitatud."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Mitte praegu"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Teata probleemist"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Taasta vaikesätted"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Rakenduse jälgimise kaitse"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Viimane lubatud katse %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Viimane blokeeritud katse %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Sisselogimine"; @@ -547,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Videot ei esitatud"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Vali loendist oma probleem..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "VALI KATEGOORIA"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Probleemi täpsem kirjeldamine võib meil aidata seda lahendada"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "KIRJELDAGE TOIMUNUT"; +/* No comment provided by engineer. */ +"bucket: %@" = "andmekogum: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Viimane kuu"; @@ -781,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Ühtegi vastet ei leitud"; +/* No comment provided by engineer. */ +"Error" = "Viga"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Sisselogimine"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Vabandust, logi uuesti sisse, et Email Protection selles brauseris uuesti lubada."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Email Protectioni tõrge"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Ava seaded"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Paistab, et sinu seadme salvestusruum on otsa saanud. Jätkamiseks vabasta veidi ruumi."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Ei ole piisavalt ruumi"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Sule rakendus"; + +/* Alert message */ +"error.preemptive-crash.body" = "Paistab, et rakendusega on probleem ja see tuleb sulgeda. Jätkamiseks ava see uuesti."; + +/* Alert title */ +"error.preemptive-crash.title" = "Tuvastati rakenduse probleem"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Lemmik"; @@ -1000,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Avaleht"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Lisa järjehoidja"; @@ -1066,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo for Mac on just nii kiire, kui vajad, oodatud sirvimisfunktsioonidega ja tulvil meie oma klassi parimaid privaatsuselemente."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Ava oma kutse"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo for Mac on valmis."; /* Title for the copy action */ "mac-waitlist.copy" = "Kopeeri"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Ava oma Windowsi arvutis:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Ava oma Macis:"; @@ -1087,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Windowsi versioon tuleb varsti."; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Kas otsid Windowsi versiooni?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Sirvi privaatselt meie Maci rakendusega"; @@ -1097,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo for Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "DuckDuckGo töölauarakendus"; +"mac-waitlist.title" = "DuckDuckGo rakendus Macile"; /* No comment provided by engineer. */ "menu.button.hint" = "Sirvimismenüü"; @@ -1114,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Redigeeri"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Hallatavad küpsised"; @@ -1156,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Selle lingi avamiseks vajalikku rakendust ei leitud"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Kirjuta, milline rakendus on sinu seadmes katki."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Veebisaidid kasutavad küpsiseid, et hoida sind sisse logitud. Kui teed saidi tulekindlaks, ei kustutata küpsiseid ja sa jääd sisse logituks isegi pärast tulenupu kasutamist. Me blokeerime endiselt kolmanda poole jälitajad, kelle me tulekindlatelt lehtedelt leiame."; @@ -1246,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Milline veebisait on katki?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "%@ ei pääse enam sinu sünkroonitud andmetele juurde."; + /* Accessibility label on remove button */ "tab.close.home" = "Sulge avalehe vahekaart"; @@ -1318,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Heli töödeldakse seadmes. Seda ei salvestata ega jagata kellegagi, sealhulgas DuckDuckGoga."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Luba teavitused"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Ava oma kutse"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopeeri"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Kutsekood"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Samm %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Oled kutsutud!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Liituge privaatse ootenimekirjaga"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Ootenimekirjaga liitumine ..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Jaga linki"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "TEAVITAGE MIND"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Kas soovid saada teavituse, kui on sinu kord?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Ei aitäh"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Võime sind teavitada, kui on sinu kord aga DuckDuckGo jaoks on teavitused praegu keelatud."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Ootenimekirjaga liitumiseks ei pea isikuandmeid jagama. Sinu järjekorrakoht on kinnitatud ainult sinu seadmes oleva ajatempliga ja me teavitame sind, kui on sinu kord."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Oled ootenimekirjas!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Saadaval on allalaadimine"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Oled kutsutud!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Lemmik on eemaldatud"; @@ -1342,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Sõnum saatjalt %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Proovi rakendust DuckDuckGo for Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Allalaadimiseks ava oma Windowsi seadmes see URL:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Ava allalaadimiste kaustas DuckDuckGo Installer, vali Installi ja sisesta seejärel oma kutsekood."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Kas oled valmis kasutama DuckDuckGo Windowsi rakendust?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Kas otsid Maci versiooni?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Hangi varane juurdepääs, et proovida DuckDuckGo Windowsi rakendust!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Saadame sulle teavituse, kui sinu DuckDuckGo for Windows on allalaadimiseks valmis. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Sinu kutse DuckDuckGo Maci rakenduse proovimiseks saabub siia. Vaata varsti tagasi või telli teavitus, millal on sinu kord."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Saadame sulle teavituse, kui sinu DuckDuckGo for Windows on allalaadimiseks valmis."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Sirvi privaatselt meie Windowsi rakendusega"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Oled kutsutud!\n\nKas oled valmis kasutama DuckDuckGo Windowsi rakendust?Samm 1\nAva allalaadimiseks oma Windowsi seadmes see URL:\nhttps://duckduckgo.com/windows\n\nSamm 2\nAva allalaadimiste kaustas DuckDuckGo Installer, vali Installi ja sisesta seejärel oma kutsekood.\n\nKutsekood: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Kas oled valmis Windowsis privaatseks sirvimiseks?\n\nAllalaadimiseks ava oma Windowsi arvutis see URL:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo Windowsi rakendus sisaldab kõike vajalikku privaatsemaks sirvimiseks: privaatne otsing, jälgurite blokeerimine, sundkrüptimine ja küpsiste hüpikakende blokeerimine. Lisaks on tulemas veel täiendavaid tippklassi kaitsemeetmeid."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "DuckDuckGo rakendus Windowsile"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Hangi DuckDuckGo for Windows!"; + diff --git a/DuckDuckGo/et.lproj/Settings.strings b/DuckDuckGo/et.lproj/Settings.strings index 308e6cfdf2..5cb1f1e951 100644 --- a/DuckDuckGo/et.lproj/Settings.strings +++ b/DuckDuckGo/et.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Teksti suurus"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Pealkiri"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Rakenduse käivitamine"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Üleilmne privaatsuskontroll (Global Privacy Control (GPC))"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Lisa"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Rakendusest väljumisel, 15-minutilise passiivsuse järel"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Pika vajutusega eelvaated"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Sirvi privaatselt meie Windowsi rakendusega"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Privaatsuse kaitse on lubatud kõigil saitidel"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Jaga tagasisidet"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Aadressiriba asukoht"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Aadressiriba asukoht"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Luba DuckDuckGo'l hallata küpsiste nõusoleku hüpikaknaid"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "DuckDuckGo'st"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Populaarseimad"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Veel DuckDuckGo'lt"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Sünkrooni"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Sirvi privaatselt meie Maci rakendusega "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Silt"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "DuckDuckGo Windowsi rakendus"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Teksti suurus"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Lisa rakendus oma dokki"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "DuckDuckGo töölauarakendus"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "DuckDuckGo Maci rakendus"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Uus vaheleht"; diff --git a/DuckDuckGo/fi.lproj/Feedback.strings b/DuckDuckGo/fi.lproj/Feedback.strings index ae31a9e68b..aef969e8ca 100644 --- a/DuckDuckGo/fi.lproj/Feedback.strings +++ b/DuckDuckGo/fi.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Takaisin"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Lähetä"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Lähetä"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Ilmoita viallisesta sivustosta"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Rikkinäisen sivuston syy"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Jaa palaute"; diff --git a/DuckDuckGo/fi.lproj/Localizable.strings b/DuckDuckGo/fi.lproj/Localizable.strings index f5e0fab46e..54667bce8c 100644 --- a/DuckDuckGo/fi.lproj/Localizable.strings +++ b/DuckDuckGo/fi.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Muokkaa"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Jaa"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Alareuna"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Suosituin"; + /* No comment provided by engineer. */ "addWidget.button" = "Lisää widget"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Avaa DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Estä sovellusseuranta laitteessa"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Pois käytöstä"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Käytössä"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Ota App Tracking Protection käyttöön, jotta voimme estää muiden sovellusten ärsyttävät seurantaohjelmat."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "App Tracking Protection estetty "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " sovelluksissasi tänään."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Juuri nyt"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Hallitse seurantaohjelmia"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Mitä tapahtuu?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Lähetä"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Kiitos! Palaute lähetetty."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Ei nyt"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Ilmoita ongelmasta"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Palauta oletusasetukset"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Sovellusten seurantasuojaus"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Viimeisin sallittu yritys %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Viimeisin estetty yritys %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Kirjaudu sisään"; @@ -547,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Videota ei toistettu"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Valitse ongelma luettelosta..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "VALITSE KATEGORIA"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Lisätiedot saattavat auttaa meitä ratkaisemaan tämän ongelman"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "KUVAILE MITÄ TAPAHTUI"; +/* No comment provided by engineer. */ +"bucket: %@" = "bucket: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Viime kuukausi"; @@ -781,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Ei hakutuloksia"; +/* No comment provided by engineer. */ +"Error" = "Virhe"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Kirjaudu sisään"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Kirjaudu sisään uudelleen, jotta Email Protection -ominaisuudet otetaan käyttöön uudelleen tässä selaimessa."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Email Protection -virhe"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Avaa asetukset"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Näyttää siltä, että laitteesi tallennustila on loppunut. Vapauta tilaa jatkaaksesi."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Ei riittävästi tallennustilaa"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Sulje sovellus"; + +/* Alert message */ +"error.preemptive-crash.body" = "Näyttää siltä, että sovelluksessa on ongelma, ja se on suljettava. Avaa uudelleen jatkaaksesi."; + +/* Alert title */ +"error.preemptive-crash.title" = "Sovellusongelma havaittu"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Suosikki"; @@ -1000,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Koti"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Lisää kirjanmerkki"; @@ -1066,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "Macin DuckDuckGo tarjoaa kaipaamasi nopeuden, odottamasi selaintoiminnot ja luokkansa parhaat tietosuojaominaisuudet."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Avaa kutsusi"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "Macin DuckDuckGo on valmis!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopioi"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Siirry Windows-tietokoneella osoitteeseen:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Siirry Mac-tietokoneellasi osoitteeseen:"; @@ -1087,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Windows-versio on tulossa pian!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Etsitkö Windows-versiota?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Selaa yksityisesti Mac-sovelluksellamme"; @@ -1097,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "DuckDuckGo-työpöytäsovellus"; +"mac-waitlist.title" = "DuckDuckGo-sovellus Mac-laitteelle"; /* No comment provided by engineer. */ "menu.button.hint" = "Selausvalikko"; @@ -1114,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Muokkaa"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Hallitut evästeet"; @@ -1156,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Linkin avaamiseen tarvittavaa sovellusta ei löydy"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Ilmoita, mikä laitteesi sovellus on rikki."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Verkkosivustot käyttävät evästeitä, joilla pysyt kirjautuneena sisään. Kun teet sivustosta palonkestävän, evästeitä ei poisteta ja pysyt kirjautuneena sisään, vaikka käytät Liekki-painiketta. Estämme edelleen kolmannen osapuolen seurannan palonkestävillä sivustoilla."; @@ -1246,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Mikä verkkosivusto on viallinen?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "\"%@\" ei enää pääse käsiksi synkronoituihin tietoihisi."; + /* Accessibility label on remove button */ "tab.close.home" = "Sulje koti-välilehti"; @@ -1318,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Ääni käsitellään laitteella. Sitä ei tallenneta eikä jaeta kenellekään, edes DuckDuckGolle."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Salli ilmoitukset"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Avaa kutsusi"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopioi"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Kutsukoodi"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Vaihe %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Sinut on kutsuttu!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Liity yksityiselle odotuslistalle"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Liitytään odotuslistalle..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Jaa linkki"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "HALUAN ILMOITUKSEN"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Haluatko saada ilmoituksen, kun on sinun vuorosi?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Ei kiitos"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Voimme ilmoittaa sinulle, kun on sinun vuorosi, mutta ilmoitukset ovat tällä hetkellä poissa käytöstä DuckDuckGossa."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Sinun ei tarvitse jakaa henkilötietoja liittyäksesi jonotuslistalle. Varmistat paikkasi jonossa aikaleimalla, joka on olemassa vain laitteessasi. Näin voimme ilmoittaa sinulle, kun on sinun vuorosi."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Olet odotuslistalla!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Lataus saatavilla"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Sinut on kutsuttu!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Suosikki poistettu"; @@ -1342,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Viesti käyttäjältä %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Hanki DuckDuckGo Windows-laitteeseesi!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Lataa tämä URL-osoite Windows-laitteessasi:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Avaa DuckDuckGo-asennusohjelma Lataukset-kohdasta, valitse Asenna ja kirjoita sitten kutsukoodisi."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Oletko valmis käyttämään DuckDuckGota Windows-laitteessa?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Etsitkö Mac-versiota?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Kokeile Windows-laitteen DuckDuckGo-sovellusta!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Lähetämme sinulle ilmoituksen, kun DuckDuckGo-kopiosi on ladattavissa Windows-laitteeseen. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Kutsusi kokeilla DuckDuckGon Windows-sovellusta saapuu tänne. Tarkista tilanne pian uudelleen. Voimme myös lähettää sinulle ilmoituksen, kun on sinun vuorosi."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Lähetämme sinulle ilmoituksen, kun DuckDuckGo-kopiosi on ladattavissa Windows-laitteeseen."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Selaa yksityisesti Windows-sovelluksellamme"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Olet saanut kutsun!\n\nOletko valmis käyttämään DuckDuckGo'ta Windows-laitteessa?Vaihe 1\nLataa tämä URL-osoite Windows-laitteessasi:\nhttps://duckduckgo.com/windows\n\nVaihe 2\nAvaa DuckDuckGo-asennusohjelma Lataukset-kohdasta, valitse Asenna ja kirjoita sitten kutsukoodisi.\n\nKutsukoodi: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Oletko valmis aloittamaan yksityisen selaamisen Windows-laitteessa?\n\nLataa seuraavasta osoitteesta:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGon Windows-sovellus tarjoaa kaiken, mitä tarvitset selaamiseen yksityisemmin. Siinä on yksityinen haku, jäljittäjien esto, pakotettu salaus ja evästeiden ponnahdusikkunoiden esto, ja tulossa on vielä lisää luokkansa parhaita suojauksia."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "DuckDuckGo-sovellus Windowsille"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Hanki DuckDuckGo Windowsille!"; + diff --git a/DuckDuckGo/fi.lproj/Settings.strings b/DuckDuckGo/fi.lproj/Settings.strings index 9960995278..11b81ffefe 100644 --- a/DuckDuckGo/fi.lproj/Settings.strings +++ b/DuckDuckGo/fi.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Tekstin koko"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Otsikko"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Sovelluksen käynnistys"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Global Privacy Control (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Lisää"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Sovelluksesta poistuttaessa, 15 minuutin toimettomuuden jälkeen"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Esikatselu pitkällä painalluksella"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Selaa yksityisesti Windows-sovelluksellamme"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Tietosuoja on käytössä kaikilla sivustoilla"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Jaa palaute"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Osoitepalkin sijainti"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Osoitepalkin sijainti"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Anna DuckDuckGon hallinnoida evästeiden hallinnan ponnahdusikkunoita"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Tietoa DuckDuckGo:sta"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Suosituin"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Lisää DuckDuckGolta"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Synkronoi"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Selaa yksityisesti Mac-sovelluksellamme "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Label"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "DuckDuckGo-sovellus Windowsille"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Tekstin koko"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Lisää sovellus telakkaasi"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "DuckDuckGo-työpöytäsovellus"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "DuckDuckGo-sovellus Macille"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Uusi välilehti"; diff --git a/DuckDuckGo/fr.lproj/Feedback.strings b/DuckDuckGo/fr.lproj/Feedback.strings index 1cf29f1065..e829b3329b 100644 --- a/DuckDuckGo/fr.lproj/Feedback.strings +++ b/DuckDuckGo/fr.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Retour"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Envoyer"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Envoyer"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Signaler un problème de site"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Raison du mauvais fonctionnement du site"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Partagez vos commentaires"; diff --git a/DuckDuckGo/fr.lproj/Localizable.strings b/DuckDuckGo/fr.lproj/Localizable.strings index 3eb6c00b8b..d6045bbc9b 100644 --- a/DuckDuckGo/fr.lproj/Localizable.strings +++ b/DuckDuckGo/fr.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Modifier"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Partager"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "En bas"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Haut de page"; + /* No comment provided by engineer. */ "addWidget.button" = "Ajouter un widget"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Déverrouiller DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Bloquer les traqueurs d'applications sur votre appareil"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Désactivé"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Activé"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Activez App Tracking Protection pour que nous puissions bloquer les traqueurs indésirables dans d'autres applications."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "App Tracking Protection a bloqué "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " dans vos applications aujourd'hui."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "À l'instant"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Gérer les traqueurs"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Que se passe-t-il ?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Envoyer"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Merci ! Commentaire envoyé."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Pas maintenant"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Signaler le problème"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Rétablir les valeurs par défaut"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Protection contre le suivi des applications"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Dernière tentative d'autorisation %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Dernière tentative de blocage %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Se connecter"; @@ -335,7 +563,7 @@ "autofill.logins.prompt.password.button.title" = "Mot de passe pour %@"; /* Title for autofill login prompt */ -"autofill.logins.prompt.title" = "Utiliser un identifiant enregistré ?"; +"autofill.logins.prompt.title" = "Utiliser un identifiant enregistré ?"; /* Subtitle displayed when there are no results on Autofill search, example : No Result (Title) for Duck (Subtitle) */ "autofill.logins.search.no-results.subtitle" = "pour '%@'"; @@ -547,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "La vidéo n'a pas été lue"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Sélectionnez votre problème dans la liste..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "SÉLECTIONNER UNE CATÉGORIE"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Le fait de partager plus d'informations peut nous aider à résoudre ce problème"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "DÉCRIVEZ CE QU'IL S'EST PASSÉ"; +/* No comment provided by engineer. */ +"bucket: %@" = "case : %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Le mois dernier"; @@ -781,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Aucune correspondance trouvée"; +/* No comment provided by engineer. */ +"Error" = "Erreur"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Se connecter"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Désolé, veuillez vous connecter à nouveau pour réactiver les fonctionnalités d'Email Protection sur ce navigateur."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Erreur Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Ouvrez les Paramètres"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Apparemment, votre appareil n'a plus d'espace de stockage. Veuillez libérer de l'espace pour pouvoir continuer."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Pas assez d'espace de stockage"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Fermer l'application"; + +/* Alert message */ +"error.preemptive-crash.body" = "Apparemment, un problème lié à l'application fait qu'elle doit fermer. Veuillez la rouvrir pour pouvoir continuer."; + +/* Alert title */ +"error.preemptive-crash.title" = "Problème d'application détecté"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Favori"; @@ -1000,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Accueil"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Ajouter un signet"; @@ -1066,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo pour Mac répond à vos besoins de rapidité et de fonctionnalités de navigation, et dispose des meilleurs outils de leur catégorie pour protéger votre vie privée."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Ouvrez votre invitation"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo pour Mac est prêt !"; /* Title for the copy action */ "mac-waitlist.copy" = "Copier"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Sur votre ordinateur Windows, accédez à :"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Sur votre Mac, accédez à :"; @@ -1087,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Des places vont bientôt se libérer !"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Vous cherchez la version Windows ?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Naviguez incognito avec notre application pour Mac"; @@ -1097,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo pour Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "Application de bureau DuckDuckGo"; +"mac-waitlist.title" = "Application DuckDuckGo pour Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Menu de navigation"; @@ -1114,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Modifier"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Cookies gérés"; @@ -1156,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "L'application nécessaire pour ouvrir ce lien est introuvable"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Veuillez indiquer quelle application est défectueuse sur votre appareil."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Les sites Web utilisent des cookies pour maintenir votre connexion. Quand vous placez un site en mode coupe-feu, les cookies sont conservés et vous restez connecté(e), même après avoir utilisé le bouton en forme de flamme. Ceci dit, les traqueurs tiers sont bloqués sur les sites coupe-feu."; @@ -1246,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Quel site Web pose problème ?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "« %@ » ne pourra plus accéder à vos données synchronisées."; + /* Accessibility label on remove button */ "tab.close.home" = "Fermer l'onglet d'accueil"; @@ -1318,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "L'audio est traité directement sur l'appareil. Il n'est ni stocké ni partagé avec qui que ce soit, y compris DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Autoriser les notifications"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Ouvrez votre invitation"; + +/* Title for the copy action */ +"waitlist.copy" = "Copier"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Code d'invitation"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Étape %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Vous avez reçu une invitation !"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Rejoindre la liste d'attente privée"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Inscription à la liste d'attente..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Partager le lien"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "ME PRÉVENIR"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Recevoir une notification lorsque ce sera votre tour ?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Non merci"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Nous pouvons vous avertir lorsque ce sera votre tour, mais les notifications sont actuellement désactivées pour DuckDuckGo."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Vous n'aurez pas à fournir d'informations personnelles pour vous inscrire sur la liste d'attente. Votre place sera assurée par un horodatage associé uniquement à votre appareil, qui nous permettra de vous informer quand viendra votre tour."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Vous êtes sur liste d'attente !"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Téléchargement disponible"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Vous avez reçu une invitation !"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Favori supprimé"; @@ -1342,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Message de %@ :"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Essayez DuckDuckGo pour Windows !"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Accédez à cette URL sur votre appareil Windows pour télécharger l'application :"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Ouvrez le programme d'installation DuckDuckGo dans Téléchargements, sélectionnez Installer, puis saisissez votre code d'invitation."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Prêt(e) à utiliser DuckDuckGo sous Windows ?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Vous cherchez la version Mac ?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Profitez d'un accès anticipé afin d'essayer DuckDuckGo pour Windows !"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Nous vous avertirons lorsque vous pourrez télécharger DuckDuckGo pour Windows. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Votre invitation à essayer DuckDuckGo pour Windows arrivera ici. Vous pouvez revenir dans quelque temps ou attendre de recevoir une notification de notre part."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Nous vous avertirons lorsque vous pourrez télécharger DuckDuckGo pour Windows."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Naviguez incognito avec notre application pour Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Vous avez reçu une invitation !\n\nPrêt(e) à utiliser DuckDuckGo sous Windows ?\n\nÉtape 1\nAccédez à cette URL sur votre appareil Windows pour télécharger l'application :\nhttps://duckduckgo.com/windows\n\nÉtape 2\nOuvrez le programme d'installation DuckDuckGo dans Téléchargements, sélectionnez Installer, puis saisissez votre code d'invitation.\n\nCode d'invitation : %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Prêt(e) à naviguer incognito sur Windows ?\n\nAccédez à cette URL sur votre ordinateur pour télécharger l'application :\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo pour Windows a tout ce dont vous avez besoin pour naviguer en toute confidentialité : recherche privée, blocage des traqueurs, cryptage forcé et blocage des fenêtres contextuelles (cookies), sans oublier d'autres protections de choix à venir."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Application DuckDuckGo pour Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Procurez-vous DuckDuckGo pour Windows !"; + diff --git a/DuckDuckGo/fr.lproj/Settings.strings b/DuckDuckGo/fr.lproj/Settings.strings index 6a69d04247..b4e289ee89 100644 --- a/DuckDuckGo/fr.lproj/Settings.strings +++ b/DuckDuckGo/fr.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Taille du texte"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Titre"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Au lancement de l'application"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Global Privacy Control (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Ajouter"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Quitter l'application, inactivité pendant 15 minutes"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Aperçus obtenus en appuyant longuement"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Naviguez incognito avec notre application pour Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "La protection de la confidentialité est activée pour tous les sites"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Partagez vos commentaires"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Position de la barre d'adresse"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Position de la barre d'adresse"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Autoriser DuckDuckGo à gérer les fenêtres contextuelles de consentement aux cookies"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "À propos de DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Haut de page"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Plus de la part de DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Synchronisation"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Naviguez incognito avec notre application pour Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Label"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "Application DuckDuckGo pour Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Taille du texte"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Ajouter l'application à votre Dock"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "Application de bureau DuckDuckGo"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "Application DuckDuckGo pour Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Nouvel onglet"; diff --git a/DuckDuckGo/hr.lproj/Feedback.strings b/DuckDuckGo/hr.lproj/Feedback.strings index 5cfc55ead8..db97dd3363 100644 --- a/DuckDuckGo/hr.lproj/Feedback.strings +++ b/DuckDuckGo/hr.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Natrag"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Pošalji"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Pošalji"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Prijavi neispravno web-mjesto"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Razlog za neispravno web-mjesto"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Podijeli povratne informacije"; diff --git a/DuckDuckGo/hr.lproj/Localizable.strings b/DuckDuckGo/hr.lproj/Localizable.strings index 65fb6c8599..0a772fd4f5 100644 --- a/DuckDuckGo/hr.lproj/Localizable.strings +++ b/DuckDuckGo/hr.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Uredi"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Podijeli"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Dno"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Vrh"; + /* No comment provided by engineer. */ "addWidget.button" = "Dodaj widget"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Otključaj DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Blokiraj aplikacija za praćenje na tvom uređaju"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Onemogućeno"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Omogućeno"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Omogući App Tracking Protection kako bismo mogli blokirati dosadne \"tragače\" u drugim aplikacijama."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "App Tracking Protection danas je blokirao "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " u tvojim aplikacijama."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Upravo sada"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Upravljanje alatima za praćenje"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Što se događa?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Pošalji"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Hvala! Povratne su informacije su poslane."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Ne sada"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Prijavi problem"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Vrati zadano"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Zaštita od praćenja aplikacija"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Zadnji pokušaj je dopušten %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Zadnji pokušaj je blokiran %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Prijava"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.example.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Ovo će izbrisati tvoju oznaku za \"%@\""; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Knjižna oznaka je izbrisana"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Izbriši"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Videozapis se nije reproducirao"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Odaberi svoj problem s popisa..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "ODABERI KATEGORIJU"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Dijeljenje više pojedinosti može nam pomoći u rješavanju ovog problema"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "OPIŠITE ŠTO SE DOGODILO"; +/* No comment provided by engineer. */ +"bucket: %@" = "bucket: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Prošli mjesec"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Nema pronađenih rezultata"; +/* No comment provided by engineer. */ +"Error" = "Pogreška"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Prijava"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Žao nam je, prijavi se ponovno kako bi se ponovno omogućile značajke zaštite e-pošte (Email Protection) u ovom pregledniku."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Email Protection pogreška"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Otvori Postavke"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Čini se da je na tvom uređaju ponestalo prostora za pohranu. Oslobodi prostor za nastavak."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Nema dovoljno prostora za pohranu"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Zatvori aplikaciju"; + +/* Alert message */ +"error.preemptive-crash.body" = "Čini se da postoji problem s aplikacijom i ona se mora zatvoriti. Ponovno je otvori za nastavak rada."; + +/* Alert title */ +"error.preemptive-crash.title" = "Otkriven je problem s aplikacijom"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Omiljeno"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Početni zaslon"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Dodaj knjižnu oznaku"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "Aplikacija DuckDuckGo za Mac pruža ti potrebnu brzinu i značajke pretraživanja kakve očekuješ, a isporučuje se s našim najboljim alatima za privatnost u svojoj klasi - privacy essentials."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Otvori svoju pozivnicu"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo za Mac je spreman!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopiraj"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Na računalu sa sustavom Windows idi na:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Na Macu idi na:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Uskoro i za Windows!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Tražiš verziju za Windows?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Pretražujte privatno s našom aplikacijom za Mac"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo za Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "DuckDuckGo aplikacija za osobno računalo"; +"mac-waitlist.title" = "DuckDuckGo aplikacija za Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Izbornik pregledavanja"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Uredi"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "U redu"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Upravlja se kolačićima"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Nije moguće pronaći aplikaciju koja je potrebna za otvaranje te poveznice"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Navedi koja je aplikacija na tvom uređaju neispravna."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Web-mjesta oslanjaju se na kolačiće kako bi te zadržala prijavljenim/om. Kada je web-mjesto označeno kao zaštićeno, kolačići neće biti izbrisani i ostat ćeš prijavljen/a čak i nakon upotrebe gumba Fire. I dalje blokiramo alate za praćenje trećih strana koje pronađemo na mrežnim mjestima označenim kao Fireproof."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Koje je web-mjesto neispravno?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "\"%@\" više neće moći pristupiti tvojim sinkroniziranim podacima."; + /* Accessibility label on remove button */ "tab.close.home" = "Zatvori početnu karticu"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Zvuk se obrađuje na uređaju. Ne pohranjuje se i ne dijeli ni s kim, uključujući DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Dopusti obavijesti"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Otvori svoju pozivnicu"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopiraj"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Pozivni kôd"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Korak %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Pozvani ste!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Pridružite se privatnoj listi čekanja"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Pridruživanje listi čekanja..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Podijeli poveznicu"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "OBAVIJESTI ME"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Primi obavijest kada dođeš na red?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Ne, hvala"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Možemo vas obavijestiti kada dođete na red, ali obavijesti su trenutačno onemogućene za DuckDuckGo."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Nećete morati podijeliti nikakve osobne podatke za pridruživanje listi čekanja. Svoje ćete mjesto osigurati u skladu s vremenskom oznakom koja postoji samo na vašem uređaju kako bismo vas mogli obavijestiti kada na vas dođe red."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Na popisu ste!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Preuzimanje je dostupno"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Pozvani ste!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Omiljena je stavka uklonjena"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Poruka od %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Nabavi DuckDuckGo za Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Posjeti ovaj URL na svom Windows uređaju za preuzimanje:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Otvori instalacijsku datoteku za DuckDuckGo pod Preuzimanja, odaberi Instaliraj, zatim unesi svoju pozivnu šifru."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Jesi li spreman koristiti DuckDuckGo u sustavu Windows?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Tražiš verziju za Mac?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Možeš dobiti rani pristup da isprobaš DuckDuckGo za Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Poslat ćemo ti obavijest kad tvoj primjerak programa DuckDuckGo za Windows bude spreman za preuzimanje. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Tvoja pozivnica da isprobaš DuckDuckGo za Windows stići će ovdje. Provjerite ponovno uskoro, ili vam možemo poslati obavijest kada dođete na red."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Poslat ćemo ti obavijest kad tvoj primjerak programa DuckDuckGo za Windows bude spreman za preuzimanje."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Privatno pregledavanje s našom aplikacijom za Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Imaš poziv!\n\nJesi li spreman koristiti DuckDuckGo u sustavu Windows?1. korak\n Posjeti ovaj URL na svom Windows uređaju za preuzimanje: \n https://duckduckgo.com/windows\n\n2. korak\nOtvori instalacijsku datoteku za DuckDuckGo pod Preuzimanja, odaberi Instaliraj, zatim unesi svoju pozivnu šifru.\n\nPozivna šifra: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Jesi li spreman za privatno pregledavanje u sustavu Windows?\n\nPosjeti ovaj URL na računalu za preuzimanje:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo za Windows ima sve što ti je potrebno za pregledavanje s više privatnosti - privatno pretraživanje, blokiranje praćenja, prisilno šifriranje i blokiranje skočnih prozora kolačića, a u skoroj budućnosti dodat ćemo još vrhunskih značajki zaštite."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Aplikacija DuckDuckGo za Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Nabavi DuckDuckGo za Windows!"; + diff --git a/DuckDuckGo/hr.lproj/Settings.strings b/DuckDuckGo/hr.lproj/Settings.strings index fc22982024..522994e162 100644 --- a/DuckDuckGo/hr.lproj/Settings.strings +++ b/DuckDuckGo/hr.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Veličina teksta"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Naslov"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Pokretanje aplikacije"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Globalna kontrola privatnosti (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Dodaj"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Izlaz iz aplikacije, neaktivna 15 minuta"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Pretpregledi na dugi pritisak"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Privatno pregledavanje s našom aplikacijom za Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Zaštita privatnosti omogućena za sva web-mjesta"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Podijeli povratne informacije"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Položaj adresne trake"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Položaj adresne trake"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Neka DuckDuckGo upravlja skočnim prozorima za pristanak na kolačiće"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "O DuckDuckGou"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Vrh"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Više od DuckDuckGoa"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Sinkronizacija"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Pretražujte privatno s našom aplikacijom za Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Label"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "Aplikacija DuckDuckGo za Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Veličina teksta"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Dodajte aplikaciju na Dock"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "DuckDuckGo aplikacija za osobno računalo"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "Aplikacija DuckDuckGo za Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Nova kartica"; diff --git a/DuckDuckGo/hu.lproj/Feedback.strings b/DuckDuckGo/hu.lproj/Feedback.strings index 8007479902..ad536e2dd3 100644 --- a/DuckDuckGo/hu.lproj/Feedback.strings +++ b/DuckDuckGo/hu.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Vissza"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Elküldés"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Elküldés"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Hibás weboldal jelentése"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Webhelyhiba oka"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Visszajelzés megosztása"; diff --git a/DuckDuckGo/hu.lproj/Localizable.strings b/DuckDuckGo/hu.lproj/Localizable.strings index 900f197b78..37e7d52080 100644 --- a/DuckDuckGo/hu.lproj/Localizable.strings +++ b/DuckDuckGo/hu.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Szerkesztés"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Megosztás"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Alul"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Fel"; + /* No comment provided by engineer. */ "addWidget.button" = "Minialkalmazás hozzáadása"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Oldd fel a DuckDuckGo-t."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Alkalmazáskövetők letiltása az eszközödön"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Letiltva"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Engedélyezve"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Engedélyezd az App Tracking Protectiont, hogy blokkolhassuk a bosszantó nyomkövetőket más alkalmazásokban."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "Az App Tracking Protection blokkolt "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " ma az alkalmazásokban."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Épp most"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Nyomkövetők kezelése"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Mi történik?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Elküldés"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Köszönjük! Visszajelzés elküldve."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Most nem"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Probléma jelentése"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Alapértelmezések visszaállítása"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Alkalmazáskövetés elleni védelem"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Utolsó engedélyezett próbálkozás időpontja: %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Utolsó blokkolt próbálkozás időpontja: %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Bejelentkezés"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.example.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Ez törli a(z) „%@” könyvjelződet"; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Könyvjelző törölve"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Törlés"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "A videót nem játszotta le"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Válaszd ki a problémát a listából…"; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "VÁLASSZ KATEGÓRIÁT"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "A további részletek segítségünkre lehetnek a probléma megoldásában"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "ESEMÉNY LEÍRÁSA"; +/* No comment provided by engineer. */ +"bucket: %@" = "gyűjtő: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Elmúlt hónapban"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Nincs találat"; +/* No comment provided by engineer. */ +"Error" = "Hiba"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Bejelentkezés"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Sajnáljuk, jelentkezz be újra az e-mail-védelemnek az ebben a böngészőben való újbóli bekapcsolásához."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "E-mail-védelmi hiba"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Beállítások megnyitása"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Úgy tűnik, az eszközön elfogyott a tárhely. A folytatáshoz szabadíts fel helyet."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Nincs elég tárhely"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Alkalmazás bezárása"; + +/* Alert message */ +"error.preemptive-crash.body" = "Úgy tűnik, hogy probléma van az alkalmazással, ezért be kell zárni. A folytatáshoz nyisd meg újra."; + +/* Alert title */ +"error.preemptive-crash.title" = "Alkalmazásprobléma tapasztalható"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Kedvenc"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Kezdőlap"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Könyvjelző mentése"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "A DuckDuckGo Mac verziója gyors, böngészési funkciókban gazdag, és kategóriája legjobb adatvédelmi megoldásait kínálja."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Meghívó megnyitása"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "Elkészült a DuckDuckGo Maces verziója!"; /* Title for the copy action */ "mac-waitlist.copy" = "Másolás"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Windowsos számítógépen lépj erre az oldalra:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Macen lépj a következőre:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Hamarosan érkezik a Windows verzió!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "A Windowsra készült verziót keresed?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Privát böngészés Maces alkalmazásunkkal"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo Mac verzió"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "DuckDuckGo asztali alkalmazás"; +"mac-waitlist.title" = "DuckDuckGo alkalmazás Machez"; /* No comment provided by engineer. */ "menu.button.hint" = "Tallózás a menüben"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Szerkesztés"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Kezelt sütik"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "A link megnyitásához szükséges alkalmazás nem található."; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Add meg, hogy melyik alkalmazás működik hibásan az eszközön."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "A webhelyek sütik segítségével teszik lehetővé, hogy bejelentkezve maradhass. Ha tűzállóvá teszel egy weboldalt, a sütik nem törlődnek, és még a Tűz gomb használata után is bejelentkezve maradsz. A tűzálló webhelyeken a külső felek nyomkövetőit azonban blokkoljuk."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Melyik weboldal nem működik?”"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "A(z) „%@” többé nem férhet hozzá a szinkronizált adatokhoz."; + /* Accessibility label on remove button */ "tab.close.home" = "Kezdőlap bezárása"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "A hang feldolgozása az eszközön történik. Nem tároljuk és nem osztjuk meg senkivel, még a DuckDuckGóval sem."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Értesítések engedélyezése"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Meghívó megnyitása"; + +/* Title for the copy action */ +"waitlist.copy" = "Másolás"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Meghívókód"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "%d. lépés"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Meghívót kaptál!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Csatlakozz a privát várólistához"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Csatlakozás a várólistához…"; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Link megosztása"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "ÉRTESÍTSETEK"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Szeretnél értesítést kapni, ha sorra kerülsz?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Nem, köszönöm"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Értesíthetünk, ha sorra kerülsz, de a DuckDuckGo értesítései jelenleg le vannak tiltva."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Nem kell megosztanod a személyes adataid a várólistához való csatlakozáshoz. A sorban elfoglalt helyedet egy olyan időbélyegző igazolja, amely kizárólag az eszközödön található meg, így értesíteni tudunk, amikor sorra kerülsz."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Felkerültél a listára!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Letöltés elérhető"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Meghívót kaptál!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Kedvenc eltávolítva"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "%@ üzenete:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Próbáld ki a DuckDuckGo Windowsos verzióját!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "A letöltéshez látogass el erre a címre a windowsos eszközödön:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Nyisd meg a DuckDuckGo telepítőjét a Letöltésekben, válaszd a Telepítés lehetőséget, majd írd be a meghívókódot."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Készen állsz a DuckDuckGo Windowson való használatára?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "A Macre készült verziót keresed?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Szerezz korai hozzáférést a windowsos DuckDuckGo alkalmazáshoz."; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Értesítést küldünk, ha a DuckDuckGo Windowsos verziója letölthetővé válik a számodra. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "A DuckDuckGo windowsos verziójának kipróbálására szóló meghívód ide fog érkezni. Látogass vissza mielőbb, vagy küldhetünk értesítést, ha sorra kerülsz."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Értesítést küldünk, ha a DuckDuckGo windowsos verziója letölthetővé válik a számodra."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Privát böngészés windowsos alkalmazásunkkal"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Meghívót kaptál!\n\nKészen állsz a DuckDuckGo Windowson való használatára?1. lépés\nWindowsos eszközödön látogass el erre a címre a letöltéshez:\nhttps://duckduckgo.com/windows\n\n2. lépés\nNyisd meg a DuckDuckGo telepítőjét a Letöltésekben, válaszd a Telepítés lehetőséget, majd írd be a meghívókódot.\n\nMeghívókód: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Készen állsz a privát böngészésre a Windowson?\n\nSzámítógépen látogass el erre a címre a letöltéshez:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "A windowsos DuckDuckGo tartalmazza mindazt, ami a privát böngészéshez szükséges – támogatja a privát keresést, a nyomkövetők blokkolását, a kényszerített titkosítást és a felugró sütiablakok blokkolását, valamint további, a kategóriájában legjobb védelmet nyújtó megoldásokat kínál."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "DuckDuckGo alkalmazás Windowshoz"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Töltsd le a DuckDuckGo Windows verzióját!"; + diff --git a/DuckDuckGo/hu.lproj/Settings.strings b/DuckDuckGo/hu.lproj/Settings.strings index ecfed36441..e3b5199113 100644 --- a/DuckDuckGo/hu.lproj/Settings.strings +++ b/DuckDuckGo/hu.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Szövegméret"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Cím"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Alkalmazás indítása"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Nemzetközi adatvédelmi szabályozás (Global Privacy Control, GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Hozzáadás"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Kilépés az alkalmazásból 15 perc inaktivitás után"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Hosszú lenyomásos előnézetek"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Privát böngészés windowsos alkalmazásunkkal"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Adatvédelem engedélyezve minden weboldalhoz"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Visszajelzés megosztása"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Címsor elhelyezkedése"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Címsor elhelyezkedése"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "A DuckDuckGo kezelheti a sütik elfogadására szolgáló felugró ablakokat"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "A DuckDuckGóról"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Fel"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Továbbiak a DuckDuckGótól"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Szinkronizálás"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Privát böngészés Maces alkalmazásunkkal "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Címke"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "DuckDuckGo Windows alkalmazás"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Szövegméret"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Alkalmazás hozzáadása a dokkodhoz"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "DuckDuckGo asztali alkalmazás"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "DuckDuckGo Mac alkalmazás"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Új lap"; diff --git a/DuckDuckGo/it.lproj/Feedback.strings b/DuckDuckGo/it.lproj/Feedback.strings index ea4edf06b4..57876c9c21 100644 --- a/DuckDuckGo/it.lproj/Feedback.strings +++ b/DuckDuckGo/it.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Indietro"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Invia"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Invia"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Segnala sito danneggiato"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Causa del malfunzionamento del sito"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Condividi feedback"; diff --git a/DuckDuckGo/it.lproj/Localizable.strings b/DuckDuckGo/it.lproj/Localizable.strings index a6dd82d8cc..1e2ae9ab73 100644 --- a/DuckDuckGo/it.lproj/Localizable.strings +++ b/DuckDuckGo/it.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Modifica"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Condividi"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Parte inferiore"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Inizio"; + /* No comment provided by engineer. */ "addWidget.button" = "Aggiungi widget"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Sblocca DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Blocca i sistemi di tracciamento delle app sul tuo dispositivo"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Disattivato"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Attivato"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Attiva App Tracking Protection per bloccare fastidiosi sistemi di tracciamento in altre app."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "Oggi, App Tracking Protection ha bloccato "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " nelle tue app."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Proprio adesso"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Gestisci sistemi di tracciamento"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Cosa sta succede?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Invia"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Grazie! Il feedback è stato inviato."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Non adesso"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Segnala problema"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Ripristina i valori predefiniti"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Protezione dal tracciamento delle app"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Ultimo tentativo consentito alle %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Ultimo tentativo bloccato alle %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Accedi"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.example.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "L'operazione eliminerà il tuo segnalibro per \"%@\""; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Segnalibro eliminato"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Cancella"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Il video non è stato riprodotto"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Seleziona il problema dall'elenco..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "SELEZIONA UNA CATEGORIA"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Condividere maggiori dettagli può aiutarci a risolvere questo problema"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "DESCRIVI COSA È SUCCESSO"; +/* No comment provided by engineer. */ +"bucket: %@" = "bucket: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Ultimo mese"; @@ -554,7 +803,7 @@ "date.range.yesterday" = "Ieri"; /* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Gestione dei popup dei cookie"; +"dax.cookie-consent.button.accept" = "Gestisci popup dei cookie"; /* Button title rejecting to enable feature to automatically manage cookie popups */ "dax.cookie-consent.button.reject" = "No, grazie"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Nessuna corrispondenza trovata"; +/* No comment provided by engineer. */ +"Error" = "Errore"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Accedi"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Siamo spiacenti, accedi nuovamente per riattivare le funzioni di Email Protection su questo browser."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Errore di Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Apri Impostazioni"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Sembra che il tuo dispositivo abbia esaurito lo spazio di archiviazione. Liberane un po' per continuare."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Spazio di archiviazione insufficiente"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Chiudi l'app"; + +/* Alert message */ +"error.preemptive-crash.body" = "Sembra che si sia verificato un problema con l'app, pertanto, deve essere chiusa. Riaprila per continuare."; + +/* Alert title */ +"error.preemptive-crash.title" = "Rilevato un problema con l'app"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Preferito"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Schermata iniziale"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Aggiungi ai segnalibri"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo per Mac ti offre la velocità di cui hai bisogno, le funzioni di navigazione che desideri e i migliori strumenti per la privacy."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Apri il tuo invito"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo per Mac è adesso disponibile."; /* Title for the copy action */ "mac-waitlist.copy" = "Copia"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Sul tuo computer Windows, apri il browser web e vai su:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Sul tuo Mac, visita:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "La versione per Windows arriverà presto!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Cerchi la versione per Windows?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Naviga in privato con la nostra app per Mac"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo per Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "App desktop DuckDuckGo"; +"mac-waitlist.title" = "App DuckDuckGo per Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Menu di navigazione"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Modifica"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Cookie gestiti"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Impossibile trovare l'app necessaria per aprire il link"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Indica quale app del tuo dispositivo non funziona."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Per mantenere l'accesso degli utenti, i siti web si affidano ai cookie. Quando attivi la Protezione per un sito, i cookie non verranno cancellati e manterrai l'accesso, anche dopo aver usato il pulsante Proteggi (icona del fuoco). Continueremo a bloccare i tracker di terze parti che si trovano su siti web protetti."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Quale sito web è danneggiato?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "\"%@\" non potrà più accedere ai tuoi dati sincronizzati."; + /* Accessibility label on remove button */ "tab.close.home" = "Chiudi la scheda Home"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "L'audio viene elaborato sul dispositivo e non viene memorizzato né condiviso con altri utenti, nemmeno con DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Consenti notifiche"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Apri il tuo invito"; + +/* Title for the copy action */ +"waitlist.copy" = "Copia"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Codice invito"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Fase %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Hai ricevuto un invito!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Iscriviti alla lista d'attesa privata"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Iscrizione alla lista d'attesa..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Condividi link"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "INVIAMI UNA NOTIFICA"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Vuoi ricevere una notifica per sapere quando è il tuo turno?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "No, grazie"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Possiamo informarti non appena sarà il tuo turno, tuttavia le notifiche sono attualmente disabilitate per DuckDuckGo."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Per iscriverti alla lista d'attesa non dovrai comunicare alcuna informazione personale. Ti assicurerai un posto in fila con un timestamp presente esclusivamente sul tuo dispositivo, così potremo avvisarti quando sarà il tuo turno."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Sei in lista d'attesa."; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Download disponibile"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Hai ricevuto un invito!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Preferito rimosso"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Un messaggio da parte di %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Prova DuckDuckGo per Windows."; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Visita questo URL sul tuo dispositivo Windows per scaricarlo:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Apri l'installer DuckDuckGo in Download, seleziona Installa, quindi inserisci il tuo codice di invito."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Vuoi usare DuckDuckGo su Windows?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Cerchi la versione per Mac?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Ottieni l'accesso anticipato per provare DuckDuckGo per Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Ti invieremo una notifica quando la tua copia di DuckDuckGo per Windows sarà pronta per il download. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "L'invito a provare DuckDuckGo per Windows arriverà qui. Torna a trovarci a breve, oppure possiamo inviarti una notifica non appena sarà il tuo turno."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Ti invieremo una notifica quando la tua copia di DuckDuckGo per Windows sarà pronta per il download."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Naviga privatamente con la nostra app per Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Hai ricevuto un invito!\n\nVuoi usare DuckDuckGo su Windows?Passaggio 1 \n Visita questo URL sul tuo dispositivo Windows per effettuare il download:\n https://duckduckgo.com/windows\n\nPassaggio 2\nApri l'installer DuckDuckGo in Download, seleziona Installa, quindi inserisci il tuo codice di invito.\n\nCodice invito: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Vuoi iniziare a navigare su Windows mantenendo la tua privacy?\n\nVisita questo URL dal tuo computer per effettuare il download:\nhttps://duckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo per Windows ha ciò di cui hai bisogno per navigare con maggiore privacy: ricerca privata, blocco dei sistemi di tracciamento, crittografia forzata e blocco dei popup dei cookie, oltre a ulteriori protezioni di prima classe in arrivo."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "App DuckDuckGo per Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Scarica DuckDuckGo per Windows!"; + diff --git a/DuckDuckGo/it.lproj/Settings.strings b/DuckDuckGo/it.lproj/Settings.strings index e8ac6639a9..c50d0f31a9 100644 --- a/DuckDuckGo/it.lproj/Settings.strings +++ b/DuckDuckGo/it.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Dimensione testo"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Titolo"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Avvio dell'app"; @@ -62,7 +65,7 @@ "bIg-0T-UWq.text" = "Chiedi di rendere i siti web resistenti al fuoco al momento dell'accesso"; /* Class = "UINavigationItem"; title = "Manage Cookie Pop-ups"; ObjectID = "btj-ri-kRr"; */ -"btj-ri-kRr.title" = "Gestione dei popup dei cookie"; +"btj-ri-kRr.title" = "Gestione popup dei cookie"; /* Class = "UILabel"; text = "App Icon"; ObjectID = "cKo-er-HNj"; */ "cKo-er-HNj.text" = "Icona dell'app"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Global Privacy Control (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Aggiungi"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Uscita dall'app, inattività di 15 minuti"; @@ -143,7 +152,7 @@ "gji-Fs-EET.text" = "La privacy semplificata. "; /* Class = "UILabel"; text = "Manage Cookie Pop-ups"; ObjectID = "GRv-M2-Kx1"; */ -"GRv-M2-Kx1.text" = "Gestione dei popup dei cookie"; +"GRv-M2-Kx1.text" = "Gestisci popup dei cookie"; /* Class = "UINavigationItem"; title = "Theme"; ObjectID = "gS2-mg-l7R"; */ "gS2-mg-l7R.title" = "Tema"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Anteprime con pressione prolungata"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Naviga privatamente con la nostra app per Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Tutela della privacy attivata per tutti i siti"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Condividi feedback"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Posizione Barra degli indirizzi"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Posizione Barra degli indirizzi"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Consenti a DuckDuckGo di gestire i popup per il consenso ai cookie"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Info su DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Inizio"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Ulteriori informazioni su DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Sincronizzazione"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Naviga in privato con la nostra app per Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Etichetta"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "App Windows DuckDuckGo"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Dimensione testo"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Aggiungi app al tuo dock"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "App desktop DuckDuckGo"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "App Mac DuckDuckGo"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Nuova scheda"; diff --git a/DuckDuckGo/lt.lproj/Feedback.strings b/DuckDuckGo/lt.lproj/Feedback.strings index 15fd0596ba..018d11813a 100644 --- a/DuckDuckGo/lt.lproj/Feedback.strings +++ b/DuckDuckGo/lt.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Atgal"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Pateikti"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Pateikti"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Pranešti apie sugadintą svetainę"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Svetainės trikties priežastis"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Bendrinti atsiliepimą"; diff --git a/DuckDuckGo/lt.lproj/Localizable.strings b/DuckDuckGo/lt.lproj/Localizable.strings index d5a911be54..ae47ec960c 100644 --- a/DuckDuckGo/lt.lproj/Localizable.strings +++ b/DuckDuckGo/lt.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Redaguoti"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Bendrinti"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Apačia"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Viršus"; + /* No comment provided by engineer. */ "addWidget.button" = "Pridėti valdiklį"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Atrakinti „DuckDuckGo“."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Blokuokite programėlių stebėjimo priemones savo įrenginyje"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Išjungta"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Įjungta"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Įjunkite apsaugą nuo programėlių sekimo, kad galėtume blokuoti įkyrius sekiklius kitose programėlėse."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "Apsauga nuo programėlių sekimo užblokuota "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " jūsų programėlėse."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Ką tik"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Tvarkyti sekiklius"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Kas vyksta?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Pateikti"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Dėkojame! Atsiliepimas pateiktas."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Ne dabar"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Pranešti apie problemą"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Atkurti numatytąsias reikšmes"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Programų sekimo apsauga"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Paskutinis bandymas leistas %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Paskutinis bandymas užblokuotas %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Prisijungti"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.example.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Tai ištrins jūsų žymę „%@“"; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Žymė ištrinta"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Trinti"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Vaizdo įrašas nepaleistas"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Pasirinkite problemą iš sąrašo..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "PASIRINKITE KATEGORIJĄ"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Jei pasidalinsime daugiau informacijos, galime padėti išspręsti šią problemą"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "APRAŠYKITE, KAS ATSITIKO"; +/* No comment provided by engineer. */ +"bucket: %@" = "talpykla: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Praėjęs mėnuo"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Atitikmenų nerasta"; +/* No comment provided by engineer. */ +"Error" = "Klaida"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Prisijungti"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Atsiprašome, dar kartą prisijunkite, kad šioje naršyklėje vėl įjungtumėte „Email Protection“ funkcijas."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "„Email Protection“ klaida"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Atidaryti Nustatymus"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Panašu, kad įrenginyje nebėra laisvos vietos. Jei norite tęsti, atlaisvinkite vietos."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Nepakanka vietos"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Uždaryti programėlę"; + +/* Alert message */ +"error.preemptive-crash.body" = "Atrodo, kad yra programėlės problema ir ją reikia uždaryti. Norėdami tęsti, atidarykite iš naujo."; + +/* Alert title */ +"error.preemptive-crash.title" = "Aptikta programėlės problema"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Mėgstamas"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Pagrindinis"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Pridėti žymę"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "„Mac“ skirta „DuckDuckGo“ pasižymi jums reikiama sparta, naršymo funkcijomis ir aukščiausios klasės privatumo įrankiais."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Atidaryti pakvietimą"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "„DuckDuckGo for Mac“ paruošta!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopijuoti"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "„Windows“ kompiuteryje eikite į:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "„Mac“ kompiuteryje eikite į:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "„Windows“ jau greitai!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Ieškote „Windows“ versijos?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Naršykite privačiai su mūsų „Mac“ skirta programa"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "„Mac“ skirta „DuckDuckGo“"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "„DuckDuckGo“ darbalaukio programa"; +"mac-waitlist.title" = "„DuckDuckGo“ programa, skirta „Mac“"; /* No comment provided by engineer. */ "menu.button.hint" = "Naršymo meniu"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Redaguoti"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "GERAI"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Slapukai valdomi"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Negalima rasti programos, galinčios atidaryti šią nuorodą"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Įveskite, kuri programa jūsų įrenginyje sugedusi."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Svetainės pagrįstos slapukais, kad liktumėte prisijungę. Apsaugojus svetainę, slapukai nėra ištrinami ir liksite prisijungę net paspaudę apsaugojimo mygtuką. Vis tiek blokuosime trečiųjų šalių stebėjimo priemones, randamas svetainėse, kuriose pasinaudosite parinktimi „Fireproof“."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Kuri svetainė neveikia?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "„%@“ nebegalės pasiekti jūsų sinchronizuotų duomenų."; + /* Accessibility label on remove button */ "tab.close.home" = "Uždaryti pagrindinio puslapio skirtuką"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Garsas apdorojamas įrenginyje. Jis nesaugomas ir su niekuo, įskaitant „DuckDuckGo“, nebendrinamas."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Leisti pranešimus"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Atidaryti pakvietimą"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopijuoti"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Pakvietimo kodas"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "%d veiksmas"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Esate pakviesti!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Prisijungti prie privataus laukimo sąrašo"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Prisijungiama prie laukimo sąrašo..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Bendrinti nuorodą"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "INFORMUOTI"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Ar norite gauti pranešimą, kai ateis jūsų eilė?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Ne, dėkoju"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Galime jus informuoti, kai bus jūsų eilė, tačiau šiuo metu pranešimai yra išjungti „DuckDuckGo“."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Jums nereikia dalintis savo asmenine informacija, kad prisijungtumėte prie laukimo sąrašo. Užsitikrinsite vietą eilėje laiko žyma, kuri egzistuoja tik jūsų įrenginyje, kad galėtume jus įspėti, kai ateis jūsų eilė."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Esate sąraše!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Galima atsisiųsti"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Esate pakviesti!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Mėgstamas pašalintas"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Pranešimas iš %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Išbandykite „DuckDuckGo“, skirtą „Windows“!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Jei norite atsisiųsti, apsilankykite šiuo URL adresu „Windows“ įrenginyje:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Atsidarykite „DuckDuckGo“ diegimo programą atsisiuntimų skiltyje, pasirinkite „Įdiegti“ ir įveskite pakvietimo kodą."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Pasiruošę naudoti „DuckDuckGo“ sistemoje „Windows“?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Ieškote „Mac“ versijos?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Gaukite ankstyvą prieigą ir išbandykite „DuckDuckGo“, skirtą „Windows“!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Atsiųsime jums pranešimą, kai jūsų „DuckDuckGo“, skirta „Windows“, kopija bus paruošta atsisiųsti. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Pakvietimą išbandyti „Mac“ skirtą „DuckDuckGo“ matysite čia. Netrukus patikrinkite arba galime jums atsiųsti pranešimą, kai bus jūsų eilė."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Atsiųsime jums pranešimą, kai jūsų „DuckDuckGo“, skirta „Windows“, kopija bus paruošta atsisiųsti."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Naršykite privačiai naudodami mūsų programą, skirtą „Windows“"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Esate pakviesti!\n\nPasiruošę naudoti „DuckDuckGo“ sistemoje „Windows“?\n\n1 veiksmas\nNorėdami atsisiųsti, „Windows“ įrenginyje apsilankykite šiuo URL adresu:\nhttps://duckduckgo.com/windows\n\n2 veiksmas
Atsidarykite „DuckDuckGo“ diegimo programą atsisiuntimų skiltyje, pasirinkite „Įdiegti“ ir įveskite pakvietimo kodą.

Pakvietimo kodas: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Pasiruošę pradėti privačiai naršyti „Windows“?\n\nApsilankykite šiame URL savo kompiuteryje, kad atsisiųstumėte:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "„Windows“ skirta „DuckDuckGo“ turi viską, ko reikia norint naršyti dar privačiau – privačią paiešką, stebėjimo priemonių blokavimą, priverstinį šifravimą ir iššokančiųjų slapukų langų blokavimą bei dar daugiau geriausių savo klasėje apsaugos priemonių."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "„DuckDuckGo“ programa, skirta „Windows“"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Gaukite „DuckDuckGo“, skirtą „Windows“!"; + diff --git a/DuckDuckGo/lt.lproj/Settings.strings b/DuckDuckGo/lt.lproj/Settings.strings index d35e9b3a23..c5ccd972b3 100644 --- a/DuckDuckGo/lt.lproj/Settings.strings +++ b/DuckDuckGo/lt.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Teksto dydis"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Pavadinimas"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Programos paleidimas"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Visuotinė privatumo kontrolė (VPK)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Papildyti"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Išeinant iš programos, po 15 min. neveikimo"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Peržiūros ilgai spaudžiant"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Naršykite privačiai naudodami mūsų programą, skirtą „Windows“"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Privatumo apsauga įjungta visose svetainėse"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Bendrinti atsiliepimą"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Adreso juostos padėtis"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Adreso juostos padėtis"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Leiskite „DuckDuckGo“ valdyti sutikimo su slapukais iššokančiuosius langus"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Apie DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Viršus"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Daugiau iš „DuckDuckGo“"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Sinchronizuoti"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Naršykite privačiai su mūsų „Mac“ skirta programa "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Etiketė"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "„DuckDuckGo“ programa „Windows“"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Teksto dydis"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Įtraukti programėlę į stotelę"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "„DuckDuckGo“ darbalaukio programa"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "„DuckDuckGo“ programa „Mac“"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Nauja kortelė"; diff --git a/DuckDuckGo/lv.lproj/Feedback.strings b/DuckDuckGo/lv.lproj/Feedback.strings index 4cfd3647ff..b497d9cf11 100644 --- a/DuckDuckGo/lv.lproj/Feedback.strings +++ b/DuckDuckGo/lv.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Atpakaļ"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Iesniegt"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Iesniegt"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Ziņot par bojātu vietni"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Vietnes bojājuma iemesls"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Kopīgot atsauksmi"; diff --git a/DuckDuckGo/lv.lproj/Localizable.strings b/DuckDuckGo/lv.lproj/Localizable.strings index b5f3dbfa2e..316b9add21 100644 --- a/DuckDuckGo/lv.lproj/Localizable.strings +++ b/DuckDuckGo/lv.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Rediģēt"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Kopīgot"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Apakšā"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Populārākie"; + /* No comment provided by engineer. */ "addWidget.button" = "Pievienot logrīku"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Atbloķēt DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Lietotņu izsekotāju bloķēšana ierīcē"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Atspējota"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Iespējota"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Iespējo lietotņu izsekošanas aizsardzību, lai mēs varētu bloķēt nepatīkamos izsekotājus citās lietotnēs."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "Lietotņu pretizsekošanas aizsardzība bloķējusi "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " tavās lietotnēs šodien."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Tikko"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Pārvaldīt izsekotājus"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Kas notiek?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Iesniegt"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Paldies! Atsauksme ir iesniegta."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Ne tagad"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Ziņot par problēmu"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Atjaunot noklusējuma iestatījumus"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Lietotņu pretizsekošanas aizsardzība"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Pēdējais atļautais mēģinājums %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Pēdējais bloķētais mēģinājums % @"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Pierakstīties"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.piemērs.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Tādējādi tiks izdzēsta tava \"%@\" grāmatzīme"; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Grāmatzīme izdzēsta"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Dzēst"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Video netika demonstrēts"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Norādi problēmu sarakstā..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "ATLASĪT KATEGORIJU"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Sīkākas informācijas sniegšana var mums palīdzēt atrisināt šo problēmu"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "APRAKSTI NOTIKUŠO"; +/* No comment provided by engineer. */ +"bucket: %@" = "bucket: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Iepriekšējais mēnesis"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Sakritības nav atrastas"; +/* No comment provided by engineer. */ +"Error" = "Kļūda"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Pierakstīties"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Lūdzu, pieraksties vēlreiz, lai šajā pārlūkprogrammā no jauna iespējotu Email Protection funkcijas."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Email Protection kļūda"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Atvērt iestatījumus"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Šķiet, ka ierīcē ir beigusies brīvā vieta. Lūdzu, atbrīvo vietu, lai turpinātu."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Nepietiek vietas"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Aizvērt lietotni"; + +/* Alert message */ +"error.preemptive-crash.body" = "Izskatās, ka ar lietotni ir problēmas un tā ir jāaizver. Lūdzu, atver no jauna, lai turpinātu."; + +/* Alert title */ +"error.preemptive-crash.title" = "Konstatēta lietotnes problēma"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Izlase"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Sākums"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Pievienot grāmatzīmi"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo Mac datoram sniedz nepieciešamo ātrumu, ierastās pārlūkošanas funkcijas un savā klasē labākās privātuma pamatfunkcijas."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Atver savu ielūgumu"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo Mac datoram ir gatavs!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopēt"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Savā Windows datorā dodies uz:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Savā Mac datorā dodies uz:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Windows drīzumā!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Vai meklē Windows versiju?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Pārlūko privāti, izmantojot mūsu Mac lietotni"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo Mac datoram"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "DuckDuckGo darbvirsmas lietotne"; +"mac-waitlist.title" = "DuckDuckGo lietotne Mac datoram"; /* No comment provided by engineer. */ "menu.button.hint" = "Pārlūkošanas izvēlne"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Rediģēt"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "Labi"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Pārvaldītie sīkfaili"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Nevar atrast lietotni, kas nepieciešama šīs saites atvēršanai"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Lūdzu, norādi, kurai lietotnei tavā ierīcē ir traucējumi."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Vietnes lieto sīkfailus, lai tu varētu turpināt būt pierakstījies(-usies). Padarot vietni ugunsdrošu, sīkfaili netiek dzēsti, bet tu vari turpināt būt pierakstījies(-usies) arī pēc Uguns pogas lietošanas. Mēs joprojām bloķēsim trešo pušu izsekotājus, kas atrodami ugunsdrošās vietnēs."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Kura vietne ir bojāta?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "\"%@\" vairs nevarēs piekļūt taviem sinhronizētajiem datiem."; + /* Accessibility label on remove button */ "tab.close.home" = "Aizvērt sākuma cilni"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Audio tiek apstrādāts ierīcē. Tas netiek glabāts, un tam nevar piekļūt neviens, pat ne DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Atļaut paziņojumus"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Atver savu ielūgumu"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopēt"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Uzaicinājuma kods"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "%d. solis"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Tu esi uzaicināts!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Pievienojies privātajam nogaides sarakstam"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Notiek pievienošanās gaidīšanas sarakstam..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Kopīgot saiti"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "INFORMĒT MANI"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Vai saņemt paziņojumu, kad pienāks tava kārta?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Nē, paldies"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Mēs varam tev paziņot, kad būs pienākusi tava kārta, taču pašlaik DuckDuckGo paziņojumi ir atspējoti."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Lai pievienotos gaidīšanas sarakstam, tev nav jādalās ar personisku informāciju. Tu ieņemsi vietu rindā, izmantojot laikspiedolu, kas pastāv tikai tavā ierīcē, lai mēs varētu tevi informēt, kad pienāks tava kārta."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Tu esi sarakstā!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Pieejama lejupielāde"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Tu esi uzaicināts!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Izlase ir noņemta"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Ziņojums no %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Iegūsti DuckDuckGo operētājsistēmai Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Apmeklē šo URL savā Windows ierīcē, lai lejupielādētu:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Atver DuckDuckGo instalētāju lejupielāžu sadaļā, pēc tam ievadi uzaicinājuma kodu."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Vai esat gatavs lietot DuckDuckGo operētājsistēmā Windows?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Vai meklē Mac versiju?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Iegūsti agrīnu piekļuvi, lai izmēģinātu DuckDuckGo operētājsistēmai Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Mēs nosūtīsim tev paziņojumu, kad tavs DuckDuckGo Mac datoram būs gatavs lejupielādei. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Tavs uzaicinājums izmēģināt DuckDuckGo Mac datoram parādīsies šeit. Drīzumā pārbaudi vēlreiz, vai arī mēs varam tev nosūtīt paziņojumu, kad pienāks tava kārta."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Mēs nosūtīsim tev paziņojumu, kad tavs DuckDuckGo operētājsistēmai Windows būs gatavs lejupielādei."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Pārlūko privāti ar mūsu Windows lietotni"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Tu esi uzaicināts!\n\nVai esi gatavs lietot DuckDuckGo operētājsistēmā Windows?\n\n1. solis\nApmeklē šo URL savā Windows ierīcē, lai lejupielādētu:\nhttps://duckduckgo.com/windows\n\n2. solis\nAtver DuckDuckGo instalētāju lejupielāžu sadaļā, izvēlies Instalēt un ievadi uzaicinājuma kodu.\n\nUzaicinājuma kods: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Vai esi gatavs sākt privātu pārlūkošanu operētājsistēmā Windows?\n\nApmeklē šo URL savā datorā, lai lejupielādētu:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo operētājsistēmai Windows sniedz visu, kas nepieciešams, lai pārlūkotu ar lielāku konfidencialitāti – privātu meklēšanu, izsekošanas bloķēšanu, piespiedu šifrēšanu un sīkfailu uznirstošo logu bloķēšanu, kā arī citas savā klasē labākās aizsardzības iespējas."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "DuckDuckGo lietotne operētājsistēmai Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Iegūsti DuckDuckGo operētājsistēmai Windows!"; + diff --git a/DuckDuckGo/lv.lproj/Settings.strings b/DuckDuckGo/lv.lproj/Settings.strings index 7f5e71f7bb..1cb5ae932d 100644 --- a/DuckDuckGo/lv.lproj/Settings.strings +++ b/DuckDuckGo/lv.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Burtu izmērs"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Nosaukums"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Lietotnes palaišana"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Globālā privātuma kontrole (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Pievienot"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Iziešana no lietotnes, neaktīva 15 minūtes"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Ilgas nospiešanas rezultātu priekšskatījumi"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Pārlūko privāti ar mūsu Windows lietotni"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Privātuma aizsardzība ir iespējota visām vietnēm"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Kopīgot atsauksmes"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Adreses joslas pozīcija"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Adreses joslas pozīcija"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Ļaut DuckDuckGo pārvaldīt sīkfailu piekrišanas uznirstošos logus"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Par DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Populārākie"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Vairāk no DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Sinhronizēt"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Pārlūko privāti, izmantojot mūsu Mac lietotni "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Etiķete"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "DuckDuckGo Windows lietotne"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Burtu izmērs"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Pievienot lietotni dokam"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "DuckDuckGo darbvirsmas lietotne"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "DuckDuckGo Mac lietotne"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Jauna cilne"; diff --git a/DuckDuckGo/nb.lproj/Feedback.strings b/DuckDuckGo/nb.lproj/Feedback.strings index ee08d1d2bb..20b8629dd4 100644 --- a/DuckDuckGo/nb.lproj/Feedback.strings +++ b/DuckDuckGo/nb.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Tilbake"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Send"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Send"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Rapporter nettstedfeil"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Årsak til nettstedfeil"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Del tilbakemelding"; diff --git a/DuckDuckGo/nb.lproj/Localizable.strings b/DuckDuckGo/nb.lproj/Localizable.strings index 38521571c3..a55a73dea3 100644 --- a/DuckDuckGo/nb.lproj/Localizable.strings +++ b/DuckDuckGo/nb.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Rediger"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Del"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Nederst"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Topp"; + /* No comment provided by engineer. */ "addWidget.button" = "Legg til widget"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Lås opp DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Blokker appsporere på enheten din"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Deaktivert"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Aktivert"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Aktiver App Tracking Protection, slik at vi kan blokkere lumske sporere i andre apper."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "App Tracking Protection blokkerte "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " i appene dine i dag."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Akkurat nå"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Administrer sporere"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Hva er det som skjer?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Send"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Takk! Tilbakemeldingen er sendt."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Ikke nå"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Rapporter problem"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Gjenopprett standardinnstillinger"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Beskyttelse mot appsporing"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Siste tillatte forsøk: %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Siste blokkerte forsøk: %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Logg inn"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.example.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Dette vil slette bokmerket for \"%@\""; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Bokmerket er slettet"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Slett"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Video ble ikke avspilt"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Velg problemet ditt fra listen …"; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "VELG EN KATEGORI"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Hvis du gir oss flere detaljer, kan det hjelpe oss å løse dette problemet"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "BESKRIV HVA SOM SKJEDDE"; +/* No comment provided by engineer. */ +"bucket: %@" = "bucket: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Foregående måned"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Ingen match ble funnet"; +/* No comment provided by engineer. */ +"Error" = "Feil"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Logg inn"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Beklager, du må logge på igjen for å aktivere Email Protection-funksjoner på denne nettleseren på nytt."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Feil ved Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Åpne innstillingene"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Det ser ut til at enheten din ikke har mer lagringsplass igjen. Frigjør plass for å fortsette."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Ikke nok lagringsplass"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Lukk appen"; + +/* Alert message */ +"error.preemptive-crash.body" = "Det har oppstått et problem med appen, så den må lukkes. Åpne på nytt for å fortsette."; + +/* Alert title */ +"error.preemptive-crash.title" = "Problem med appen er oppdaget"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Favoritt"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Hjem"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Legg til bokmerke"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo for Mac har hastigheten du trenger, nettleserfunksjonene du forventer, og er stappfull av våre førsteklasses personvernfunksjoner."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Åpne invitasjonen din"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo for Mac er klar!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopier"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "På en Windows-datamaskin går du til:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "På Mac går du til:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Windows kommer snart!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Ser du etter Windows-versjonen?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Surf privat med vår app for Mac"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo for Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "DuckDuckGo skrivebordsapp"; +"mac-waitlist.title" = "DuckDuckGo-app for Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Alternativer"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Rediger"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Informasjonskapsler administrert"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Appen som kreves for å åpne koblingen ble ikke funnet"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Angi hvilken app på enheten din som ikke virker som den skal."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Nettsider anvender informasjonskapsler for å holde deg innlogget. Når du gjør en side brannsikker, slettes ikke informasjonskapslene, og du forblir innlogget, selv etter å ha brukt brannknappen. Vi blokkerer fortsatt tredjeparters sporingsanordninger som blir funnet på Brannsikre nettsteder."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Hvilket nettsted fungerer ikke?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "\"%@\" vil ikke lenger ha tilgang til dine synkroniserte data."; + /* Accessibility label on remove button */ "tab.close.home" = "Lukk hjem-fane"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Lyd behandles på enheten. Den lagres ikke og deles ikke med noen, heller ikke med DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Tillat varsler"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Åpne invitasjonen din"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopier"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Invitasjonskode"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Trinn %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Du er invitert!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Sett deg på den private ventelisten"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Setter deg på ventelisten…"; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Del lenke"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "VARSLE MEG"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Skal vi varsle deg når det er din tur?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Nei takk"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Vi kan varsle deg når det er din tur, men varsler er for øyeblikket deaktivert for DuckDuckGo."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Du behøver ikke å dele noen personopplysninger for å sette deg på ventelisten. Du sikrer plassen din i køen med et tidsstempel som kun eksisterer på enheten din, så vi kan varsle deg når det er din tur."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Du står på listen!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Nedlasting tilgjengelig"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Du er invitert!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Favoritt er fjernet"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "En melding fra %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Prøv DuckDuckGo for Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Besøk denne URL-adressen på Windows-enheten din for å laste ned:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Åpne DuckDuckGo-installasjonsprogrammet i Nedlastinger, velg Installer og angi deretter invitasjonskoden."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Klar for å bruke DuckDuckGo i Windows?\n\n"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Ser du etter Mac-versjonen?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Få tidlig tilgang til å prøve DuckDuckGo for Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Vi sender deg et varsel når din utgave av DuckDuckGo for Windows er klar til nedlasting. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Invitasjonen din til å prøve DuckDuckGo for Mac kommer hit. Kom tilbake snart, eller vi kan sende deg et varsel når det er din tur."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Vi sender deg et varsel når du kan laste ned DuckDuckGo for Windows."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Surf privat med vår app for Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Du er invitert!\n\nKlar for å bruke DuckDuckGo i Windows?\n\nTrinn 1\nBesøk denne URL-adressen på Windows-enheten din for å laste ned:\nhttps://duckduckgo.com/windows\n\nTrinn 2\nÅpne DuckDuckGo-installasjonsprogrammet i Nedlastinger, velg Installer og angi deretter invitasjonskoden.\n\nInvitasjonskode: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Klar for å begynne å surfe privat i Windows?\n\nfBesøk denne URL-adressen på datamaskinen din for å laste ned:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo for Windows har det du trenger for å surfe med mer personvern – privat søk, sporingsblokkering, tvungen kryptering, blokkering av popup-vinduer om informasjonskapsler og enda flere førsteklasses beskyttelser som er på vei."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "DuckDuckGo-app for Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Skaff deg DuckDuckGo for Windows!"; + diff --git a/DuckDuckGo/nb.lproj/Settings.strings b/DuckDuckGo/nb.lproj/Settings.strings index d3b39adacc..bbd8470e81 100644 --- a/DuckDuckGo/nb.lproj/Settings.strings +++ b/DuckDuckGo/nb.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Tekststørrelse"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Tittel"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Appoversikt"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Global Privacy Control (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Legg til"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "når appen lukkes eller har vært inaktiv i 15 minutter"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Forhåndsvisning ved å trykke og holde"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Surf privat med vår app for Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Personvernbeskyttelse aktivert for alle nettsteder"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Del tilbakemelding"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Plassering av adressefelt"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Plassering av adressefelt"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "La DuckDuckGo administrere popup-vinduer om samtykke til informasjonskapsler"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Om DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Topp"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Mer fra DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Synkr."; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Surf privat med vår app for Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Etikett"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "DuckDuckGo Windows-app"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Tekststørrelse"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Legg til appen i docken"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "DuckDuckGo skrivebordsapp"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "DuckDuckGo Mac-app"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Ny fane"; diff --git a/DuckDuckGo/nl.lproj/Feedback.strings b/DuckDuckGo/nl.lproj/Feedback.strings index 435ff9f481..0aa9568bb8 100644 --- a/DuckDuckGo/nl.lproj/Feedback.strings +++ b/DuckDuckGo/nl.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Terug"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Verzenden"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Verzenden"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Defecte website melden"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Reden voor defecte website"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Feedback delen"; diff --git a/DuckDuckGo/nl.lproj/Localizable.strings b/DuckDuckGo/nl.lproj/Localizable.strings index 6c18ca909d..dac9c0410d 100644 --- a/DuckDuckGo/nl.lproj/Localizable.strings +++ b/DuckDuckGo/nl.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Bewerken"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Delen"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Onderkant"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Boven"; + /* No comment provided by engineer. */ "addWidget.button" = "Widget toevoegen"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "DuckDuckGo ontgrendelen."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "App trackers blokkeren op je apparaat"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Uitgeschakeld"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Ingeschakeld"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Schakel App Tracking Protection in zodat we vervelende trackers in andere apps kunnen blokkeren."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "App Tracking Protection heeft vandaag "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " in je apps geblokkeerd."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Zojuist"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Trackers beheren"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Wat gebeurt er?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Verzenden"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Dank je wel! Feedback verzonden."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Niet nu"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Probleem melden"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Standaardinstellingen herstellen"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Bescherming tegen app-tracking"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Laatste poging toegestaan %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Laatste poging geblokkeerd %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Aanmelden"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.voorbeeld.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Hiermee wordt je bladwijzer voor \"%@\" verwijderd"; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Bladwijzer verwijderd"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Verwijderen"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Video werd niet afgespeeld"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Kies je probleem in de lijst ..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "SELECTEER EEN CATEGORIE"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Deel meer details om ons te helpen dit probleem op te lossen"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "BESCHRIJF WAT ER IS GEBEURD"; +/* No comment provided by engineer. */ +"bucket: %@" = "bucket: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Afgelopen maand"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Geen overeenkomsten gevonden"; +/* No comment provided by engineer. */ +"Error" = "Fout"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Aanmelden"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Sorry, meld je opnieuw aan om de functies voor e-mailbeveiliging in deze browser weer in te schakelen."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Fout in Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Open Instellingen"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Het lijkt erop dat je apparaat geen opslagruimte meer heeft. Maak ruimte vrij om door te gaan."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Niet genoeg opslagruimte"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "App sluiten"; + +/* Alert message */ +"error.preemptive-crash.body" = "Het lijkt erop dat er een probleem is met de app en dat deze moet worden gesloten. Open de app opnieuw om door te gaan."; + +/* Alert title */ +"error.preemptive-crash.title" = "Probleem met app gedetecteerd"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Favoriet"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Home"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Bladwijzer toevoegen"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo voor Mac heeft de snelheid die je nodig hebt en de browsefuncties die je verwacht, en zit boordevol met onze allerbeste privacy essentials."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Open je uitnodiging"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo voor Mac staat klaar!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopiëren"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Ga op je Windows-computer naar:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Ga op je Mac naar:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Binnenkort ook beschikbaar voor Windows!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Op zoek naar de versie voor Windows?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Browse privé met onze app voor Mac"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo voor Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "DuckDuckGo-bureaubladapp"; +"mac-waitlist.title" = "DuckDuckGo-app voor Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Optiemenu"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Bewerken"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Beheerde cookies"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "De app die nodig is om die link te openen, is niet gevonden"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Voer in welke app op je apparaat niet meer werkt."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Websites gebruiken cookies om te zorgen dat je ingelogd blijft. Als je een site brandveilig maakt, worden de cookies niet gewist en blijf je ingelogd, zelfs nadat je de vuurknop hebt gebruikt. Trackers van derden worden ook op brandveilige websites geblokkeerd."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Welke website is defect?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "'%@' heeft geen toegang meer tot je gesynchroniseerde gegevens."; + /* Accessibility label on remove button */ "tab.close.home" = "Starttabblad sluiten"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Audio wordt op het apparaat verwerkt. Het wordt niet opgeslagen of met iemand gedeeld, ook niet met DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Meldingen toestaan"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Open je uitnodiging"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopiëren"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Uitnodigingscode"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Stap %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Je bent uitgenodigd!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Schrijf je in voor de privéwachtlijst"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Deelnemen aan wachtlijst ..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Link delen"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "MELDING STUREN"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Een melding krijgen als je aan de beurt bent?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Nee, bedankt"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "We kunnen je informeren wanneer je aan de beurt bent, maar meldingen zijn momenteel uitgeschakeld voor DuckDuckGo."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Je hoeft geen persoonsgegevens te delen om op de wachtlijst te komen. Je stelt je plaats veilig met een tijdstempel die alleen op jouw apparaat bestaat. Zo kunnen we je informeren wanneer je aan de beurt bent."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Je staat op de lijst!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Download beschikbaar"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Je bent uitgenodigd!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Favoriet verwijderd"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Een bericht van %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Probeer DuckDuckGo voor Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Bezoek deze URL op je Windows-apparaat om te downloaden:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Open de DuckDuckGo Installer in Downloads, selecteer Installeren en voer vervolgens je uitnodigingscode in."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Klaar om DuckDuckGo op Windows te gebruiken?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Op zoek naar de versie voor Mac?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Krijg vroege toegang om DuckDuckGo voor Windows uit te proberen!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "We sturen je een melding wanneer je DuckDuckGo voor Windows kunt downloaden. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Je vindt hier je uitnodiging om DuckDuckGo voor Windows te proberen. Kom binnenkort terug, of ontvang een melding wanneer jij aan de beurt bent."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "We sturen je een melding wanneer je DuckDuckGo voor Windows kunt downloaden."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Browse privé met onze app voor Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Je bent uitgenodigd!\n\nKlaar om DuckDuckGo op Windows te gebruiken?Stap 1\nBezoek deze URL op je Windows-apparaat om te downloaden:\nhttps://duckduckgo.com/windows\n\nStap 2\nOpen de DuckDuckGo Installer in Downloads, selecteer Installeren en voer vervolgens je uitnodigingscode in.\n\nUitnodigingscode: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Klaar om privé te browsen in Windows?\n\nBezoek deze URL op je computer om te downloaden:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo voor Windows heeft alles wat je nodig hebt om met meer privacy te browsen: privézoekopdrachten, blokkering van trackers, geforceerde versleuteling, blokkering van cookiepop-ups, plus nog meer uitstekende bescherming onderweg."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "DuckDuckGo-app voor Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Download DuckDuckGo voor Windows!"; + diff --git a/DuckDuckGo/nl.lproj/Settings.strings b/DuckDuckGo/nl.lproj/Settings.strings index 74dbff7fd0..96c60260cb 100644 --- a/DuckDuckGo/nl.lproj/Settings.strings +++ b/DuckDuckGo/nl.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Lettergrootte"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Titel"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Starten van app"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Global Privacy Control (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Toevoegen"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "App afsluiten, 15 minuten inactief"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Voorbeeldweergave bij lang indrukken"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Browse privé met onze app voor Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Privacybescherming ingeschakeld voor alle sites"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Feedback delen"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Positie van adresbalk"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Positie van adresbalk"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Laat DuckDuckGo pop-ups voor cookietoestemming beheren"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Over DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Boven"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Meer over DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Synchroniseren"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Browse privé met onze app voor Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Label"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "DuckDuckGo-app voor Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Lettergrootte"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "App toevoegen aan je dock"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "DuckDuckGo-bureaubladapp"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "DuckDuckGo-app voor Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Nieuw tabblad"; diff --git a/DuckDuckGo/pl.lproj/Feedback.strings b/DuckDuckGo/pl.lproj/Feedback.strings index 8c3b3f913a..020beeb122 100644 --- a/DuckDuckGo/pl.lproj/Feedback.strings +++ b/DuckDuckGo/pl.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Wstecz"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Prześlij"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Prześlij"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Zgłoś uszkodzoną witrynę"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Przyczyna uszkodzenia witryny"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Podziel się opinią"; diff --git a/DuckDuckGo/pl.lproj/Localizable.strings b/DuckDuckGo/pl.lproj/Localizable.strings index e1c239da53..29726b7113 100644 --- a/DuckDuckGo/pl.lproj/Localizable.strings +++ b/DuckDuckGo/pl.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Edytuj"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Udostępnij"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Dół"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Do góry"; + /* No comment provided by engineer. */ "addWidget.button" = "Dodaj widżet"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Odblokuj DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Blokowanie skryptów śledzących aplikacji na urządzeniu"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Wyłączone"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Włączone"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Włącz ochronę przed śledzeniem w aplikacjach, aby zablokować natrętne mechanizmy śledzące w innych aplikacjach."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "Ochrona przed śledzeniem w aplikacji zablokowana "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " w Twoich aplikacjach dzisiaj."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Teraz"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Zarządzaj mechanizmami śledzącymi"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Co się dzieje?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Prześlij"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Dziękujemy! Informacje zostały przekazane."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Nie teraz"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Zgłoś błąd"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Przywróć ustawienia domyślne"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Ochrona przed śledzeniem przez aplikacje"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Ostatnia dopuszczona próba: %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Ostatnia zablokowana próba: % @"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Zaloguj się"; @@ -281,7 +509,7 @@ "autofill.logins.empty-view.subtitle" = "Dane logowania są bezpiecznie przechowywane na Twoim urządzeniu."; /* Title for view displayed when autofill has no items */ -"autofill.logins.empty-view.title" = "Nie zapisano jeszcze żadnych loginów."; +"autofill.logins.empty-view.title" = "Nie zapisano jeszcze żadnych loginów"; /* Cancel button for auth when opening login list */ "autofill.logins.list.auth.cancel" = "Anuluj"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.domena.pl"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Spowoduje to usunięcie zakładki „%@”"; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Usunięto zakładkę"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Usuń"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Film nie został odtworzony"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Wybierz problem z listy..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "WYBIERZ KATEGORIĘ"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Udostępnienie szczegółowych informacji może pomóc nam rozwiązać ten problem"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "OPISZ, CO SIĘ STAŁO"; +/* No comment provided by engineer. */ +"bucket: %@" = "Zbiór: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Ostatni miesiąc"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Brak pasujących wyników"; +/* No comment provided by engineer. */ +"Error" = "Błąd"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Zaloguj się"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Zaloguj się jeszcze raz, aby ponownie włączyć funkcje ochrony poczty Email Protection w tej przeglądarce."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Błąd ochrony poczty Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Otwórz ustawienia"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Wygląda na to, że na urządzeniu zabrakło miejsca. Zwolnij miejsce, aby kontynuować."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Za mało miejsca"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Zamknij aplikację"; + +/* Alert message */ +"error.preemptive-crash.body" = "Wygląda na to, że wystąpił problem z aplikacją i musi zostać zamknięta. Aby kontynuować, otwórz ją ponownie."; + +/* Alert title */ +"error.preemptive-crash.title" = "Wykryto błąd aplikacji"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Ulubione"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Strona główna"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Dodaj zakładkę"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "Aplikacja DuckDuckGo dla komputerów Mac zapewnia szybkość, której potrzebujesz, i niezbędne funkcje przeglądania. Ponadto jest wyposażona w najlepsze w swojej klasie narzędzia do ochrony prywatności."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Otwórz zaproszenie"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "Przeglądarka DuckDuckGo dla komputerów Mac jest gotowa!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopiuj"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Na komputerze z systemem Windows przejdź do:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Na komputerze Mac przejdź do:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Już wkrótce!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Szukasz wersji dla systemu Windows?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Przeglądaj prywatnie za pomocą aplikacji dla komputerów Mac"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo na komputery Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "Aplikacja komputerowa DuckDuckGo"; +"mac-waitlist.title" = "Aplikacja DuckDuckGo dla komputerów Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Dostępne opcje"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Edytuj"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Zarządzane pliki cookie"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Nie można znaleźć aplikacji wymaganej do otwarcia tego linku"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Podaj, która aplikacja znajdująca się na Twoim urządzeniu uległa uszkodzeniu."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "W witrynach internetowych są wykorzystywane pliki cookie. Gdy użyjesz w witrynie funkcji zabezpieczenia, pliki cookie nie zostaną usunięte i pozostaniesz zalogowany(-a) nawet po użyciu przycisku Zabezpiecz. Nadal blokujemy narzędzia śledzące innych firm znalezione w zabezpieczonych witrynach."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Która witryna nie działa poprawnie?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "„%@” nie będzie już mieć dostępu do zsynchronizowanych danych."; + /* Accessibility label on remove button */ "tab.close.home" = "Zamknij kartę główną"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Dźwięk jest przetwarzany na urządzeniu. Dane nie są przechowywane ani udostępniane żadnym podmiotom, w tym DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Zezwalaj na powiadomienia"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Otwórz zaproszenie"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopiuj"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Kod zaproszenia"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Krok %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Masz zaproszenie!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Dołącz do prywatnej listy oczekujących"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Dołączanie do listy oczekujących..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Udostępnij link"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "POWIADOM MNIE"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Chcesz otrzymać powiadomienie, gdy przyjdzie na to pora?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Nie, dziękuję"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Możemy powiadomić Cię, gdy nadejdzie Twoja kolej, ale powiadomienia są obecnie wyłączone dla DuckDuckGo."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Nie musisz udostępniać żadnych danych osobowych, aby dołączyć do listy oczekujących. Miejsce w kolejce zostanie zarezerwowane zgodnie z sygnaturą czasową przechowywaną wyłącznie na Twoim urządzeniu, aby umożliwić nam powiadomienie, gdy nadejdzie Twoja kolej."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Jesteś na liście!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Możliwość pobrania"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Masz zaproszenie!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Usunięto ulubione"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Wiadomość od %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Wypróbuj DuckDuckGo dla systemu Windows."; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Wejdź pod ten adres na urządzeniu z systemem Windows, aby pobrać:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Uruchom plik instalacyjny DuckDuckGo znajdujący się w folderze z pobranymi plikami, wybierz opcję „Instaluj”, a następnie wprowadź swój kod zaproszenia."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Chcesz zacząć korzystać z DuckDuckGo na urządzeniu z systemem Windows?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Szukasz wersji na komputer Mac?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Uzyskaj możliwość wcześniejszego wypróbowania DuckDuckGo dla systemu Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Wyślemy Ci powiadomienie, gdy Twoja kopia DuckDuckGo dla komputerów z systemem Windows będzie gotowa do pobrania. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Tutaj pojawi się Twoje zaproszenie do wypróbowania DuckDuckGo dla komputerów z systemem Windows. Zajrzyj tu wkrótce, możemy też wysłać Ci powiadomienie, gdy nadejdzie Twoja kolej."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Wyślemy Ci powiadomienie, gdy Twoja kopia DuckDuckGo dla komputerów z systemem Windows będzie gotowa do pobrania."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Przeglądaj prywatnie za pomocą naszej aplikacji dla systemu Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Masz zaproszenie!\n\nChcesz zacząć korzystać z DuckDuckGo na urządzeniu z systemem Windows?\n\nKrok 1\nOdwiedź ten adres na swoim urządzeniu z systemem Windows, aby pobrać aplikację: \nhttps://duckduckgo.com/windows\n\nKrok 2\nUruchom plik instalacyjny DuckDuckGo znajdujący się w folderze z pobranymi plikami, wybierz opcję „Instaluj”, a następnie wprowadź swój kod zaproszenia.\n\nKod zaproszenia: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Chcesz rozpocząć prywatne przeglądanie w systemie Windows?\n\nOdwiedź ten adres na komputerze, aby pobrać:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo dla systemu Windows ma wszystko, czego potrzebujesz, aby przeglądać strony internetowe, zachowując większą prywatność – prywatne wyszukiwanie, blokowanie śledzących, wymuszone szyfrowanie i blokowanie wyskakujących okienek z ciasteczkami, a w planach mamy jeszcze więcej najlepszych w swojej klasie zabezpieczeń."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Aplikacja DuckDuckGo dla systemu Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Pobierz DuckDuckGo dla systemu Windows."; + diff --git a/DuckDuckGo/pl.lproj/Settings.strings b/DuckDuckGo/pl.lproj/Settings.strings index 4761086158..0ce1fa9ac0 100644 --- a/DuckDuckGo/pl.lproj/Settings.strings +++ b/DuckDuckGo/pl.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Rozmiar tekstu"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Tytuł"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Uruchomienie aplikacji"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Globalna Kontrola Prywatności (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Dodaj"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Zamknięcie aplikacji, brak aktywności przez 15 minut"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Podglądy po dłuższym przyciśnięciu"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Przeglądaj prywatnie za pomocą naszej aplikacji dla systemu Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Ochrona prywatności włączona dla wszystkich witryn"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Podziel się opinią"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Pozycja paska adresu"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Pozycja paska adresu"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Pozwól DuckDuckGo zarządzać wyskakującymi okienkami ze zgodą na używanie plików cookie"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "O DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Do góry"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Więcej możliwości DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Synchronizacja"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Przeglądaj prywatnie za pomocą aplikacji dla komputerów Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Etykieta"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "Aplikacja DuckDuckGo dla systemu Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Rozmiar tekstu"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Dodaj aplikację do Docka"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "Aplikacja komputerowa DuckDuckGo"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "Aplikacja DuckDuckGo na komputery Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Nowa karta"; diff --git a/DuckDuckGo/pt.lproj/Feedback.strings b/DuckDuckGo/pt.lproj/Feedback.strings index 8fefc4cf1a..ec88efdd05 100644 --- a/DuckDuckGo/pt.lproj/Feedback.strings +++ b/DuckDuckGo/pt.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Retroceder"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Submeter"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Submeter"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Denunciar site danificado"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Motivo do site avariado"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Partilhar comentários"; diff --git a/DuckDuckGo/pt.lproj/Localizable.strings b/DuckDuckGo/pt.lproj/Localizable.strings index a246eb5775..7fcb4ffca8 100644 --- a/DuckDuckGo/pt.lproj/Localizable.strings +++ b/DuckDuckGo/pt.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Editar"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Partilhar"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Parte inferior"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Topo"; + /* No comment provided by engineer. */ "addWidget.button" = "Adicionar widget"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Desbloqueie o DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Bloquear rastreadores de aplicações no teu dispositivo"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Desativado"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Ativado"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Reativa a App Tracking Protection para que possamos bloquear rastreadores irritantes noutras aplicações."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "A App Tracking Protection bloqueou "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " nas tuas aplicações hoje."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Agora mesmo"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Gerir rastreadores"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "O que está a acontecer?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Submeter"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Obrigado! Comentário enviado"; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Agora não"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Comunicar problema"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Restaurar valores predefinidos"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Proteção contra o rastreamento por aplicações"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Última tentativa permitida %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Última tentativa bloqueada %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Iniciar sessão"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.exemplo.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Vai eliminar o seu marcador para \"%@\""; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Marcador eliminado"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Eliminar"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "O vídeo não foi reproduzido"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Escolhe o teu problema na lista…"; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "SELECIONA UMA CATEGORIA"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Indica mais detalhes para nos ajudares a resolver este problema"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "DESCREVER O QUE ACONTECEU"; +/* No comment provided by engineer. */ +"bucket: %@" = "grupo: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Mês passado"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Nenhuma correspondência encontrada"; +/* No comment provided by engineer. */ +"Error" = "Erro"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Iniciar sessão"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Lamentamos. Inicia sessão novamente para reativar as funcionalidades de Email Protection neste navegador."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Erro de Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Abre Definições"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "O teu dispositivo não tem espaço de armazenamento. Liberta espaço para continuar."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Armazenamento insuficiente"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Fechar a aplicação"; + +/* Alert message */ +"error.preemptive-crash.body" = "A aplicação tem um problema e será encerrada. Reabre a aplicação para continuar."; + +/* Alert title */ +"error.preemptive-crash.title" = "Detetado problema na aplicação"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Favorito"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Página inicial"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Adicionar marcador"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "O DuckDuckGo para Mac tem a velocidade de que necessita, as funcionalidades de navegação que espera e os nossos Privacy Essentials líderes no setor."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Abra o seu convite"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "O DuckDuckGo para Mac está pronto!"; /* Title for the copy action */ "mac-waitlist.copy" = "Copiar"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "No teu computador Windows, acede a:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "No seu Mac, aceda a:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Windows em breve!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Procura a versão para Windows?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Navegue em privado com a nossa aplicação para Mac"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo para Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "Aplicação para desktop DuckDuckGo"; +"mac-waitlist.title" = "Aplicação DuckDuckGo para Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Menu de navegação"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Editar"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Cookies geridos"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Não encontramos a aplicação necessária para abrir esse link"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Indica que aplicação no teu dispositivo está com problemas."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Os websites confiam nos cookies para o manter ligado. Quando se usa uma barreira de segurança num site, os cookies não são apagados e permanecerá ligado, mesmo após usar o botão de segurança. Ainda bloqueamos rastreadores de terceiros encontrados em sites com barreiras de segurança."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Que site está com falhas?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "\"%@\" deixará de poder aceder aos teus dados sincronizados."; + /* Accessibility label on remove button */ "tab.close.home" = "Fechar o separador inicial"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "O áudio é processado no dispositivo. Não foi armazenado ou partilhado com ninguém, incluindo o DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Permitir notificações"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Abra o seu convite"; + +/* Title for the copy action */ +"waitlist.copy" = "Copiar"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Código de Convite"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Passo %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Está convidado!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Adira à Lista de Espera Privada"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "A aderir à Lista de Espera..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Partilhar ligação"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "NOTIFICAR-ME"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Receber uma notificação quando for a tua vez?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Não, obrigado"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Podemos notificá-lo quando for a sua vez, mas as notificações, de momento, estão desativadas para o DuckDuckGo."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Não precisará de partilhar nenhuma informação pessoal para aderir à lista de espera. Irá proteger o seu lugar na fila com um carimbo de data/hora que existe exclusivamente em seu dispositivo, para que possamos notificá-lo quando for a sua vez."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Está na lista!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Transferência disponível"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Está convidado!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Favorito removido"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Uma mensagem de %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Experimenta o DuckDuckGo para Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Visita este URL no teu dispositivo Windows para descarregar:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Abre o instalador do DuckDuckGo em Transferências, seleciona Instalar e introduz o teu código de convite."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "A postos para usar o DuckDuckGo no Windows?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Procura a versão para Mac?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Obtenha acesso antecipado para experimentar o DuckDuckGo para Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Vamos enviar-te uma notificação quando a tua cópia do DuckDuckGo para Windows estiver pronta para descarregar. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "O seu convite para experimentar o DuckDuckGo para Windows ficará disponível aqui. Volte em breve, ou poderemos enviar uma notificação quando for a sua vez."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Vamos enviar-te uma notificação quando a tua cópia do DuckDuckGo para Windows estiver pronta para descarregar."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Navegue em privado com a nossa aplicação para Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Recebeste um convite!\n\nA postos para usar o DuckDuckGo no Windows?Passo 1\nVisita este URL no teu dispositivo Windows para descarregar:\nhttps://duckduckgo.com/windows\n\nPasso 2\nAbre o instalador do DuckDuckGo em Transferências, seleciona Instalar e introduz o teu código de convite.\n\nCódigo de convite: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "A postos para começares a navegar em privado no Windows?\n\nVisita este URL no teu computador para transferir:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "O DuckDuckGo tem tudo o que precisa para navegar com mais privacidade — pesquisa privada, bloqueio de rastreadores, encriptação forçada e bloqueio de pop-ups de cookies — e há mais proteções líderes de mercado a caminho."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Aplicação DuckDuckGo para Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Obtém o DuckDuckGo para Windows!"; + diff --git a/DuckDuckGo/pt.lproj/Settings.strings b/DuckDuckGo/pt.lproj/Settings.strings index 47d97a737e..e7f04d47c8 100644 --- a/DuckDuckGo/pt.lproj/Settings.strings +++ b/DuckDuckGo/pt.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Tamanho do texto"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Título"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Abertura das aplicações"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Controlo Global de Privacidade (CGP)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Adicionar"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Saída da aplicação, inativa durante 15 minutos"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Pré-visualizações ao premir prolongadamente"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Navegue em privado com a nossa aplicação para Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Proteção de Privacidade ativa para todos os sites"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Partilhar comentários"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Posição da barra de endereços"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Posição da barra de endereços"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Permitir que o DuckDuckGo faça a gestão dos pop-ups de consentimento de cookies"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Sobre o DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Topo"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Mais da DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Sincronizar"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Navegue em privado com a nossa aplicação para Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Rótulo"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "Aplicação DuckDuckGo para Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Tamanho do texto"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Adicionar aplicação à sua dock"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "Aplicação para desktop DuckDuckGo"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "Aplicação DuckDuckGo para Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Novo separador"; diff --git a/DuckDuckGo/ro.lproj/Feedback.strings b/DuckDuckGo/ro.lproj/Feedback.strings index 99764dfeae..c2715d7fcf 100644 --- a/DuckDuckGo/ro.lproj/Feedback.strings +++ b/DuckDuckGo/ro.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Înapoi"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Trimite"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Trimite"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Raportați site-ul defect"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Motivul pentru care site-ul nu funcționează"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Partajează feedback"; diff --git a/DuckDuckGo/ro.lproj/Localizable.strings b/DuckDuckGo/ro.lproj/Localizable.strings index a9ae2508be..87228011e3 100644 --- a/DuckDuckGo/ro.lproj/Localizable.strings +++ b/DuckDuckGo/ro.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Editați"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Partajare"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Partea de jos"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Sus"; + /* No comment provided by engineer. */ "addWidget.button" = "Adăugare widget"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Deblochează DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Blochează tehnologiile de urmărire pe dispozitivul tău"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Dezactivat"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Activat"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Activează App Tracking Protection pentru a putea bloca tehnologiile de urmărire deranjante din alte aplicații."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "App Tracking Protection a blocat "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " în aplicațiile tale astăzi."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Chiar acum"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Gestionează tehnologiile de urmărire"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Ce se întâmplă?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Trimite"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Mulțumesc! Feedback trimis."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Nu acum"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Raportează problema"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Restabilește valorile implicite"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Protecția la urmărirea aplicațiilor"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Ultima încercare a fost permisă la %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Ultima încercare a fost blocată la %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Autentificare"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.example.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Aceasta va șterge marcajul tău pentru „%@”"; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Marcaj șters"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Ștergere"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Videoclipul nu s-a redat"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Alegeți problema ta din listă..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "SELECTEAZĂ O CATEGORIE"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Comunicarea mai multor detalii ne poate ajuta să rezolvăm această problemă"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "DESCRIE CE S-A INTAMPLAT"; +/* No comment provided by engineer. */ +"bucket: %@" = "bucket: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Ultima lună"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Nu s-au găsit potriviri"; +/* No comment provided by engineer. */ +"Error" = "Eroare"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Autentificare"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Ne pare rău, te rugăm să te conectezi din nou pentru a reactiva caracteristicile Email Protection în acest browser."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Eroare Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Deschide Setări"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Se pare că dispozitivul tău a rămas fără spațiu de stocare. Eliberează spațiu pentru a continua."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Nu există suficient spațiu de stocare"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Închide aplicația"; + +/* Alert message */ +"error.preemptive-crash.body" = "Se pare că există o problemă cu aplicația și aceasta trebuie să se închidă. Redeschide pentru a continua."; + +/* Alert title */ +"error.preemptive-crash.title" = "A fost detectată o problemă cu aplicația"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Preferință"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Pagina de pornire"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Adăugare semn de carte"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo pentru Mac are viteza de care ai nevoie, funcționalitățile de răsfoire pe care ți le dorești și este prevăzută cu cele mai bune caracteristici de bază în privința confidențialității din domeniu."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Deschide invitația ta"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo pentru Mac este pregătită!"; /* Title for the copy action */ "mac-waitlist.copy" = "Copiere"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Pe computerul tău Windows, accesează:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Pe dispozitivul tău Mac, accesează:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Va fi disponibil în curând și pentru Windows!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Cauți versiunea pentru Windows?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Răsfoiește în mod privat, cu aplicația noastră pentru Mac"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo pentru Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "Aplicația DuckDuckGo pentru desktop"; +"mac-waitlist.title" = "Aplicația DuckDuckGo pentru Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Meniul de navigare"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Editați"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Modulele cookie au fost gestionate"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Aplicația necesară pentru a deschide acel link nu poate fi găsită"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Menționează ce aplicație de pe dispozitivul tău este nefuncțională."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Site-urile web se bazează pe cookie-uri pentru a te menține conectat. Atunci când ștergi activitatea și istoricul unui site, cookie-urile nu vor fi șterse și vei rămâne conectat, chiar și după utilizarea butonului Ștergere activitate și istoric. Blocăm totuși instrumentele de urmărire terțe găsite pe site-urile web cu ștergerea activității și istoricului din browser la ieșire."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Ce site este defect?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "„%@” nu va mai putea accesa datele tale sincronizate."; + /* Accessibility label on remove button */ "tab.close.home" = "Închide fila de pornire"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Componenta audio este prelucrată pe dispozitiv. Nu este stocată sau distribuită nimănui, nici DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Permite notificările"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Deschide invitația ta"; + +/* Title for the copy action */ +"waitlist.copy" = "Copiere"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Codul de invitație"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Pasul %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Ești invitat(ă)!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Alătură-te listei de așteptare private"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Te alături listei de așteptare..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Trimite linkul"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "DORESC SĂ PRIMESC NOTIFICĂRI"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Primești o notificare când este rândul tău?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Nu, mulțumesc"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Te putem înștiința când este rândul tău, însă notificările sunt momentan dezactivate pentru DuckDuckGo."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Nu va trebui să comunici informații personale, pentru a te înscrie pe lista de așteptare. Îți vei asigura locul la coadă, folosind o marcă de timp care există numai pe dispozitivul tău, astfel încât să te putem înștiința când ți-a sosit rândul."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Ești pe listă!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Descărcare disponibilă"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Ești invitat(ă)!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Favorit eliminat"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Un mesaj de la %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Încearcă DuckDuckGo pentru Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Accesează această adresă URL pe dispozitivul tău Windows pentru a descărca:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Deschide programul de instalare DuckDuckGo în Descărcări, selectează Instalează, apoi completează codul de invitație."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Ești gata să folosești DuckDuckGo pe Windows?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Cauți versiunea pentru Mac?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Beneficiază de acces timpuriu pentru a încerca DuckDuckGo pentru Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Îți vom trimite o notificare atunci când copia ta DuckDuckGo pentru Windows este gata pentru descărcare. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Invitația ta de a încerca DuckDuckGo pentru Windows va sosi aici. Revino în curând sau îți putem trimite o notificare când este rândul tău."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Îți vom trimite o notificare atunci când copia ta DuckDuckGo pentru Windows este gata pentru descărcare."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Navighează în mod privat cu aplicația noastră pentru Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Ești invitat!\n\nEști gata să folosești DuckDuckGo pe Windows?\n\nPasul 1\nAccesează această adresă URL pe dispozitivul tău Windows pentru a descărca:\nhttps://duckduckgo.com/windows\n\nPasul 2\nDeschide programul de instalare DuckDuckGo în Descărcări, selectează Instalează, apoi completează codul de invitație.\n\nCod de invitație: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Ești gata să începi să navighezi în mod privat folosind Windows?\n\nVizitează această adresă URL pe computerul tău Windows pentru a descărca:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo pentru Windows are tot ceea ce îți trebuie pentru a naviga într-un mod mai confidențial – căutare privată, blocarea tehnologiilor de urmărire, criptare forțată și blocarea ferestrelor pop-up cookie, plus alte elemente de protecție de cel mai înalt nivel, în curs de implementare."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Aplicația DuckDuckGo pentru Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Descarcă DuckDuckGo pentru Windows!"; + diff --git a/DuckDuckGo/ro.lproj/Settings.strings b/DuckDuckGo/ro.lproj/Settings.strings index 2c505910ce..c2b63de768 100644 --- a/DuckDuckGo/ro.lproj/Settings.strings +++ b/DuckDuckGo/ro.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Dimensiune text"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Titlu"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Lansare aplicație"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Global Privacy Control (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Adăugați"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Ieșire din aplicație, inactiv timp de 15 minute"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Previzualizări prin apăsare lungă"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Navighează în mod privat cu aplicația noastră pentru Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Protecția confidențialității este activată pentru toate site-urile"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Partajează feedback"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Poziția barei de adrese"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Poziția barei de adrese"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Lasă DuckDuckGo să gestioneze ferestrele pop-up de solicitare a consimțământului cu privire la modulele cookie"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Despre DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Sus"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Mai multe de la DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Sincronizare"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Răsfoiește în mod privat, cu aplicația noastră pentru Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Label"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "Aplicația DuckDuckGo pentru Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Dimensiune text"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Adaugă aplicația la secțiunea ta fixă"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "Aplicația DuckDuckGo pentru desktop"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "Aplicația DuckDuckGo pentru Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Filă nouă"; diff --git a/DuckDuckGo/ru.lproj/Feedback.strings b/DuckDuckGo/ru.lproj/Feedback.strings index a54ac40d24..b34300f93c 100644 --- a/DuckDuckGo/ru.lproj/Feedback.strings +++ b/DuckDuckGo/ru.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Назад"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Отправить"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Отправить"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Сообщить о неработающем сайте"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Что не так с сайтом"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Оставьте нам отзыв"; diff --git a/DuckDuckGo/ru.lproj/Localizable.strings b/DuckDuckGo/ru.lproj/Localizable.strings index f1353ea90b..1a827b5b65 100644 --- a/DuckDuckGo/ru.lproj/Localizable.strings +++ b/DuckDuckGo/ru.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Редактировать"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Поделиться"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Внизу"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Вверх"; + /* No comment provided by engineer. */ "addWidget.button" = "Добавить виджет"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Разблокируйте DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Блокируйте трекеры приложений на своем устройстве"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Отключено"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Включено"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Включите функцию защиты от слежки в приложениях, чтобы блокировать надоедливые трекеры в других программах."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "Сегодня функция защиты от слежки в приложениях заблокировала "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " в ваших приложениях."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Только что"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Управление трекерами"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Что не так?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Отправить"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Спасибо! Ваш отзыв отправлен."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Не сейчас"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Сообщить о проблеме"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Вернуть настройки по умолчанию"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Блокировка отслеживания приложениями"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Последний пропуск: %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Последняя блокировка: %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Войти"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.example.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Это приведет к удалению закладки для «%@»"; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Закладка удалена"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Удалить"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Не воспроизводится видео"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Выберите проблему из списка..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "ВЫБЕРИТЕ КАТЕГОРИЮ"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Более подробная информация поможет нам быстрее найти решение"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "ОПИШИТЕ, ЧТО СЛУЧИЛОСЬ"; +/* No comment provided by engineer. */ +"bucket: %@" = "контейнер: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "За последний месяц"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Ничего не найдено"; +/* No comment provided by engineer. */ +"Error" = "Ошибка"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Войти"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Чтобы включить функцию Email Protection, пожалуйста, выполните вход заново."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Ошибка функции Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Открыть Настройки"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Кажется, на вашем устройстве закончилась внутренняя память. Освободите место, прежде чем продолжить."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Недостаточно места"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Закрыть приложение"; + +/* Alert message */ +"error.preemptive-crash.body" = "В приложении возникла ошибка, и его нужно закрыть. Для продолжения работы откройте его снова."; + +/* Alert title */ +"error.preemptive-crash.title" = "Ошибка в приложении"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Избранное"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Домашняя"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Добавить закладку"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "Приложение DuckDuckGo для Mac — это высокая скорость, функциональность и беспрецедентная конфиденциальность."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Откройте приглашение"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "Приложение DuckDuckGo для Mac готово!"; /* Title for the copy action */ "mac-waitlist.copy" = "Копировать"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Перейдите на компьютере Windows по ссылке:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Перейдите на компьютере Mac по ссылке:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Скоро — для Windows!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Ищете версию для Windows?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Полная конфиденциальность в Интернете, благодаря нашему приложению для Mac"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo для Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "Настольное приложение DuckDuckGo"; +"mac-waitlist.title" = "Приложение DuckDuckGo для Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Меню браузера"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Редактировать"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "Хорошо"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Kуки-файлы выбраны"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Приложение для открытия этой ссылки не найдено"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Укажите, какое приложение на вашем устройстве работает со сбоями."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Чтобы вам не приходилось каждый раз входить в свою учетную запись, сайты используют куки-файлы. Если сделать сайт огнеупорным, мы не будем стирать его куки-файлы, даже если вы воспользуетесь кнопкой «Огонь». Но мы по-прежнему будем блокировать сторонние трекеры, в том числе на огнеупорных сайтах."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "На каком сайте возникает проблема?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "«%@» утратит доступ к синхронизированным данным."; + /* Accessibility label on remove button */ "tab.close.home" = "Закрыть домашнюю вкладку"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Аудио обрабатывается непосредственно на устройстве, не хранится и не передается никому, даже DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Разрешить уведомления"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Откройте приглашение"; + +/* Title for the copy action */ +"waitlist.copy" = "Копировать"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Код приглашения"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Шаг %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Вас пригласили!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Приглашаем встать в очередь"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Добавление в список ожидания..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Поделиться ссылкой"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "ОПОВЕСТИТЬ"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Сообщить, когда придет ваша очередь?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Нет, спасибо"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Мы можем уведомить вас, когда подойдет ваша очередь, но для этого нужно включить уведомления от DuckDuckGo."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Чтобы записаться в список ожидания, не нужно делиться личной информацией. Временная метка, хранящаяся только на вашем устройстве, позволит нам определить, когда подойдет ваша очередь, о чем мы сообщим вам дополнительно."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Вы в списке!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Готово к загрузке"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Вас пригласили!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Страница удалена из избранного"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Сообщение от %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "DuckDuckGo для Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Чтобы загрузить DuckDuckGo для Windows, откройте эту ссылку:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Откройте установщик DuckDuckGo в «Загрузках», выберите «Установить» и введите пригласительный код."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Хотите использовать DuckDuckGo на Windows?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Ищете версию для Mac?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Ранний доступ к DuckDuckGo для Windows"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Когда ваш экземпляр будет готов к загрузке, мы отправим вам уведомление. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Приглашение протестировать DuckDuckGo для Windows отобразится здесь. Зайдите сюда позже. Мы также можем отправить вам уведомление, когда придет ваша очередь."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Когда ваша копия будет готова к загрузке, мы отправим вам уведомление."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Полная конфиденциальность в Интернете, благодаря нашему приложению для Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Вас пригласили!\n\nХотите использовать DuckDuckGo на Windows?\n\nШаг 1\nЗагрузите файл, посетив эту страницу на устройстве Windows:\nhttps://duckduckgo.com/windows\n\nШаг 2\nОткройте установщик DuckDuckGo в «Загрузках», выберите «Установить» и введите пригласительный код.\n\nКод приглашения: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Конфиденциальность в интернете на Windows? Легко!\n\nЗагрузите наше приложение по ссылке:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "В DuckDuckGo для Windows есть все необходимое для защиты данных в Сети: приватный поиск, принудительное шифрование, блокировка трекеров и всплывающих куки, а также перспектива разработок передовых средств обеспечения безопасности."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Приложение DuckDuckGo для Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "DuckDuckGo для Windows!"; + diff --git a/DuckDuckGo/ru.lproj/Settings.strings b/DuckDuckGo/ru.lproj/Settings.strings index 174c044a8e..7f84888c62 100644 --- a/DuckDuckGo/ru.lproj/Settings.strings +++ b/DuckDuckGo/ru.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Размер текста"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Название"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "При запуске приложения"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Глобальный контроль конфиденциальности (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Добавить"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "После выхода из приложения, через 15 минут бездействия"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Предпросмотр долгим нажатием"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Полная конфиденциальность в Интернете, благодаря нашему приложению для Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Защита конфиденциальности включена на всех сайтах"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Оставьте нам отзыв"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Положение адресной строки"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Положение адресной строки"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Разрешить DuckDuckGo управлять окнами выбора куки-файлов"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Несколько слов о DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Вверх"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "DuckDuckGo также предлагает..."; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Синхронизация"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Интернет без трекеров с нашим приложением для Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Метка"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "Приложение DuckDuckGo для Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Размер текста"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Добавьте приложение на док-панель"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "Настольное приложение DuckDuckGo"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "Приложение DuckDuckGo для Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Новая вкладка"; diff --git a/DuckDuckGo/sk.lproj/Feedback.strings b/DuckDuckGo/sk.lproj/Feedback.strings index 8c24249f76..41fb371247 100644 --- a/DuckDuckGo/sk.lproj/Feedback.strings +++ b/DuckDuckGo/sk.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Späť"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Potvrdiť"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Potvrdiť"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Nahlásiť nefunkčnú stránku"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Dôvod prerušenia prevádzky webovej stránky"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Zdieľať spätnú väzbu"; diff --git a/DuckDuckGo/sk.lproj/Localizable.strings b/DuckDuckGo/sk.lproj/Localizable.strings index 7704624637..156ac6a1a7 100644 --- a/DuckDuckGo/sk.lproj/Localizable.strings +++ b/DuckDuckGo/sk.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Upraviť"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Zdieľať"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Spodná časť"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Hore"; + /* No comment provided by engineer. */ "addWidget.button" = "Pridať miniaplikáciu"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Odomknite DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Blokovanie sledovacích nástrojov aplikácií vo vašom zariadení"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Zakázané"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Zapnuté"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Povoľte ochranu pred sledovaním aplikácií, aby sme mohli blokovať problematické sledovania v iných aplikáciách."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "Ochrana pred sledovaním aplikácií je zablokovaná "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " vo svojich aplikáciách ešte dnes."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Práve teraz"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Správa sledovaní"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Čo sa deje?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Potvrdiť"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Ďakujeme! Spätná väzba bola odoslaná"; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Teraz nie"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Nahlásiť problém"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Obnovenie predvolených nastavení"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Ochrana pred sledovaním činnosti v aplikáciách"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Posledný povolený pokus %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Posledný zablokovaný pokus %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Prihlásiť sa"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.example.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Týmto sa zmaže vaša záložka pre „%@“"; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Záložka bola zmazaná"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Vymazať"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Video sa neprehráva"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Vyberte problém zo zoznamu..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "VYBERTE KATEGÓRIU"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Zdieľanie ďalších podrobností nám môže pomôcť vyriešiť tento problém"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "POPÍŠTE, ČO SA STALO"; +/* No comment provided by engineer. */ +"bucket: %@" = "vedro: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Minulý mesiac"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Nenašli sa žiadne zhody"; +/* No comment provided by engineer. */ +"Error" = "Chyba"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Prihlásiť sa"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Pre opätovné povolenie funkcii ochrany e-mailu v tomto prehliadači sa prihláste ešte raz, prosím."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Chyba ochrany e-mailu"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Otvoriť nastavenia"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Zdá sa, že vo vašom zariadení sa minul úložný priestor. Ak chcete pokračovať, uvoľnite miesto, prosím."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Nedostatočný úložný priestor"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Zatvoriť aplikáciu"; + +/* Alert message */ +"error.preemptive-crash.body" = "Zdá sa, že aplikácia má problém a je potrebné ju zavrieť. Na pokračovanie ju opäť otvorte."; + +/* Alert title */ +"error.preemptive-crash.title" = "Zistený problém s aplikáciou"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Obľúbené položky"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Domov"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Pridať záložku"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo pre Mac má rýchlosť, ktorú potrebujete, funkcie prehliadania, ktoré očakávate, a obsahuje naše prvotriedne privacy essentials."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Otvorte svoju pozvánku"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo pre Mac je pripravený!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopírovať"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "V počítači so systémom Windows prejdite na:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "V počítači Mac prejdite na:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Verzia pre Windows bude k dispozícii čoskoro!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Hľadáte verziu pre systém Windows?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Prezerajte súkromne stránky s našou aplikáciou pre Mac"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo pre Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "Aplikácia DuckDuckGo pre počítač"; +"mac-waitlist.title" = "Aplikácia DuckDuckGo pre Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Ponuka prehliadania"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Upraviť"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Spravované súbory cookie"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Aplikácia potrebná na otvorenie odkazu sa nenašla"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Zadajte, ktorá aplikácia vo vašom zariadení je nefunkčná."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Webové stránky sa spoliehajú na súbory cookie, aby ste zostali prihlásení. Keď webovú stránku zabezpečíte funkciou ohňovzdornosti, súbory cookie nebudú zmazané a zostanete prihlásení aj po použití tlačidla Oheň. Stále budeme blokovať sledovacie zariadenia tretích strán, ktoré sa nachádzajú na webových stránkach zabezpečených funkciou ohňovzdornosti."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Ktorá webová stránka je nefunkčná?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "\"%@\" už nebude mať prístup k synchronizovaným údajom."; + /* Accessibility label on remove button */ "tab.close.home" = "Zatvorte kartu domovskej stránky"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Zvuk sa spracováva v zariadení. Neukladá sa nikde a s nikým, vrátane DuckDuckGo, sa nezdieľa."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Povoliť oznámenia"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Otvorte svoju pozvánku"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopírovať"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Pozývací kód"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Krok %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Ste pozvaný/-á!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Pridajte sa do súkromného zoznamu čakateľov"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Pridáva sa na zoznam čakateľov..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Zdieľať odkaz"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "UPOZORNITE MA"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Chcete dostať upozornenie, keď budete na rade?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Nie, ďakujem"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Môžeme vám poslať upozornenie, keď na vás príde rad, ale pre DuckDuckGo sú v súčasnosti upozornenia vypnuté."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Pri pridávaní sa na zoznam čakateľov nemusíte zadávať žiadne osobné údaje. Svoje miesto si zabezpečíte časovou pečiatkou, ktorá existuje výlučne vo vašom zariadení, aby sme vás mohli upozorniť, keď budete na rade."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Ste na zozname čakateľov!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "K dispozícii na stiahnutie"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Ste pozvaný/-á!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Obľúbená položka bola odstránená"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Správa od %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Vyskúšajte DuckDuckGo pre Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Na stiahnutie navštívte túto URL adresu vo svojom zariadení so systémom Windows:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Otvorte inštalátor DuckDuckGo v časti Stiahnuté súbory, vyberte možnosť Inštalovať a zadajte kód pozvania."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Ste pripravení používať DuckDuckGo v systéme Windows?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Hľadáte verziu pre Mac?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Získajte skorý prístup a vyskúšajte DuckDuckGo pre Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Pošleme vám upozornenie, keď bude váš prehliadač DuckDuckGo pre Windows pripravený na stiahnutie. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Tu nájdete svoju pozvánku na vyskúšanie DuckDuckGo pre Windows. Čoskoro sa sem vráťte. Môžeme vám tiež poslať upozornenie, keď budete na rade."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Pošleme vám upozornenie, keď bude váš prehliadač DuckDuckGo pre Windows pripravený na stiahnutie."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Prehliadajte súkromne s našou aplikáciou pre Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Boli ste pozvaný/-á!\n\nSte pripravený/-á používať DuckDuckGo v systéme Windows?1. krok\nPre stiahnutie navštívte túto URL adresu v svojom zariadení so systémom Windows:\nhttps://duckduckgo.com/windows\n\n2. krok\nOtvorte inštalátor DuckDuckGo v časti Stiahnuté súbory, vyberte možnosť Inštalovať a zadajte kód pozvania.\n\nPozývací kód: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Ste pripravený/-á začať v systéme Windows prehliadať s ochranou súkromia?\n\nPre stiahnutie navštívte v počítači so systémom Windows túto URL adresu:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo pre Windows má všetko, čo potrebujete na prehľadávanie s väčšou mierou súkromia — súkromné vyhľadávanie, blokovanie sledovania, vynútené šifrovanie, blokovanie automaticky zobrazených okien so súbormi cookie a ďalšie špičkové prvky ochrany."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Aplikácia DuckDuckGo pre Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Získajte DuckDuckGo pre Windows!"; + diff --git a/DuckDuckGo/sk.lproj/Settings.strings b/DuckDuckGo/sk.lproj/Settings.strings index 0ed593c226..6864fb3a4f 100644 --- a/DuckDuckGo/sk.lproj/Settings.strings +++ b/DuckDuckGo/sk.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Veľkosť textu"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Názov"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Spustenie aplikácie"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Globálna kontrola súkromia (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Pridať"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Ukončiť 15 minút neaktívnu aplikáciu"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Náhľady po dlhodobom stlačení"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Prehliadajte súkromne s našou aplikáciou pre Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Ochrana súkromia je zapnutá pre všetky webové stránky"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Zdieľať spätnú väzbu"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Poloha riadku s adresou"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Poloha riadku s adresou"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Nech DuckDuckGo spravuje kontextové okná týkajúce sa súhlasu so súbormi cookie"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "O službe DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Hore"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Viac od DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Synchronizácia"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Prezerajte si súkromne stránky s našou aplikáciou pre Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Označenie"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "Aplikácia DuckDuckGo pre Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Veľkosť textu"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Pridať aplikáciu do Docku"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "Aplikácia DuckDuckGo pre počítač"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "Aplikácia DuckDuckGo pre Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Nová karta"; diff --git a/DuckDuckGo/sl.lproj/Feedback.strings b/DuckDuckGo/sl.lproj/Feedback.strings index 56d6659960..a5fbc20190 100644 --- a/DuckDuckGo/sl.lproj/Feedback.strings +++ b/DuckDuckGo/sl.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Nazaj"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Potrdi"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Potrdi"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Prijavi nedelujočo stran"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Vzrok za nedelujočo stran"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Deli povratne informacije"; diff --git a/DuckDuckGo/sl.lproj/Localizable.strings b/DuckDuckGo/sl.lproj/Localizable.strings index d0c2f9a7fa..cc0ea85588 100644 --- a/DuckDuckGo/sl.lproj/Localizable.strings +++ b/DuckDuckGo/sl.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Uredi"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Deli"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Spodaj"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Vrh"; + /* No comment provided by engineer. */ "addWidget.button" = "Dodaj gradnik"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Odkleni DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Blokiraj sledilnike aplikacij v napravi"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Onemogočeno"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Omogočeno"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Omogočite zaščito pred sledenjem aplikacij App Tracking Protection, da lahko blokiramo nadležne sledilnike v drugih aplikacijah."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "Zaščita pred sledenjem aplikacij App Tracking Protection je blokirala "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " v vaših aplikacijah danes."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Ravno zdaj"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Upravljanje sledilnikov"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Kaj se dogaja?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Potrdi"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Hvala! Povratne informacije so poslane."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Ne zdaj"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Izdaja poročila"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Obnovi privzete nastavitve"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Zaščita pred sledenjem aplikacij"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Zadnji dovoljen poskus: %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Zadnji blokiran poskus: %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Prijavite se"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.example.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "S tem boste izbrisali svoj zaznamek za »%@«"; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Zaznamek je bil izbrisan"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Izbriši"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Video se ni predvajal"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Svoje vprašanje izberite s seznama ..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "IZBERITE KATEGORIJO"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Če z nami delite več podrobnosti, nam to lahko pomaga pri reševanju te težave"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "OPIŠITE, KAJ SE JE ZGODILO"; +/* No comment provided by engineer. */ +"bucket: %@" = "zbiralnik: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Pretekli mesec"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Ni zadetkov"; +/* No comment provided by engineer. */ +"Error" = "Napaka"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Prijavite se"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Znova se prijavite, da ponovno omogočite funkcije Email Protection v tem brskalniku."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Napaka funkcije Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Odpri nastavitve"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Videti je, da je vaši napravi zmanjkalo prostora za shranjevanje. Za nadaljevanje sprostite prostor."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Premalo prostora za shranjevanje"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Zapri aplikacijo"; + +/* Alert message */ +"error.preemptive-crash.body" = "Videti je, da je prišlo do težave z aplikacijo in jo je zato treba zapreti. Če želite nadaljevati, jo odprite znova."; + +/* Alert title */ +"error.preemptive-crash.title" = "Odkrita težava z aplikacijo"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Priljubljeni"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Domov"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Dodaj zaznamek"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo za računalnike Mac zagotavlja hitrost, ki jo potrebujete, in funkcije brskanja, ki jih pričakujete, ter je opremljen z našimi ključnimi funkcijami zasebnosti, ki so najboljše v tem razredu."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Odprite svoje povabilo"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo za računalnike Mac je na voljo!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopiraj"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "V računalniku s sistemom Windows pojdite na:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "V računalniku Mac odprite:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Kmalu bo na voljo za Windows!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Iščete različico za računalnike Windows?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Brskajte zasebno z našo aplikacijo za računalnike Mac"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo za računalnike Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "Namizna aplikacija DuckDuckGo"; +"mac-waitlist.title" = "Aplikacija DuckDuckGo za računalnike Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Brskanje po meniju"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Uredi"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "V REDU"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Upravljani piškotki"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Aplikacije, ki je potrebna za odpiranje te povezave, ni mogoče najti"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Vnesite, katera aplikacija v vaši napravi ne deluje."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Spletne strani se zanašajo na piškotke, da boš vedno prijavljen. Ko spletno mesto požarno zaščitiš, piškotki ne bodo izbrisani in ostal boš prijavljen tudi po uporabi gumba Fire. Še vedno blokiramo zunanje sledilce, ki jih najdemo na požarno izoliranih spletnih mestih."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Katera spletna stran je poškodovana?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "Aplikacija »%@« ne bo več mogla dostopati do sinhroniziranih podatkov."; + /* Accessibility label on remove button */ "tab.close.home" = "Zapri zavihek Domov"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Zvok bo obdelan v napravi. Zvok ne bo shranjen in ne bo deljen z drugimi, niti z brskalnikom DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Dovoli obvestila"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Odprite svoje povabilo"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopiraj"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Koda povabila"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "%d. korak"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Povabljeni ste!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Pridruži se zasebnemu čakalnemu seznamu"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Pridružitev čakalni listi ..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Daj povezavo v skupno rabo"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "OBVESTI ME"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Želite prejeti obvestilo, ko boste na vrsti?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Ne, hvala"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Lahko vas obvestimo, ko boste na vrsti, toda obvestila za DuckDuckGo so trenutno onemogočena."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Za pridružitev čakalnemu seznamu vam ne bo treba posredovati nobenih osebnih podatkov. Svoje mesto si boste zagotovili v skladu s časovnim žigom, ki obstaja samo v vaši napravi, tako da vas lahko obvestimo, ko boste na vrsti."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Na seznamu ste!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Na voljo za prenos"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Povabljeni ste!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Priljubljeni odstranjeni"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Sporočilo od %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Preizkusite DuckDuckGo za Windowse!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Za prenos obiščite ta naslov URL v napravi Windows:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Odprite namestitveni program DuckDuckGo v mapi Prenosi, izberite Namesti in vnesite kodo povabila."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Želite začeti uporabljati DuckDuckGo v sistemu Windows?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Iščete različico za računalnike Mac?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Zagotovite si zgodnji dostop in preizkusite DuckDuckGo za sistem Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Ko bo vaša izdaja DuckDuckGo za računalnike Windows pripravljena za prenos, vam bomo poslali obvestilo. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Vaše povabilo za preizkus DuckDuckGo za sistem Windows bo prispelo sem. Preverite znova kmalu, lahko pa vam lahko pošljemo obvestilo, ko bo preizkus na voljo."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Ko bo vaša izdaja DuckDuckGo za računalnike Windows pripravljena za prenos, vam bomo poslali obvestilo."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Brskajte zasebno z našo aplikacijo za sistem Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Povabljeni ste!\n\nŽelite začeti uporabljati DuckDuckGo v sistemu Windows?\n\n1. korak\nZa prenos obiščite ta URL v napravi Windows:\nhttps://duckduckgo.com/windows\n\n2. korak\nOdprite namestitveni program DuckDuckGo Installer, ki je v mapi Prenosi, izberite Namesti in vnesite kodo povabila.\n\nKoda povabila: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Ste pripravljeni začeti zasebno brskati v sistemu Windows?\n\nZa prenos v računalniku s sistemom Windows obiščite ta naslov URL:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo za sistem Windows ima vse, kar potrebujete za zasebnejše brskanje – zasebno iskanje, blokiranje sledenja, prisilno šifriranje in blokiranje pojavnih oken s piškotki ter še več najboljših zaščit v svojem razredu."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Aplikacija DuckDuckGo za sistem Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Pridobite DuckDuckGo za Windows!"; + diff --git a/DuckDuckGo/sl.lproj/Settings.strings b/DuckDuckGo/sl.lproj/Settings.strings index fcae0075d2..5c032acda2 100644 --- a/DuckDuckGo/sl.lproj/Settings.strings +++ b/DuckDuckGo/sl.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Velikost besedila"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Naslov"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Zagon aplikacije"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Globalni nadzor zasebnosti (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Dodaj"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Izhod iz aplikacije, neaktivnost 15 minut"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Pregledi z dolgim pritiskom"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Brskajte zasebno z našo aplikacijo za sistem Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Zaščita zasebnosti omogočena za vsa spletna mesta"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Deli povratne informacije"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Položaj naslovne vrstice"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Položaj naslovne vrstice"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Naj DuckDuckGo upravlja pojavna okna s soglasjem za piškotke"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "O DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Vrh"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Več od iskalnika DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Sinhronizacija"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Brskajte zasebno z našo aplikacijo za računalnike Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Oznaka"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "Aplikacija DuckDuckGo za sistem Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Velikost besedila"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Dodajte aplikacijo na svoj domači zaslon"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "Namizna aplikacija DuckDuckGo"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "Aplikacija DuckDuckGo za računalnike Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Nov zavihek"; diff --git a/DuckDuckGo/sv.lproj/Feedback.strings b/DuckDuckGo/sv.lproj/Feedback.strings index 3d5436cf98..1c1dce6277 100644 --- a/DuckDuckGo/sv.lproj/Feedback.strings +++ b/DuckDuckGo/sv.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Tillbaka"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Skicka"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Skicka"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Rapportera skadad webbplats"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Orsak till skadad webbplats"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Berätta vad du tycker"; diff --git a/DuckDuckGo/sv.lproj/Localizable.strings b/DuckDuckGo/sv.lproj/Localizable.strings index 63175f919e..84bbc992aa 100644 --- a/DuckDuckGo/sv.lproj/Localizable.strings +++ b/DuckDuckGo/sv.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Redigera"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Dela"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Botten"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Topp"; + /* No comment provided by engineer. */ "addWidget.button" = "Lägg till widget"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "Lås upp DuckDuckGo."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Blockera appspårare på din enhet"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Inaktiverad"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Aktiverad"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Aktivera App Tracking Protection så att vi kan blockera irriterande spårare i andra appar."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "App Tracking Protection har blockerat "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " i dina appar idag."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Nyss"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "Hantera spårare"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Vad har hänt?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Skicka"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Tack! Återkopplingen har skickats."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Inte nu"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Rapportera problem"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Återställ standardinställningar"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Skydd mot appspårning"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "Senaste försöket tilläts %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Senaste försöket blockerades %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Logga in"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.example.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Ditt bokmärke för %@ kommer att raderas"; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Bokmärke raderat"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Ta bort"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Videon spelades inte upp"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Välj din fråga i listan ..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "VÄLJ EN KATEGORI"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Om du delar mer information kan det hjälpa oss att lösa det här problemet"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "BERÄTTA VAD SOM HÄNDE"; +/* No comment provided by engineer. */ +"bucket: %@" = "bucket: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Senaste månaden"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Inga träffar hittades"; +/* No comment provided by engineer. */ +"Error" = "Fel"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Logga in"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Logga in igen för att återaktivera webbläsarens funktioner för Email Protection."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Fel i Email Protection"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Öppna inställningar"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Det verkar inte finnas ledigt lagringsutrymme på din enhet. Frigör utrymme för att fortsätta."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Inte tillräckligt med lagringsutrymme"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Stäng app"; + +/* Alert message */ +"error.preemptive-crash.body" = "Det är ett problem med appen och den behöver stängas ner. Öppna den på nytt för att fortsätta."; + +/* Alert title */ +"error.preemptive-crash.title" = "Problem med appen har upptäckts"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Favorit"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Hem"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Lägg till bokmärke"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "DuckDuckGo för Mac har hastigheten du behöver, webbläsarfunktionerna du förväntar dig och våra många förstklassiga integritetsfunktioner."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Öppna din inbjudan"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "DuckDuckGo för Mac är klar!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopiera"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "På din Windows-dator går du till:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "På din Mac går du till:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Windows kommer snart!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Letar du efter Windows-versionen?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Surfa privat med vår app för Mac"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "DuckDuckGo för Mac"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "DuckDuckGo-appen för dator"; +"mac-waitlist.title" = "DuckDuckGo-app för Mac"; /* No comment provided by engineer. */ "menu.button.hint" = "Bläddra-meny"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Redigera"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "OK"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Cookies hanteras"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Kan inte hitta appen som krävs för att öppna den här länken"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Ange vilken app som inte fungerar på din enhet."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Webbplatser använder kakor för att hålla dig inloggad. Om du brandsäkrar en webbplats kommer kakor inte att raderas och du förblir inloggad även efter att du har använt brännarknappen. Vi blockerar fortfarande tredje parters spårare som finns på brandsäkrade webbplatser."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Vilken webbplats är skadad?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "”%@” kommer inte längre att få tillgång till dina synkroniserade data."; + /* Accessibility label on remove button */ "tab.close.home" = "Stäng hemfliken"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Ljudet bearbetas på enheten. Det lagras inte och delas inte med någon, inte ens DuckDuckGo."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Tillåt aviseringar"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Öppna din inbjudan"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopiera"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Inbjudningskod"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Steg %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Du är inbjuden!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Ställ dig i den privata väntelistan"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Går med i väntelista ..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Dela länk"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "MEDDELA MIG"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Vill du få ett meddelande när det är din tur?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Nej tack"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Vi kan meddela dig när det är din tur, men meddelanden är för närvarande avstängda för DuckDuckGo."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Du behöver inte dela någon personlig information för att ställa dig på väntelistan. Du reserverar din plats i kön med en tidsstämpel som bara finns på din enhet, så att vi kan meddela dig när det är din tur."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Du står på listan!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "Nedladdning tillgänglig"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Du är inbjuden!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Favorit borttagen"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "Ett meddelande från %@:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Testa DuckDuckGo för Windows!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "Gå till den här webbadressen på din Windows-enhet för att ladda ner:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "Öppna installationsprogrammet för DuckDuckGo i Nerladdningar, välj Installera och ange din inbjudningskod."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Är du redo att använda DuckDuckGo på Windows?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Letar du efter Mac-versionen?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Få tidigare tillgång och prova DuckDuckGo för Windows!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Vi skickar ett meddelande till dig när ditt exemplar av DuckDuckGo för Mac är klar att laddas ner. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Din inbjudan att prova DuckDuckGo för Mac visas här. Kom tillbaka igen snart. Vi kan också skicka dig ett meddelande när det är din tur."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Vi skickar ett meddelande till dig när ditt exemplar av DuckDuckGo för Mac är klar att laddas ner."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Surfa privat med vår app för Windows"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Du har fått en inbjudan!\n\nÄr du redo att använda DuckDuckGo på Windows?\n\nSteg 1\nGå till den här webbadressen på din Windows-enhet för att ladda ner:\nhttps://duckduckgo.com/windows\n\nSteg 2\nÖppna installationsprogrammet för DuckDuckGo i Nerladdningar, välj Installera och ange din inbjudningskod.\n\nInbjudningskod: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Är du redo att börja surfa privat på Windows?\n\nLadda ner genom att gå till den här webbadressen på din dator:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "DuckDuckGo för Windows har allt du behöver för att surfa med högre integritet – privat sökning, spårningsblockering, tvingad kryptering och blockering av popup-cookies – och fler förstklassiga skydd är på gång."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "DuckDuckGo-app för Windows"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Skaffa DuckDuckGo för Windows!"; + diff --git a/DuckDuckGo/sv.lproj/Settings.strings b/DuckDuckGo/sv.lproj/Settings.strings index 1313eaac44..50d25a1314 100644 --- a/DuckDuckGo/sv.lproj/Settings.strings +++ b/DuckDuckGo/sv.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Textstorlek"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Rubrik"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "App-start"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Global Privacy Control (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Lägg till"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Avsluta app, inaktiv i 15 minuter"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Förhandsvisning vid nedhållning"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Surfa privat med vår app för Windows"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Integritetsskydd aktiverat för alla webbplatser"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Berätta vad du tycker"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Adressfältsläge"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Adressfältsläge"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "Låt DuckDuckGo hantera popup-fönster för godkännande av cookies"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "Om DuckDuckGo"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Topp"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "Mer från DuckDuckGo"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Synkronisering"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Surfa privat med vår app för Mac "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Etikett"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "DuckDuckGo-app för Windows"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Textstorlek"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Lägg till app i din Dock"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "DuckDuckGo-appen för dator"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "DuckDuckGo-app för Mac"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Ny flik"; diff --git a/DuckDuckGo/tr.lproj/Feedback.strings b/DuckDuckGo/tr.lproj/Feedback.strings index 13e4b8fdd1..c16a94b613 100644 --- a/DuckDuckGo/tr.lproj/Feedback.strings +++ b/DuckDuckGo/tr.lproj/Feedback.strings @@ -28,9 +28,6 @@ /* Class = "UIBarButtonItem"; title = "Back"; ObjectID = "JF8-Ow-zXL"; */ "JF8-Ow-zXL.title" = "Geri"; -/* Class = "UIBarButtonItem"; title = "Submit"; ObjectID = "jr6-Al-4fr"; */ -"jr6-Al-4fr.title" = "Gönder"; - /* Class = "UIButton"; normalTitle = "Submit"; ObjectID = "lsB-Kq-U8p"; */ "lsB-Kq-U8p.normalTitle" = "Gönder"; @@ -58,9 +55,6 @@ /* Class = "UINavigationItem"; title = "Report Broken Site"; ObjectID = "WjT-HM-yim"; */ "WjT-HM-yim.title" = "Hatalı Siteyi Bildir"; -/* Class = "UILabel"; text = "Broken Site Reason"; ObjectID = "Wx3-Vb-ItS"; */ -"Wx3-Vb-ItS.text" = "Bozuk Site Sebebi"; - /* Class = "UINavigationItem"; title = "Share Feedback"; ObjectID = "Xb0-Zu-opM"; */ "Xb0-Zu-opM.title" = "Geri Bildirim Paylaş"; diff --git a/DuckDuckGo/tr.lproj/Localizable.strings b/DuckDuckGo/tr.lproj/Localizable.strings index 6b694dd10b..6db2f8b8e6 100644 --- a/DuckDuckGo/tr.lproj/Localizable.strings +++ b/DuckDuckGo/tr.lproj/Localizable.strings @@ -1,6 +1,9 @@ /* No comment provided by engineer. */ "%@" = "%@"; +/* No comment provided by engineer. */ +"%@ [%@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)" = "%1$@ [%2$@](https://form.asana.com/?k=_wNLt6YcT5ILpQjDuW0Mxw&d=137249556945)"; + /* Buton label for Edit action */ "action.generic.edit" = "Düzenle"; @@ -103,6 +106,12 @@ /* Share action */ "action.title.share" = "Paylaş"; +/* Settings label for bottom position for the address bar */ +"address.bar.bottom" = "Alt"; + +/* Settings label for top position for the address bar */ +"address.bar.top" = "Top"; + /* No comment provided by engineer. */ "addWidget.button" = "Widget Ekle"; @@ -142,6 +151,225 @@ /* Shown on authentication screen */ "app.authentication.unlock" = "DuckDuckGo'nun kilidini açın."; +/* First part of about page content (note the trailing space) */ +"appTP.about.content1" = "You’ve probably heard about companies like Google and Facebook tracking you behind the scenes on third-party websites. But did you know they also track your personal information through apps on your device?\n\nIn 2022, DuckDuckGo found that "; + +/* Second part of about page content (note the trailing space) */ +"appTP.about.content2" = "over 85% of free iOS apps tested contained hidden trackers from other companies."; + +/* Third part of about page content (note the leading space) */ +"appTP.about.content3" = " Of the 395 apps tested, 60% sent data to Google. This happens even while you’re not using your device.\n\nTrackers in apps may have access to a lot more information than their website tracker cousins, such as your location down to which floor of a building you're on, how often you play games while at work, and when and how long you sleep each day. Even if you haven’t given apps explicit permission to collect data, they can still take it without your knowledge.\n\nTracking networks like Facebook and Google use these little pieces of information to build a digital profile about you. With it, tracking networks can manipulate what you see online and allow advertisers to bid on access to you based on your data.\n\nTrackers in apps is a BIG problem for privacy. But DuckDuckGo has a solution that can help.\n\nWhen enabled in the DuckDuckGo Privacy Browser app, App Tracking Protection blocks many trackers in other apps, not just the trackers we find on websites when you browse. These dual layers of protection reduce what companies know about you overall, so you can use your apps with more peace of mind, knowing you’re more protected."; + +/* Navigation Title for AppTP about page */ +"appTP.about.navTitle" = "About App Trackers"; + +/* Title for AppTP about page */ +"appTP.about.title" = "What Are App Trackers?"; + +/* Title for 'Report an Issue' button in the activity view. */ +"appTP.activityView.reportIssue" = "Report Issue"; + +/* Text label for switch that turns blocking on or off for a tracker */ +"appTP.blockTrackerText" = "Block this Tracker"; + +/* Detail string describing what AppTP is */ +"appTP.cell.detail" = "Cihazınızdaki uygulama izleyicileri engelleyin"; + +/* String indicating AppTP is disabled when viewed from the settings screen */ +"appTP.cell.disabled" = "Devre Dışı"; + +/* String indicating AppTP is enabled when viewed from the settings screen */ +"appTP.cell.enabled" = "Etkin"; + +/* Info string informing the user what App Tracking Protection does. */ +"appTP.empty.disabled.info" = "Diğer uygulamalardaki sinir bozucu izleyicileri engelleyebilmek için App Tracking Protection özelliğini etkinleştirin."; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.heading" = "We’re blocking hidden trackers"; + +/* Info string informing the user we're looking for trackers in other apps. */ +"appTP.empty.enabled.info" = "Come back soon to see a list of all the app trackers we’ve blocked."; + +/* First answer for AppTP FAQ page */ +"appTP.faq.answer1" = "App Tracking Protection blocks app trackers from other companies, like when Facebook tries to track you in a banking app. Companies may still track you in apps they own."; + +/* Second answer for AppTP FAQ page */ +"appTP.faq.answer2" = "Yes! App Tracking Protection works across all apps on your device to block the most common hidden trackers we find trying to collect your personal info."; + +/* Third answer for AppTP FAQ page */ +"appTP.faq.answer3" = "We currently only block the most common trackers that we find on iOS. This helps us to comprehensively test App Tracking Protection and lower frequency of app breakage, while blocking up to 70% of all tracking requests."; + +/* Fourth answer for AppTP FAQ page */ +"appTP.faq.answer4" = "You’ll be asked to set up a virtual private network (VPN) connection, but you don't need to install a VPN app for App Tracking Protection to work.\n\nThis permission, which works only on your device, allows App Tracking Protection to monitor network traffic so that it can block known trackers."; + +/* Fifth answer for AppTP FAQ page */ +"appTP.faq.answer5" = "You can use App Tracking Protection at the same time as using an IKEv2 protocol VPN app on an iOS device. You won’t be able to use App Tracking Protection on an iOS device if you’re using a VPN app that uses a different type of protocol, like WireGuard or OpenVPN type VPNs."; + +/* Sixth answer for AppTP FAQ page */ +"appTP.faq.answer6" = "A VPN sends your data from the device to its own server, where it secures and anonymizes your data from prying eyes. However, this allows the VPN company to see your network traffic.\n\nApp Tracking Protection is different. Instead of sending your data to a VPN server, App Tracking Protection works only on your device, sitting between your apps and the servers they talk to.\n\nWhenever App Tracking Protection recognizes a known tracker, it blocks the tracker from sending personal information (such as your IP address, activity, and device details) off your device. All other traffic reaches its destination, so your apps work normally."; + +/* Seventh answer for AppTP FAQ page */ +"appTP.faq.answer7" = "App Tracking Protection works only on your device and doesn’t send your data off your device to DuckDuckGo. We don’t collect or store any data from your apps."; + +/* First question for AppTP FAQ page */ +"appTP.faq.question1" = "How does App Tracking Protection work?"; + +/* Second question for AppTP FAQ page */ +"appTP.faq.question2" = "Does App Tracking Protection block trackers in all apps on my device?"; + +/* Third question for AppTP FAQ page */ +"appTP.faq.question3" = "Does App Tracking Protection block all app trackers?"; + +/* Fourth question for AppTP FAQ page */ +"appTP.faq.question4" = "Why does App Tracking Protection use a VPN connection?"; + +/* Fifth question for AppTP FAQ page */ +"appTP.faq.question5" = "Will App Tracking Protection work if I also use a VPN app?"; + +/* Sixth question for AppTP FAQ page */ +"appTP.faq.question6" = "How is App Tracking Protection different from a VPN?"; + +/* Seventh question for AppTP FAQ page */ +"appTP.faq.question7" = "Is my data private?"; + +/* Title for AppTP FAQ page */ +"appTP.faq.title" = "App Tracking Protection FAQ"; + +/* Do not translate. StringsDict entry -- Count part of string 'App Tracking Protection blocked x tracking attempts today' */ +"appTP.home.blockedCount" = "appTP.home.blockedCount"; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the trailing space) */ +"appTP.home.blockedPrefix" = "App Tracking Protection engelledi: "; + +/* Prefix of string 'App Tracking Protection blocked x tracking attempts today' (note the leading space) */ +"appTP.home.blockedSuffix" = " bugün uygulamalarınızda."; + +/* Prefix of string 'App Tracking Protection disabled. Tap to re-enable.' (note the trailing space) */ +"appTP.home.disabledPrefix" = "App Tracking Protection disabled. "; + +/* Suffix of string 'App Tracking Protection disabled. Tap to re-enable.' */ +"appTP.home.disabledSuffix" = "Tap to continue blocking tracking attempts across your apps."; + +/* Text indicating the tracking event occured 'just now'. Example: Last attempt 'just now' */ +"appTP.justNow" = "Şimdi"; + +/* View to manage trackers for AppTP. Allows the user to turn trackers on or off. */ +"appTP.manageTrackers" = "İzleyicileri Yönet"; + +/* Button title for AppTP onboarding */ +"appTP.onboarding.continueButton" = "Continue"; + +/* Button title for AppTP onboarding to enable AppTP */ +"appTP.onboarding.enableeButton" = "Enable App Tracking Protection"; + +/* Button title for AppTP onboarding to learn more about AppTP */ +"appTP.onboarding.learnMoreButton" = "Learn More"; + +/* First part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info1" = "Over 85% of free iOS apps"; + +/* Second part of info on the first AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page1Info2" = " we’ve tested allow other companies to track your personal information, even when you’re sleeping."; + +/* Third part of info on the first AppTP onboarding page */ +"appTP.onboarding.page1Info3" = "See who we catch trying to track you in your apps and take back control."; + +/* First part of info on the second AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page2Info1" = "App Tracking Protection "; + +/* Second part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info2" = "detects and blocks app trackers from other companies,"; + +/* Third part of info on the second AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page2Info3" = " like when Google attempts to track you in a health app."; + +/* Fourth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info4" = "It’s free,"; + +/* Fifth part of info on the second AppTP onboarding page (note the leading and trailing space) */ +"appTP.onboarding.page2Info5" = " and you can enjoy your apps as you normally would. Working in the background, it helps "; + +/* Sixth part of info on the second AppTP onboarding page */ +"appTP.onboarding.page2Info6" = "protect you night and day."; + +/* First part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info1" = "App Tracking Protection is not a VPN."; + +/* Second part of info on the third AppTP onboarding page (note the leading space) */ +"appTP.onboarding.page3Info2" = " However, your device will recognize it as one. This is because it uses a local VPN connection to work."; + +/* Third part of info on the third AppTP onboarding page (note the trailing space) */ +"appTP.onboarding.page3Info3" = "App Tracking Protection is different. "; + +/* Fourth part of info on the third AppTP onboarding page */ +"appTP.onboarding.page3Info4" = "It never routes app data through an external server."; + +/* Title for first AppTP onboarding page */ +"appTP.onboarding.title1" = "One easy step for better app privacy!"; + +/* Title for second AppTP onboarding page */ +"appTP.onboarding.title2" = "How does it work?"; + +/* Title for third AppTP onboarding page */ +"appTP.onboarding.title3" = "Who sees your data?"; + +/* Breakage report app name label */ +"appTP.report.appLabel" = "Which app is having issues?"; + +/* Breakage report app name placeholder */ +"appTP.report.appPlaceholder" = "App name"; + +/* Breakage report category label */ +"appTP.report.categoryLabel" = "Ne oluyor?"; + +/* Breakage report comment label */ +"appTP.report.commentLabel" = "Comments"; + +/* Breakage report comment placeholder */ +"appTP.report.commentPlaceholder" = "Add additional details"; + +/* Breakage report footer explaining what is collected in the breakage report */ +"appTP.report.footer" = "In addition to the details entered into this form, your app issue report will contain:\n• A list of trackers blocked in the last 10 min\n• Whether App Tracking Protection is enabled\n• Aggregate DuckDuckGo app diagnostics"; + +/* Breakage report submit button */ +"appTP.report.submit" = "Gönder"; + +/* Breakage report form title */ +"appTP.report.title" = "Report Issue"; + +/* Breakage report succcess message */ +"appTP.report.toast" = "Teşekkürler! Geri bildirim gönderildi."; + +/* Cancel button for 'Report an Issue' alert. */ +"appTP.reportAlert.cancel" = "Şimdi Değil"; + +/* Confirm button for 'Report an Issue' alert. */ +"appTP.reportAlert.confirm" = "Sorun Bildir"; + +/* Message for 'Report an Issue' alert. */ +"appTP.reportAlert.message" = "Let us know if you disabled App Tracking Protection for this specific tracker because it caused app issues. Your feedback helps us improve!"; + +/* Title for 'Report an Issue' alert. */ +"appTP.reportAlert.title" = "Report Issue?"; + +/* Toast notification diplayed after restoring the blocklist to default settings */ +"appTP.restoreDefaultsToast" = "Default settings restored"; + +/* Button to restore the blocklist to its default state. */ +"appTP.restoreDefualts" = "Varsayılanları Geri Yükle"; + +/* Title for the App Tracking Protection feature */ +"appTP.title" = "Uygulama İzleme Koruması"; + +/* Text indicating when the tracker was last allowed. Example: Last attempt allowed (timeString) */ +"appTP.trackerAllowedTimestamp" = "İzin verilen son girişim: %@"; + +/* Text indicating when the tracker was last blocked. Example: Last attempt blocked (timeString) */ +"appTP.trackerBlockedTimestamp" = "Engellenen son girişim: %@"; + +/* Do not translate. StringsDict entry -- Subtitle for tracking attempts in App Tracking Protection Activity View. Example: (count) tracking attempts */ +"appTP.trackingattempts" = "appTP.trackingattempts"; + /* Authentication Alert Sign In Button */ "auth.alert.login.button" = "Oturum Aç"; @@ -442,6 +670,15 @@ /* Placeholder in the add bookmark form */ "bookmark.address.placeholder" = "www.example.com"; +/* Delete bookmark alert message */ +"bookmark.delete.alert.message" = "Bu, \"%@\" için yer işaretinizi silecektir"; + +/* Delete bookmark alert title */ +"bookmark.delete.alert.title" = "Delete?"; + +/* The message shown after a bookmark has been deleted */ +"bookmark.deleted.toast" = "Yer işareti silindi"; + /* Delete bookmark folder alert delete button */ "bookmark.deleteFolderAlert.deleteButton" = "Sil"; @@ -538,9 +775,21 @@ /* Broken Site Category */ "brokensite.category.videos" = "Video oynatılamadı"; +/* Broken Site Category Placeholder */ +"brokensite.categoryPlaceholder" = "Listeden yaşadığınız sorunu seçin..."; + +/* Broken Site Category Section Title */ +"brokensite.categoryTitle" = "BİR KATEGORİ SEÇİN"; + +/* Broken Site Comment Placeholder */ +"brokensite.commentPlaceholder" = "Daha fazla ayrıntı paylaşmak, bu sorunu çözmemize yardımcı olabilir"; + /* Broken Site Section Title */ "brokensite.sectionTitle" = "NE OLDUĞUNU AÇIKLAYIN"; +/* No comment provided by engineer. */ +"bucket: %@" = "kova: %@"; + /* Title for a section containing only items from past month */ "date.range.past-month" = "Geçen ay"; @@ -772,6 +1021,39 @@ /* Empty search placeholder on bookmarks search */ "empty.search" = "Eşleşme bulunamadı"; +/* No comment provided by engineer. */ +"Error" = "Hata"; + +/* Button title to Sign In */ +"error.email-protection-sign-in.action" = "Oturum Aç"; + +/* Alert message */ +"error.email-protection-sign-in.body" = "Üzgünüz. Bu tarayıcıda E-mail Protection özelliklerini yeniden etkinleştirmek için lütfen tekrar oturum açın."; + +/* Alert title */ +"error.email-protection-sign-in.title" = "Email Protection Hatası"; + +/* Button title to open device settings */ +"error.insufficient-disk-space.action" = "Ayarları Aç"; + +/* Alert message */ +"error.insufficient-disk-space.body" = "Cihazınızın depolama alanı bitmiş gibi görünüyor. Devam etmek için lütfen yer açın."; + +/* Alert title */ +"error.insufficient-disk-space.title" = "Yeterli depolama alanı yok"; + +/* Button title that is shutting down the app */ +"error.preemptive-crash.action" = "Uygulamayı kapat"; + +/* Alert message */ +"error.preemptive-crash.body" = "Görünüşe göre uygulamayla ilgili bir sorun var ve kapatılması gerekiyor. Devam etmek için lütfen yeniden açın."; + +/* Alert title */ +"error.preemptive-crash.title" = "Uygulama sorunu tespit edildi"; + +/* Generic error message on a dialog for when the cause is not known. */ +"error.unknown.try.again" = "An unknown error has occurred"; + /* No comment provided by engineer. */ "favorite" = "Favori"; @@ -991,6 +1273,18 @@ /* Home tab title */ "homeTab.title" = "Ana Sayfa"; +/* OK title for invite screen alert dismissal button */ +"invite.alert.ok.button" = "OK"; + +/* Continue button on an invite dialog */ +"invite.dialog.continue.button" = "Continue"; + +/* Get Started button on an invite dialog */ +"invite.dialog.get.started.button" = "Get Started"; + +/* Message to show after user enters an unrecognized invite code */ +"invite.dialog.unrecognized.code.message" = "We didn’t recognize this Invite Code."; + /* No comment provided by engineer. */ "keyCommandAddBookmark" = "Yer İmi ekle"; @@ -1057,15 +1351,15 @@ /* Summary text for the macOS browser waitlist */ "mac-browser.waitlist.summary" = "Mac için DuckDuckGo, ihtiyacınız olan hız ve beklediğiniz tarama özelliklerinin yanı sıra sınıfındaki en iyi gizlilik özelliklerini (Privacy Essentials) sunuyor."; -/* Body text for the macOS waitlist notification */ -"mac-waitlist.available.notification.body" = "Davetiyenizi açın"; - /* Title for the macOS waitlist notification */ "mac-waitlist.available.notification.title" = "Mac için DuckDuckGo hazır!"; /* Title for the copy action */ "mac-waitlist.copy" = "Kopyala"; +/* Description text above the Share Link button */ +"mac-waitlist.join-waitlist-screen.on-your-computer-go-to" = "Windows bilgisayarınızda şu adrese gidin:"; + /* Description text above the Share Link button */ "mac-waitlist.join-waitlist-screen.on-your-mac-go-to" = "Mac cihazınızda şu adrese gidin:"; @@ -1078,6 +1372,9 @@ /* Disclaimer for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.windows" = "Windows sürümü çok yakında!"; +/* Title for the macOS waitlist button redirecting to Windows waitlist */ +"mac-waitlist.join-waitlist-screen.windows-waitlist" = "Windows Sürümünü mü arıyorsunuz?"; + /* Title for the settings subtitle */ "mac-waitlist.settings.browse-privately" = "Mac için uygulamamızla internette gezinirken gizliliğinizi koruyun"; @@ -1088,7 +1385,7 @@ "mac-waitlist.share-sheet.title" = "Mac için DuckDuckGo"; /* Title for the Mac Waitlist feature */ -"mac-waitlist.title" = "DuckDuckGo Masaüstü Uygulaması"; +"mac-waitlist.title" = "Mac için DuckDuckGo Uygulaması"; /* No comment provided by engineer. */ "menu.button.hint" = "Göz Atma Menüsü"; @@ -1105,9 +1402,81 @@ /* Edit button */ "navigation.title.edit" = "Düzenle"; +/* String indicating NetP is connected when viewed from the settings screen */ +"netP.cell.connected" = "Connected"; + +/* String indicating NetP is disconnected when viewed from the settings screen */ +"netP.cell.disconnected" = "Not connected"; + +/* Title for the Network Protection feature */ +"netP.title" = "Network Protection"; + +/* Message for the network protection invite dialog */ +"network.protection.invite.dialog.message" = "Enter your invite code to get started."; + +/* Title for the network protection invite screen */ +"network.protection.invite.dialog.title" = "You're invited to try Network Protection"; + +/* Prompt for the network protection invite code text field */ +"network.protection.invite.field.prompt" = "Invite Code"; + +/* Message explaining that netP is invite only */ +"network.protection.invite.only.message" = "DuckDuckGo Network Protection is currently invite-only."; + +/* Message for the network protection invite success view */ +"network.protection.invite.success.message" = "Hide your location from websites and conceal your online activity from Internet providers and others on your network."; + +/* Title for the network protection invite success view */ +"network.protection.invite.success.title" = "Success! You’re in."; + +/* The label for when NetP VPN is connected plus the length of time connected as a formatter HH:MM:SS string */ +"network.protection.status.connected.format" = "Connected - %@"; + +/* The label for the NetP VPN when connecting */ +"network.protection.status.connecting" = "Connecting..."; + +/* The label for the NetP VPN when disconnected */ +"network.protection.status.disconnected" = "Not connected"; + +/* The label for the NetP VPN when disconnecting */ +"network.protection.status.disconnecting" = "Disconnecting..."; + +/* Message label text for the netP status view */ +"network.protection.status.header.message" = "DuckDuckGo's VPN secures all of your device's Internet traffic anytime, anywhere."; + +/* Header title label text for the status view when netP is disconnected */ +"network.protection.status.header.title.off" = "Network Protection is Off"; + +/* Header title label text for the status view when netP is connected */ +"network.protection.status.header.title.on" = "Network Protection is On"; + +/* The status view 'Share Feedback' button which is shown inline on the status view after the \(netPInviteOnlyMessage) text */ +"network.protection.status.menu.share.feedback" = "Share Feedback"; + +/* Connection details label shown in NetworkProtection's status view. */ +"network.protection.status.view.connection.details" = "Connection Details"; + +/* Generic connection failed error message shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.message" = "Please try again later."; + +/* Generic connection failed error title shown in NetworkProtection's status view. */ +"network.protection.status.view.error.connection.failed.title" = "Failed to Connect."; + +/* IP Address label shown in NetworkProtection's status view. */ +"network.protection.status.view.ip.address" = "IP Address"; + +/* Location label shown in NetworkProtection's status view. */ +"network.protection.status.view.location" = "Location"; + +/* Title label text for the status view when netP is disconnected */ +"network.protection.status.view.title" = "Network Protection"; + /* Do not translate - stringsdict entry */ "number.of.tabs" = "number.of.tabs"; +/* No comment provided by engineer. */ +"Ok" = "Tamam"; + /* Text displayed on notification appearing in the address bar when the browser dismissed the cookie popup automatically rejecting it */ "omnibar.notification.cookies-managed" = "Yönetilen Çerezler"; @@ -1147,6 +1516,18 @@ /* ’Link’ is link on a website */ "open.externally.failed" = "Bu bağlantıyı açmak için gereken uygulama bulunamıyor"; +/* No comment provided by engineer. */ +"Please enter which app on your device is broken." = "Lütfen cihazınızda hangi uygulamanın bozuk olduğunu girin."; + +/* Activate button */ +"pm.activate" = "Reactivate"; + +/* Cancel button */ +"pm.cancel" = "Cancel"; + +/* Deactivate button */ +"pm.deactivate" = "Deactivate"; + /* No comment provided by engineer. */ "preserveLogins.domain.list.footer" = "Web siteleri oturumunuzu açık tutmak için çerezler kullanır. Bir siteyi Korumalı hâle getirdiğinizde çerezler silinmez ve Yangın Düğmesi'ni kullandıktan sonra bile oturumunuz açık kalır. Korumalı web sitelerinde bulunan üçüncü taraf izleyicileri yine engelleriz."; @@ -1237,6 +1618,9 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Hangi web sitesi hatalı?"; +/* No comment provided by engineer. */ +"sync.remove-device.message" = "\"%@\" artık senkronize edilmiş verilerinize erişemeyecektir."; + /* Accessibility label on remove button */ "tab.close.home" = "Ana sekmeyi kapat"; @@ -1309,6 +1693,57 @@ /* Voice-search footer note with on-device privacy warning */ "voiceSearch.footer.note" = "Ses cihazda işlenir. Saklanmaz ve DuckDuckGo da dâhil olmak üzere kimseyle paylaşılmaz."; +/* Title for the button to enable push notifications in system settings */ +"waitlist.allow-notifications" = "Bildirimlere İzin Ver"; + +/* Body text for the waitlist notification */ +"waitlist.available.notification.body" = "Davetiyenizi açın"; + +/* Title for the copy action */ +"waitlist.copy" = "Kopyala"; + +/* Label text for the invite code */ +"waitlist.invite-code" = "Davet Kodu"; + +/* Step title on the invite screen */ +"waitlist.invite-screen.step.title" = "Adım %d"; + +/* Title for the invite code screen */ +"waitlist.invite-screen.youre-invited" = "Davetlisiniz!"; + +/* Title for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.join" = "Özel Bekleme Listesine Katılın"; + +/* Temporary status text for the Join Waitlist screen */ +"waitlist.join-waitlist-screen.joining" = "Bekleme listesine katılıyorsunuz..."; + +/* Title for the Share Link button */ +"waitlist.join-waitlist-screen.share-link" = "Bağlantıyı paylaş"; + +/* Notification text for the waitlist */ +"waitlist.joined.no-notification.get-notification" = "BANA BİLDİR"; + +/* Title for the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.get-notification-confirmation-title" = "Sıra size geldiğinde bildirim gelsin mi?"; + +/* Cancel button in the alert to confirm enabling notifications */ +"waitlist.joined.no-notification.no-thanks" = "Hayır Teşekkürler"; + +/* Text used for the Notifications Disabled state */ +"waitlist.notification.disabled" = "Sıra size geldiğinde bunu bildirebiliriz, ancak bildirimler şu anda DuckDuckGo için devre dışı bırakılmış."; + +/* Privacy disclaimer for the Waitlist feature */ +"waitlist.privacy-disclaimer" = "Bekleme listesine katılmak için kişisel bilgilerinizi paylaşmanız gerekmez. Yerinizi yalnızca cihazınıza yerleştirilen bir zaman damgası ile güvence altına alacaksınız. Böylece sıranız geldiğinde sizi bilgilendirebiliriz."; + +/* Title for the queue screen */ +"waitlist.queue-screen.on-the-list" = "Listedesiniz!"; + +/* Title for the settings subtitle */ +"waitlist.settings.download-available" = "İndirme mevcut"; + +/* Title for the share sheet entry */ +"waitlist.share-sheet.title" = "Davetlisiniz!"; + /* Confirmation message */ "web.url.remove.favorite.done" = "Favori kaldırıldı"; @@ -1333,3 +1768,48 @@ /* Alert title explaining the message is shown by a website */ "webJSAlert.website-message.format" = "%@ size bir mesaj gönderdi:"; +/* Title for the Windows waitlist notification */ +"windows-waitlist.available.notification.title" = "Windows için DuckDuckGo'yu deneyin!"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-1.description" = "İndirmek için Windows cihazınızda bu URL'yi ziyaret edin:"; + +/* Description on the invite screen */ +"windows-waitlist.invite-screen.step-2.description" = "İndirilenler'de DuckDuckGo Yükleyici'yi açın, Yükle'yi seçin ve ardından davet kodunuzu girin."; + +/* Subtitle for the Windows Waitlist Invite screen */ +"windows-waitlist.invite-screen.subtitle" = "Windows'ta DuckDuckGo'yu kullanmaya hazır mısınız?"; + +/* Title for the Windows waitlist button redirecting to Mac waitlist */ +"windows-waitlist.join-waitlist-screen.mac-waitlist" = "Mac Sürümünü mü arıyorsunuz?"; + +/* Title for the Join Windows Waitlist screen */ +"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Windows için DuckDuckGo'yu denemek için erken erişim elde edin!"; + +/* Message for the alert to confirm enabling notifications */ +"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Windows için DuckDuckGo kopyanız indirilmeye hazır olduğunda size bir bildirim göndereceğiz. "; + +/* Label text for the Joined Waitlist state with notifications declined */ +"windows-waitlist.joined.notifications-declined" = "Windows için DuckDuckGo'yu deneme davetiniz buraya gelecek. Kısa süre içinde tekrar kontrol edin ya da sıranız geldiğinde size bir bildirim gönderebiliriz."; + +/* Label text for the Joined Waitlist state with notifications enabled */ +"windows-waitlist.joined.notifications-enabled" = "Windows için DuckDuckGo kopyanız indirilmeye hazır olduğunda size bir bildirim göndereceğiz."; + +/* Title for the settings subtitle */ +"windows-waitlist.settings.browse-privately" = "Windows uygulamamızla gizliliğinizi koruyarak gezinin"; + +/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ +"windows-waitlist.share-sheet.invite-code-message" = "Davetlisiniz!\n\nWindows'ta DuckDuckGo'yu kullanmaya hazır mısınız?\n\n1. Adım\nİndirmek için Windows cihazınızda şu URL'yi ziyaret edin:\nhttps://duckduckgo.com/windows\n\n2. Adım\nİndirilenler'de DuckDuckGo Installer'ı açın, Yükle'yi seçin ve davet kodunuzu girin.\n\nDavet kodu: %@"; + +/* Message used when sharing to iMessage */ +"windows-waitlist.share-sheet.message" = "Windows'ta gizli olarak gezinmeye başlamaya hazır mısınız?\n\nİndirmek için Bilgisayarınızda şu URL'yi ziyaret edin:\nhttps://duckduckgo.com/windows"; + +/* Summary text for the Windows browser waitlist */ +"windows-waitlist.summary" = "Windows için DuckDuckGo, daha fazla gizlilikle gezinmek için ihtiyacınız olan her şeye sahiptir: gizli arama, izleyici engelleme, zorunlu şifreleme ve çerez açılır penceresi engelleme. Ayrıca, sınıfının en iyisi daha fazla koruma da yolda."; + +/* Title for the Windows Waitlist feature */ +"windows-waitlist.title" = "Windows için DuckDuckGo Uygulaması"; + +/* Title for the Windows browser download link page */ +"windows-waitlist.waitlist-download-screen.try-duckduckgo-for-windows" = "Windows için DuckDuckGo'yu edinin!"; + diff --git a/DuckDuckGo/tr.lproj/Settings.strings b/DuckDuckGo/tr.lproj/Settings.strings index 02483ab66d..f15463e3e5 100644 --- a/DuckDuckGo/tr.lproj/Settings.strings +++ b/DuckDuckGo/tr.lproj/Settings.strings @@ -37,6 +37,9 @@ /* Class = "UILabel"; text = "Text Size"; ObjectID = "9Ko-0g-T3h"; */ "9Ko-0g-T3h.text" = "Metin Boyutu"; +/* Class = "UILabel"; text = "Title"; ObjectID = "9kt-6R-XiZ"; */ +"9kt-6R-XiZ.text" = "Title"; + /* Class = "UILabel"; text = "App Launch"; ObjectID = "13n-KI-KLq"; */ "13n-KI-KLq.text" = "Uygulamayı Başlatma"; @@ -73,6 +76,12 @@ /* Class = "UILabel"; text = "Global Privacy Control (GPC)"; ObjectID = "cW7-OM-2oW"; */ "cW7-OM-2oW.text" = "Küresel Gizlilik Kontrolü (GPC)"; +/* Class = "UIBarButtonItem"; title = "Add"; ObjectID = "CxT-QK-iVn"; */ +"CxT-QK-iVn.title" = "Ekle"; + +/* Class = "UILabel"; text = "Hide your location and conceal your online activity"; ObjectID = "Cyw-ir-cSK"; */ +"Cyw-ir-cSK.text" = "Hide your location and conceal your online activity"; + /* Class = "UILabel"; text = "App Exit, Inactive for 15 Minutes"; ObjectID = "D0R-jp-UY8"; */ "D0R-jp-UY8.text" = "Uygulamadan Çık, 15 Dakika Boyunca İnaktif"; @@ -151,6 +160,9 @@ /* Class = "UILabel"; text = "Long-Press Previews"; ObjectID = "HLr-R8-xxF"; */ "HLr-R8-xxF.text" = "Uzun Basma Önizlemeleri"; +/* Class = "UILabel"; text = "Browse privately with our app for Windows"; ObjectID = "hoT-Nu-KXP"; */ +"hoT-Nu-KXP.text" = "Windows uygulamamızla gizliliğinizi koruyarak gezinin"; + /* Class = "UILabel"; text = "Privacy Protection enabled for all sites"; ObjectID = "Hu1-5i-vjL"; */ "Hu1-5i-vjL.text" = "Gizlilik Koruması tüm siteler için etkin"; @@ -163,6 +175,12 @@ /* Class = "UILabel"; text = "Share Feedback"; ObjectID = "m23-t6-9cb"; */ "m23-t6-9cb.text" = "Geri Bildirim Paylaş"; +/* Class = "UINavigationItem"; title = "Address Bar Position"; ObjectID = "mLn-1x-Fl5"; Note = "Fire button animation setting page title"; */ +"mLn-1x-Fl5.title" = "Adres Çubuğu Konumu"; + +/* Class = "UILabel"; text = "Address Bar Position"; ObjectID = "mqV-pf-NZ1"; Note = "Fire button animation settings item"; */ +"mqV-pf-NZ1.text" = "Adres Çubuğu Konumu"; + /* Class = "UILabel"; text = "Let DuckDuckGo manage cookie consent pop-ups"; ObjectID = "nX1-F1-Frd"; */ "nX1-F1-Frd.text" = "DuckDuckGo'nun çerez izni açılır pencerelerini yönetmesine izin verin"; @@ -175,15 +193,27 @@ /* Class = "UILabel"; text = "About DuckDuckGo"; ObjectID = "oM7-1o-9oY"; */ "oM7-1o-9oY.text" = "DuckDuckGo Hakkında"; +/* Class = "UILabel"; text = "Top"; ObjectID = "opn-JO-idF"; */ +"opn-JO-idF.text" = "Top"; + /* Class = "UITableViewSection"; headerTitle = "More From DuckDuckGo"; ObjectID = "OxE-MQ-uJk"; */ "OxE-MQ-uJk.headerTitle" = "DuckDuckGo'dan Daha Fazlası"; +/* Class = "UILabel"; text = "Sync"; ObjectID = "oXN-ez-gct"; */ +"oXN-ez-gct.text" = "Senkronizasyon"; + /* Class = "UILabel"; text = "Browse privately with our app for Mac "; ObjectID = "P0F-ts-ekd"; */ "P0F-ts-ekd.text" = "Mac için uygulamamızla internette gezinirken gizliliğinizi koruyun "; +/* Class = "UILabel"; text = "Network Protection"; ObjectID = "qah-gb-udB"; */ +"qah-gb-udB.text" = "Network Protection"; + /* Class = "UILabel"; text = "Label"; ObjectID = "qeN-SV-zy7"; */ "qeN-SV-zy7.text" = "Label"; +/* Class = "UILabel"; text = "DuckDuckGo Windows App"; ObjectID = "RQ8-H1-Ez1"; */ +"RQ8-H1-Ez1.text" = "DuckDuckGo Windows Uygulaması"; + /* Class = "UINavigationItem"; title = "Text Size"; ObjectID = "ssa-zd-L3T"; */ "ssa-zd-L3T.title" = "Metin Boyutu"; @@ -232,8 +262,8 @@ /* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ "yvj-LL-MiR.text" = "Uygulamayı Dock'a Ekle"; -/* Class = "UILabel"; text = "DuckDuckGo Desktop App"; ObjectID = "Yz9-17-qnn"; */ -"Yz9-17-qnn.text" = "DuckDuckGo Masaüstü Uygulaması"; +/* Class = "UILabel"; text = "DuckDuckGo Mac App"; ObjectID = "Yz9-17-qnn"; */ +"Yz9-17-qnn.text" = "DuckDuckGo Mac Uygulaması"; /* Class = "UILabel"; text = "New Tab"; ObjectID = "Zpg-h0-rYv"; */ "Zpg-h0-rYv.text" = "Yeni Sekme"; diff --git a/PacketTunnelProvider/bg.lproj/InfoPlist.strings b/PacketTunnelProvider/bg.lproj/InfoPlist.strings new file mode 100644 index 0000000000..0c817afd04 --- /dev/null +++ b/PacketTunnelProvider/bg.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Всички права запазени."; + diff --git a/PacketTunnelProvider/bg.lproj/Localizable.strings b/PacketTunnelProvider/bg.lproj/Localizable.strings index a71a759fe3..f27738834d 100644 --- a/PacketTunnelProvider/bg.lproj/Localizable.strings +++ b/PacketTunnelProvider/bg.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Неуспешно свързване на мрежовата защита. Моля, опитайте отново по-късно."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Мрежовата защита е прекъсната. Извършва се опит за повторно свързване..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Мрежовата защита е включена. Вашето местоположение и онлайн активност са защитени."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Трафикът на устройството се маршрутизира през %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/cs.lproj/InfoPlist.strings b/PacketTunnelProvider/cs.lproj/InfoPlist.strings new file mode 100644 index 0000000000..d2e68f59e8 --- /dev/null +++ b/PacketTunnelProvider/cs.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Všechna práva vyhrazena."; + diff --git a/PacketTunnelProvider/cs.lproj/Localizable.strings b/PacketTunnelProvider/cs.lproj/Localizable.strings index a71a759fe3..145708747e 100644 --- a/PacketTunnelProvider/cs.lproj/Localizable.strings +++ b/PacketTunnelProvider/cs.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Ochrana sítě se nepřipojila. Zkus to znovu později."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Ochrana sítě je přerušená. Probíhá pokus o opětovné připojení..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Ochrana sítě je zapnutá. Tvoje poloha a online aktivita jsou chráněné."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Směrování provozu zařízení přes %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/da.lproj/InfoPlist.strings b/PacketTunnelProvider/da.lproj/InfoPlist.strings new file mode 100644 index 0000000000..4f7da7af43 --- /dev/null +++ b/PacketTunnelProvider/da.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Alle rettigheder forbeholdes."; + diff --git a/PacketTunnelProvider/da.lproj/Localizable.strings b/PacketTunnelProvider/da.lproj/Localizable.strings index a71a759fe3..22eaacd202 100644 --- a/PacketTunnelProvider/da.lproj/Localizable.strings +++ b/PacketTunnelProvider/da.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Netværksbeskyttelse kunne ikke oprette forbindelse. Prøv igen senere."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Netværksbeskyttelse blev afbrudt. Forsøger at genoprette forbindelse ..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Netværksbeskyttelse er TIL. Din placering og onlineaktivitet er beskyttet."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Router enhedens trafik gennem %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/de.lproj/InfoPlist.strings b/PacketTunnelProvider/de.lproj/InfoPlist.strings new file mode 100644 index 0000000000..58524ab765 --- /dev/null +++ b/PacketTunnelProvider/de.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Alle Rechte vorbehalten."; + diff --git a/PacketTunnelProvider/de.lproj/Localizable.strings b/PacketTunnelProvider/de.lproj/Localizable.strings index a71a759fe3..70c3d9ce7b 100644 --- a/PacketTunnelProvider/de.lproj/Localizable.strings +++ b/PacketTunnelProvider/de.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Network Protection konnte keine Verbindung herstellen. Bitte versuche es zu einem späteren Zeitpunkt erneut."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Network Protection wurde unterbrochen. Versuche jetzt, die Verbindung wiederherzustellen ..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Network Protection ist aktiviert.Dein Standort und deine Online-Aktivitäten sind geschützt."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Geräteverkehr wird über %@ geleitet."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/el.lproj/InfoPlist.strings b/PacketTunnelProvider/el.lproj/InfoPlist.strings new file mode 100644 index 0000000000..bed0624dae --- /dev/null +++ b/PacketTunnelProvider/el.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Πνευματικά δικαιώματα © 2023 DuckDuckGo. Με επιφύλαξη κάθε νόμιμου δικαιώματος."; + diff --git a/PacketTunnelProvider/el.lproj/Localizable.strings b/PacketTunnelProvider/el.lproj/Localizable.strings index a71a759fe3..3a9739872d 100644 --- a/PacketTunnelProvider/el.lproj/Localizable.strings +++ b/PacketTunnelProvider/el.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Η σύνδεση της Προστασίας δικτύου απέτυχε. Ξαναδοκιμάστε αργότερα."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Η Προστασία δικτύου διακόπηκε. Γίνεται προσπάθεια επανασύνδεσης τώρα..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Η Προστασία δικτύου είναι Ενεργή. Η τοποθεσία και η διαδικτυακή δραστηριότητά σας προστατεύονται."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Δρομολόγηση κυκλοφορίας της συσκευής μέσω %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/es.lproj/InfoPlist.strings b/PacketTunnelProvider/es.lproj/InfoPlist.strings new file mode 100644 index 0000000000..3463c009cc --- /dev/null +++ b/PacketTunnelProvider/es.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Todos los derechos reservados."; + diff --git a/PacketTunnelProvider/es.lproj/Localizable.strings b/PacketTunnelProvider/es.lproj/Localizable.strings index a71a759fe3..38b8cad08c 100644 --- a/PacketTunnelProvider/es.lproj/Localizable.strings +++ b/PacketTunnelProvider/es.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "No se ha podido conectar la protección de red. Inténtalo de nuevo más tarde."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "La protección de red se ha interrumpido. Intentando volver a conectar ahora..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "La protección de red está activada. Tu ubicación y actividad en línea están protegidas."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Redirigiendo el tráfico de dispositivos a través de %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/et.lproj/InfoPlist.strings b/PacketTunnelProvider/et.lproj/InfoPlist.strings new file mode 100644 index 0000000000..e08ac131bf --- /dev/null +++ b/PacketTunnelProvider/et.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Autoriõigus © 2023 DuckDuckGo. Kõik õigused kaitstud."; + diff --git a/PacketTunnelProvider/et.lproj/Localizable.strings b/PacketTunnelProvider/et.lproj/Localizable.strings index a71a759fe3..d860747f57 100644 --- a/PacketTunnelProvider/et.lproj/Localizable.strings +++ b/PacketTunnelProvider/et.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Network Protectioni ühenduse loomine nurjus. Proovi hiljem uuesti."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Network Protection katkestati. Proovin uuesti ühendust luua ..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Network Protection on sisse lülitatud. Sinu asukoht ja võrgutegevus on kaitstud."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Seadme liiklus suunatakse läbi %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/fi.lproj/InfoPlist.strings b/PacketTunnelProvider/fi.lproj/InfoPlist.strings new file mode 100644 index 0000000000..00e71c25a6 --- /dev/null +++ b/PacketTunnelProvider/fi.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Kaikki oikeudet pidätetään."; + diff --git a/PacketTunnelProvider/fi.lproj/Localizable.strings b/PacketTunnelProvider/fi.lproj/Localizable.strings index a71a759fe3..7229a827ff 100644 --- a/PacketTunnelProvider/fi.lproj/Localizable.strings +++ b/PacketTunnelProvider/fi.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Network Protection ei onnistunut muodostamaan yhteyttä. Yritä myöhemmin uudelleen."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Network Protection keskeytettiin. Yritetään muodostaa yhteys uudelleen..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Network Protection on käytössä. Sijaintisi ja verkkotoimintasi on suojattu."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Laitteen liikenne reititetään %@ kautta."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/fr.lproj/InfoPlist.strings b/PacketTunnelProvider/fr.lproj/InfoPlist.strings new file mode 100644 index 0000000000..a5fb93d3c5 --- /dev/null +++ b/PacketTunnelProvider/fr.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "FournisseurTunnelPaquets"; + +/* Bundle name */ +"CFBundleName" = "FournisseurTunnelPaquets"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Tous droits réservés."; + diff --git a/PacketTunnelProvider/fr.lproj/Localizable.strings b/PacketTunnelProvider/fr.lproj/Localizable.strings index a71a759fe3..379cb2eb53 100644 --- a/PacketTunnelProvider/fr.lproj/Localizable.strings +++ b/PacketTunnelProvider/fr.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Échec de la connexion à Network Protection. Veuillez réessayer plus tard."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Interruption de Network Protection. Tentative de reconnexion en cours…"; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Network Protection est activé. Votre emplacement et votre activité en ligne sont protégés."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Routage du trafic de l'appareil via %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/hr.lproj/InfoPlist.strings b/PacketTunnelProvider/hr.lproj/InfoPlist.strings new file mode 100644 index 0000000000..7c5fb5319f --- /dev/null +++ b/PacketTunnelProvider/hr.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Autorska prava © 2023. DuckDuckGo. Sva prava pridržana."; + diff --git a/PacketTunnelProvider/hr.lproj/Localizable.strings b/PacketTunnelProvider/hr.lproj/Localizable.strings index a71a759fe3..a77b81dfb9 100644 --- a/PacketTunnelProvider/hr.lproj/Localizable.strings +++ b/PacketTunnelProvider/hr.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Mrežna zaštita nije se uspjela povezati. Pokušaj ponovno nešto kasnije."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Mrežna zaštita je prekinuta. Sada se pokušava ponovno povezati..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Uključena je mrežna zaštita. Tvoja lokacija i online aktivnost su zaštićeni."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Usmjeravanje prometa uređaja kroz %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/hu.lproj/InfoPlist.strings b/PacketTunnelProvider/hu.lproj/InfoPlist.strings new file mode 100644 index 0000000000..171950422a --- /dev/null +++ b/PacketTunnelProvider/hu.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Szerzői jog © 2023 DuckDuckGo. Minden jog fenntartva."; + diff --git a/PacketTunnelProvider/hu.lproj/Localizable.strings b/PacketTunnelProvider/hu.lproj/Localizable.strings index a71a759fe3..ed29f50ed8 100644 --- a/PacketTunnelProvider/hu.lproj/Localizable.strings +++ b/PacketTunnelProvider/hu.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "A hálózatvédelmi funkció csatlakozása sikertelen. Próbálkozz újra később."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "A hálózatvédelmi funkció kapcsolata megszakadt. Újracsatlakozási kísérlet folyamatban…"; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "A hálózatvédelem be van kapcsolva. A tartózkodási helyed és online tevékenységed védelme aktív."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Az eszköz forgalmának átirányítási helyszíne: %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/it.lproj/InfoPlist.strings b/PacketTunnelProvider/it.lproj/InfoPlist.strings new file mode 100644 index 0000000000..e0743b97ec --- /dev/null +++ b/PacketTunnelProvider/it.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Tutti i diritti riservati."; + diff --git a/PacketTunnelProvider/it.lproj/Localizable.strings b/PacketTunnelProvider/it.lproj/Localizable.strings index a71a759fe3..a0253dd368 100644 --- a/PacketTunnelProvider/it.lproj/Localizable.strings +++ b/PacketTunnelProvider/it.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Connessione di Network Protection non riuscita. Riprova più tardi."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "La funzione Network Protection è stata interrotta. Tentativo di riconnessione in corso..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Network Protection è attiva. La tua posizione e le tue attività online sono protette."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Instradamento del traffico del dispositivo tramite %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/lt.lproj/InfoPlist.strings b/PacketTunnelProvider/lt.lproj/InfoPlist.strings new file mode 100644 index 0000000000..8cfd5f6ad6 --- /dev/null +++ b/PacketTunnelProvider/lt.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Autorių teisės © „DuckDuckGo“, 2023. Visos teisės saugomos."; + diff --git a/PacketTunnelProvider/lt.lproj/Localizable.strings b/PacketTunnelProvider/lt.lproj/Localizable.strings index a71a759fe3..64a0b1caff 100644 --- a/PacketTunnelProvider/lt.lproj/Localizable.strings +++ b/PacketTunnelProvider/lt.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Nepavyko prisijungti prie tinklo apsaugos. Pabandykite dar kartą vėliau."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Tinklo apsauga buvo nutraukta. Dabar bandome prisijungti..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "„DuckDuckGo“"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Tinklo apsauga įjungta. Jūsų vieta ir veikla internete yra apsaugota."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Nukreipiamas įrenginio srautas per %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/lv.lproj/InfoPlist.strings b/PacketTunnelProvider/lv.lproj/InfoPlist.strings new file mode 100644 index 0000000000..b9f147c4d7 --- /dev/null +++ b/PacketTunnelProvider/lv.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Autortiesības © 2023. g. DuckDuckGo. Visas tiesības aizsargātas."; + diff --git a/PacketTunnelProvider/lv.lproj/Localizable.strings b/PacketTunnelProvider/lv.lproj/Localizable.strings index a71a759fe3..6d6aea9404 100644 --- a/PacketTunnelProvider/lv.lproj/Localizable.strings +++ b/PacketTunnelProvider/lv.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Tīkla aizsardzībai neizdevās izveidot savienojumu. Lūdzu, mēģini vēlreiz vēlāk."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Tīkla aizsardzība tika pārtraukta. Tagad tiek mēģināts atkārtoti izveidot savienojumu..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Tīkla aizsardzība ir ieslēgta. Tava atrašanās vieta un darbības tiešsaistē ir aizsargātas."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Ierīces datplūsma tiek maršrutēta caur: %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/nb.lproj/InfoPlist.strings b/PacketTunnelProvider/nb.lproj/InfoPlist.strings new file mode 100644 index 0000000000..89920e30c9 --- /dev/null +++ b/PacketTunnelProvider/nb.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Med enerett."; + diff --git a/PacketTunnelProvider/nb.lproj/Localizable.strings b/PacketTunnelProvider/nb.lproj/Localizable.strings index a71a759fe3..6622a5a33f 100644 --- a/PacketTunnelProvider/nb.lproj/Localizable.strings +++ b/PacketTunnelProvider/nb.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Nettverksbeskyttelse kunne ikke koble til. Prøv igjen senere."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Nettverksbeskyttelse ble avbrutt. Prøver å koble til igjen nå..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Nettverksbeskyttelse er på. Plasseringen og nettaktiviteten din er beskyttet."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Omdirigerer enhetstrafikk gjennom %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/nl.lproj/InfoPlist.strings b/PacketTunnelProvider/nl.lproj/InfoPlist.strings new file mode 100644 index 0000000000..35059ab586 --- /dev/null +++ b/PacketTunnelProvider/nl.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Alle rechten voorbehouden."; + diff --git a/PacketTunnelProvider/nl.lproj/Localizable.strings b/PacketTunnelProvider/nl.lproj/Localizable.strings index a71a759fe3..e02130059a 100644 --- a/PacketTunnelProvider/nl.lproj/Localizable.strings +++ b/PacketTunnelProvider/nl.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "De netwerkbeveiliging kan geen verbinding maken. Probeer het later opnieuw."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "De netwerkbeveiliging is onderbroken. Er wordt geprobeerd opnieuw verbinding te maken ..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "De netwerkbeveiliging is ingeschakeld. Je locatie en online-activiteiten zijn beschermd."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Apparaatverkeer routeren via %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/pl.lproj/InfoPlist.strings b/PacketTunnelProvider/pl.lproj/InfoPlist.strings new file mode 100644 index 0000000000..e5aa3fd5a4 --- /dev/null +++ b/PacketTunnelProvider/pl.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Wszelkie prawa zastrzeżone."; + diff --git a/PacketTunnelProvider/pl.lproj/Localizable.strings b/PacketTunnelProvider/pl.lproj/Localizable.strings index a71a759fe3..109655cedc 100644 --- a/PacketTunnelProvider/pl.lproj/Localizable.strings +++ b/PacketTunnelProvider/pl.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Niepowodzenie połączenia usługi ochrony sieci.Spróbuj ponownie później."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Usługa ochrony sieci została przerwana. Próba ponownego połączenia..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Usługa ochrony sieci jest włączona. Twoja lokalizacja i aktywność w Internecie są chronione."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Przekierowanie ruchu urządzenia przez %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/pt.lproj/InfoPlist.strings b/PacketTunnelProvider/pt.lproj/InfoPlist.strings new file mode 100644 index 0000000000..d91092d4ff --- /dev/null +++ b/PacketTunnelProvider/pt.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Todos os direitos reservados."; + diff --git a/PacketTunnelProvider/pt.lproj/Localizable.strings b/PacketTunnelProvider/pt.lproj/Localizable.strings index a71a759fe3..0ca58d3bbd 100644 --- a/PacketTunnelProvider/pt.lproj/Localizable.strings +++ b/PacketTunnelProvider/pt.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Falha na ligação da Network Protection. Tenta novamente mais tarde."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "A Network Protection foi interrompida. A tentar ligar novamente..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "A Network Protection está ativada. A tua localização e atividade online estão protegidas."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "A encaminhar o tráfego do dispositivo através de %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/ro.lproj/InfoPlist.strings b/PacketTunnelProvider/ro.lproj/InfoPlist.strings new file mode 100644 index 0000000000..626fb797f9 --- /dev/null +++ b/PacketTunnelProvider/ro.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Toate drepturile rezervate."; + diff --git a/PacketTunnelProvider/ro.lproj/Localizable.strings b/PacketTunnelProvider/ro.lproj/Localizable.strings index a71a759fe3..af14a25999 100644 --- a/PacketTunnelProvider/ro.lproj/Localizable.strings +++ b/PacketTunnelProvider/ro.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Network Protection nu a reușit să se conecteze. Încearcă din nou mai târziu."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Network Protection a fost întreruptă. Se încearcă reconectarea acum..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Network Protection este activată. Locația și activitatea ta online sunt protejate."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Dirijarea traficului dispozitivului prin %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/ru.lproj/InfoPlist.strings b/PacketTunnelProvider/ru.lproj/InfoPlist.strings new file mode 100644 index 0000000000..ea22b697db --- /dev/null +++ b/PacketTunnelProvider/ru.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "© 2023 DuckDuckGo. Все права защищены."; + diff --git a/PacketTunnelProvider/ru.lproj/Localizable.strings b/PacketTunnelProvider/ru.lproj/Localizable.strings index a71a759fe3..f79b5934d8 100644 --- a/PacketTunnelProvider/ru.lproj/Localizable.strings +++ b/PacketTunnelProvider/ru.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Функции защиты сети (Network Protection) не удалось установить соединение. Повторите попытку позже."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Прервана работа функции защиты сети (Network Protection). Выполняется попытка повторного подключения..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Защита сети (Network Protection) включена. Ваши геопозиция и онлайн-активность скрыты от посторонних глаз."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Трафик устройства направляется через: %@"; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/sk.lproj/InfoPlist.strings b/PacketTunnelProvider/sk.lproj/InfoPlist.strings new file mode 100644 index 0000000000..16282e9cff --- /dev/null +++ b/PacketTunnelProvider/sk.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Všetky práva vyhradené."; + diff --git a/PacketTunnelProvider/sk.lproj/Localizable.strings b/PacketTunnelProvider/sk.lproj/Localizable.strings index a71a759fe3..a80c5e11da 100644 --- a/PacketTunnelProvider/sk.lproj/Localizable.strings +++ b/PacketTunnelProvider/sk.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Ochrana siete sa nepripojila. Prosím, skúste to neskôr znova."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Ochrana siete bola prerušená. Prebieha pokus o opätovné pripojenie..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Ochrana siete je zapnutá. Vaša poloha a online aktivita sú chránené."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Smerovanie komunikácie zariadenia cez %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/sl.lproj/InfoPlist.strings b/PacketTunnelProvider/sl.lproj/InfoPlist.strings new file mode 100644 index 0000000000..4e8f6b44f9 --- /dev/null +++ b/PacketTunnelProvider/sl.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Avtorske pravice © 2023 DuckDuckGo. Vse pravice pridržane."; + diff --git a/PacketTunnelProvider/sl.lproj/Localizable.strings b/PacketTunnelProvider/sl.lproj/Localizable.strings index a71a759fe3..595f11f8e1 100644 --- a/PacketTunnelProvider/sl.lproj/Localizable.strings +++ b/PacketTunnelProvider/sl.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Zaščita omrežja se ni uspela povezati. Poskusite znova pozneje."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Zaščita omrežja je bila prekinjena. Poskušam se znova povezati zdaj ..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Zaščita omrežja je vklopljena. Vaša lokacija in spletna dejavnost sta zaščiteni."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Usmerjanje prometa naprave prek kraja %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/sv.lproj/InfoPlist.strings b/PacketTunnelProvider/sv.lproj/InfoPlist.strings new file mode 100644 index 0000000000..8c3ce8a81b --- /dev/null +++ b/PacketTunnelProvider/sv.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Copyright © 2023 DuckDuckGo. Alla rättigheter förbehållna."; + diff --git a/PacketTunnelProvider/sv.lproj/Localizable.strings b/PacketTunnelProvider/sv.lproj/Localizable.strings index a71a759fe3..9d9aec7f48 100644 --- a/PacketTunnelProvider/sv.lproj/Localizable.strings +++ b/PacketTunnelProvider/sv.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Nätverksskyddet kunde inte ansluta. Försök igen senare."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Nätverksskyddet avbröts. Försöker återuppta kontakten nu..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Nätverksskydd är På. Din plats och onlineaktivitet är skyddad."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Dirigera enhetstrafik genom %@."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/ diff --git a/PacketTunnelProvider/tr.lproj/InfoPlist.strings b/PacketTunnelProvider/tr.lproj/InfoPlist.strings new file mode 100644 index 0000000000..429bb2ee19 --- /dev/null +++ b/PacketTunnelProvider/tr.lproj/InfoPlist.strings @@ -0,0 +1,9 @@ +/* Bundle display name */ +"CFBundleDisplayName" = "PacketTunnelProvider"; + +/* Bundle name */ +"CFBundleName" = "PacketTunnelProvider"; + +/* Copyright (human-readable) */ +"NSHumanReadableCopyright" = "Telif Hakkı © 2023 DuckDuckGo. Tüm hakları saklıdır."; + diff --git a/PacketTunnelProvider/tr.lproj/Localizable.strings b/PacketTunnelProvider/tr.lproj/Localizable.strings index a71a759fe3..2bbd374209 100644 --- a/PacketTunnelProvider/tr.lproj/Localizable.strings +++ b/PacketTunnelProvider/tr.lproj/Localizable.strings @@ -1,7 +1,15 @@ -/* - Localizable.strings - DuckDuckGo +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Ağ Koruması bağlanamadı. Lütfen daha sonra tekrar deneyin."; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Ağ Koruması kesintiye uğradı. Şimdi yeniden bağlanmaya çalışılıyor..."; + +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + +/* The body of the notification shown when Network Protection reconnects successfully */ +"network.protection.success.notification.body" = "Ağ Koruması Açık. Konumunuz ve çevrim içi etkinliğiniz korunuyor."; + +/* The body of the notification shown when Network Protection connects successfully with the city + state/country as formatted parameter */ +"network.protection.success.notification.subtitle.including.serverLocation" = "Cihaz trafiği %@ üzerinden yönlendiriliyor."; - Created by Graeme Arthur on 29/09/2023. - Copyright © 2023 DuckDuckGo. All rights reserved. -*/